Initial revision
[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  * $Id$
29  */
30 #ifndef HTML_MISC_H
31 #define HTML_MISC_H
32
33 #include <dom/html_element.h>
34
35 namespace DOM {
36
37 class HTMLBaseFontElementImpl;
38 class DOMString;
39 class HTMLCollectionImpl;
40
41 /**
42  * Base font. See the <a
43  * href="http://www.w3.org/TR/REC-html40/present/graphics.html#edef-BASEFONT">
44  * BASEFONT element definition </a> in HTML 4.0. This element is
45  * deprecated in HTML 4.0.
46  *
47  */
48 class HTMLBaseFontElement : public HTMLElement
49 {
50 public:
51     HTMLBaseFontElement();
52     HTMLBaseFontElement(const HTMLBaseFontElement &other);
53     HTMLBaseFontElement(const Node &other) : HTMLElement()
54          {(*this)=other;}
55 protected:
56     HTMLBaseFontElement(HTMLBaseFontElementImpl *impl);
57 public:
58
59     HTMLBaseFontElement & operator = (const HTMLBaseFontElement &other);
60     HTMLBaseFontElement & operator = (const Node &other);
61
62     ~HTMLBaseFontElement();
63
64     /**
65      * Font color. See the <a href="http://www.w3.org/TR/REC-html40/">
66      * color attribute definition </a> in HTML 4.0. This attribute is
67      * deprecated in HTML 4.0.
68      *
69      */
70     DOMString color() const;
71
72     /**
73      * see @ref color
74      */
75     void setColor( const DOMString & );
76
77     /**
78      * Font face identifier. See the <a
79      * href="http://www.w3.org/TR/REC-html40/"> face attribute
80      * definition </a> in HTML 4.0. This attribute is deprecated in
81      * HTML 4.0.
82      *
83      */
84     DOMString face() const;
85
86     /**
87      * see @ref face
88      */
89     void setFace( const DOMString & );
90
91     /**
92      * Font size. See the <a
93      * href="http://www.w3.org/TR/REC-html40/present/graphics.html#adef-size-BASEFONT">
94      * size attribute definition </a> in HTML 4.0. This attribute is
95      * deprecated in HTML 4.0.
96      *
97      */
98     DOMString size() const;
99
100     /**
101      * see @ref size
102      */
103     void setSize( const DOMString & );
104 };
105
106 // --------------------------------------------------------------------------
107
108 /**
109  * An <code> HTMLCollection </code> is a list of nodes. An individual
110  * node may be accessed by either ordinal index or the node's <code>
111  * name </code> or <code> id </code> attributes. Note: Collections in
112  * the HTML DOM are assumed to be live meaning that they are
113  * automatically updated when the underlying document is changed.
114  *
115  */
116 class HTMLCollection
117 {
118     friend class HTMLDocument;
119     friend class HTMLSelectElement;
120     friend class HTMLImageElement;
121     friend class HTMLMapElement;
122     friend class HTMLTableElement;
123     friend class HTMLTableRowElement;
124     friend class HTMLTableSectionElement;
125
126 public:
127     HTMLCollection();
128     HTMLCollection(const HTMLCollection &other);
129 protected:
130     HTMLCollection(NodeImpl *base, int type);
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
183 protected:
184     HTMLCollectionImpl *impl;
185 };
186
187 class HTMLFormCollection : public HTMLCollection
188 {
189     friend class HTMLFormElement;
190 protected:
191     HTMLFormCollection(NodeImpl *base);
192 };
193
194 }; //namespace
195
196 #endif