WebCore:
[WebKit-https.git] / WebCore / khtml / dom / html_misc.h
1 /*
2  * This file is part of the DOM implementation for KDE.
3  *
4  * (C) 1999 Lars Knoll (knoll@kde.org)
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Library General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Library General Public License for more details.
15  *
16  * You should have received a copy of the GNU Library General Public License
17  * along with this library; see the file COPYING.LIB.  If not, write to
18  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19  * Boston, MA 02111-1307, USA.
20  *
21  * This file includes excerpts from the Document Object Model (DOM)
22  * Level 1 Specification (Recommendation)
23  * http://www.w3.org/TR/REC-DOM-Level-1/
24  * Copyright © World Wide Web Consortium , (Massachusetts Institute of
25  * Technology , Institut National de Recherche en Informatique et en
26  * Automatique , Keio University ). All Rights Reserved.
27  *
28  */
29 #ifndef HTML_MISC_H
30 #define HTML_MISC_H
31
32 #include <dom/html_element.h>
33
34 namespace DOM {
35
36 class HTMLBaseFontElementImpl;
37 class DOMString;
38 class HTMLCollectionImpl;
39
40 /**
41  * Base font. See the <a
42  * href="http://www.w3.org/TR/REC-html40/present/graphics.html#edef-BASEFONT">
43  * BASEFONT element definition </a> in HTML 4.0. This element is
44  * deprecated in HTML 4.0.
45  *
46  */
47 class HTMLBaseFontElement : public HTMLElement
48 {
49 public:
50     HTMLBaseFontElement();
51     HTMLBaseFontElement(const HTMLBaseFontElement &other);
52     HTMLBaseFontElement(const Node &other) : HTMLElement()
53          {(*this)=other;}
54 protected:
55     HTMLBaseFontElement(HTMLBaseFontElementImpl *impl);
56 public:
57
58     HTMLBaseFontElement & operator = (const HTMLBaseFontElement &other);
59     HTMLBaseFontElement & operator = (const Node &other);
60
61     ~HTMLBaseFontElement();
62
63     /**
64      * Font color. See the <a href="http://www.w3.org/TR/REC-html40/">
65      * color attribute definition </a> in HTML 4.0. This attribute is
66      * deprecated in HTML 4.0.
67      *
68      */
69     DOMString color() const;
70
71     /**
72      * see @ref color
73      */
74     void setColor( const DOMString & );
75
76     /**
77      * Font face identifier. See the <a
78      * href="http://www.w3.org/TR/REC-html40/"> face attribute
79      * definition </a> in HTML 4.0. This attribute is deprecated in
80      * HTML 4.0.
81      *
82      */
83     DOMString face() const;
84
85     /**
86      * see @ref face
87      */
88     void setFace( const DOMString & );
89
90     /**
91      * Font size. See the <a
92      * href="http://www.w3.org/TR/REC-html40/present/graphics.html#adef-size-BASEFONT">
93      * size attribute definition </a> in HTML 4.0. This attribute is
94      * deprecated in HTML 4.0.
95      *
96      */
97     DOMString size() const;
98
99     /**
100      * see @ref size
101      */
102     void setSize( const DOMString & );
103 };
104
105 // --------------------------------------------------------------------------
106
107 /**
108  * An <code> HTMLCollection </code> is a list of nodes. An individual
109  * node may be accessed by either ordinal index or the node's <code>
110  * name </code> or <code> id </code> attributes. Note: Collections in
111  * the HTML DOM are assumed to be live meaning that they are
112  * automatically updated when the underlying document is changed.
113  *
114  */
115 class HTMLCollection
116 {
117     friend class HTMLDocument;
118     friend class HTMLSelectElement;
119     friend class HTMLImageElement;
120     friend class HTMLMapElement;
121     friend class HTMLTableElement;
122     friend class HTMLTableRowElement;
123     friend class HTMLTableSectionElement;
124     friend class HTMLElement;
125
126 public:
127     HTMLCollection();
128     HTMLCollection(const HTMLCollection &other);
129     HTMLCollection(NodeImpl *base, int type);
130
131 public:
132
133     HTMLCollection & operator = (const HTMLCollection &other);
134
135     ~HTMLCollection();
136
137     /**
138      * This attribute specifies the length or size of the list.
139      *
140      */
141     unsigned long length() const;
142
143     /**
144      * This method retrieves a node specified by ordinal index. Nodes
145      * are numbered in tree order (depth-first traversal order).
146      *
147      * @param index The index of the node to be fetched. The index
148      * origin is 0.
149      *
150      * @return The <code> Node </code> at the corresponding position
151      * upon success. A value of <code> null </code> is returned if the
152      * index is out of range.
153      *
154      */
155     Node item ( unsigned long index ) const;
156
157     /**
158      * This method retrieves a <code> Node </code> using a name. It
159      * first searches for a <code> Node </code> with a matching <code>
160      * id </code> attribute. If it doesn't find one, it then searches
161      * for a <code> Node </code> with a matching <code> name </code>
162      * attribute, but only on those elements that are allowed a name
163      * attribute.
164      *
165      * @param name The name of the <code> Node </code> to be fetched.
166      *
167      * @return The <code> Node </code> with a <code> name </code> or
168      * <code> id </code> attribute whose value corresponds to the
169      * specified string. Upon failure (e.g., no node with this name
170      * exists), returns <code> null </code> .
171      *
172      */
173     Node namedItem ( const DOMString &name ) const;
174
175     /**
176      * @internal
177      * not part of the DOM
178      */
179     Node base() const;
180     HTMLCollectionImpl *handle() const;
181     bool isNull() const;
182     // Fast iteration
183     Node firstItem() const;
184     Node nextItem() const;
185     // In case of multiple items named the same way
186     Node nextNamedItem( const DOMString &name ) const;
187
188 protected:
189     HTMLCollectionImpl *impl;
190 };
191
192 class HTMLFormCollection : public HTMLCollection
193 {
194     friend class HTMLFormElement;
195 protected:
196     HTMLFormCollection(NodeImpl *base);
197 };
198
199 }; //namespace
200
201 #endif