Merged changes from LABYRINTH_KDE_3_MERGE branch.
[WebKit-https.git] / WebCore / khtml / dom / html_misc.cpp
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  * $Id$
22  */
23 // --------------------------------------------------------------------------
24
25 #include "dom/html_misc.h"
26 #include "html/html_miscimpl.h"
27 #include "misc/htmlhashes.h"
28
29 using namespace DOM;
30
31 HTMLBaseFontElement::HTMLBaseFontElement() : HTMLElement()
32 {
33 }
34
35 HTMLBaseFontElement::HTMLBaseFontElement(const HTMLBaseFontElement &other) : HTMLElement(other)
36 {
37 }
38
39 HTMLBaseFontElement::HTMLBaseFontElement(HTMLBaseFontElementImpl *impl) : HTMLElement(impl)
40 {
41 }
42
43 HTMLBaseFontElement &HTMLBaseFontElement::operator = (const Node &other)
44 {
45     if(other.elementId() != ID_BASEFONT)
46     {
47         impl = 0;
48         return *this;
49     }
50     Node::operator = (other);
51     return *this;
52 }
53
54 HTMLBaseFontElement &HTMLBaseFontElement::operator = (const HTMLBaseFontElement &other)
55 {
56     HTMLElement::operator = (other);
57     return *this;
58 }
59
60 HTMLBaseFontElement::~HTMLBaseFontElement()
61 {
62 }
63
64 DOMString HTMLBaseFontElement::color() const
65 {
66     if(!impl) return DOMString();
67     return ((ElementImpl *)impl)->getAttribute(ATTR_COLOR);
68 }
69
70 void HTMLBaseFontElement::setColor( const DOMString &value )
71 {
72     if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_COLOR, value);
73 }
74
75 DOMString HTMLBaseFontElement::face() const
76 {
77     if(!impl) return DOMString();
78     return ((ElementImpl *)impl)->getAttribute(ATTR_FACE);
79 }
80
81 void HTMLBaseFontElement::setFace( const DOMString &value )
82 {
83     if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_FACE, value);
84 }
85
86 DOMString HTMLBaseFontElement::size() const
87 {
88     if(!impl) return DOMString();
89     return ((ElementImpl *)impl)->getAttribute(ATTR_SIZE);
90 }
91
92 void HTMLBaseFontElement::setSize( const DOMString &value )
93 {
94     if(impl) ((ElementImpl *)impl)->setAttribute(ATTR_SIZE, value);
95 }
96
97 // --------------------------------------------------------------------------
98
99 HTMLCollection::HTMLCollection()
100   : impl(0)
101 {
102 }
103
104 HTMLCollection::HTMLCollection(const HTMLCollection &other)
105 {
106     impl = other.impl;
107     if(impl) impl->ref();
108 }
109
110 HTMLCollection::HTMLCollection(NodeImpl *base, int type)
111 {
112     impl = new HTMLCollectionImpl(base, type);
113     impl->ref();
114 }
115
116 HTMLCollection &HTMLCollection::operator = (const HTMLCollection &other)
117 {
118     if(impl == other.impl) return *this;
119     if(impl) impl->deref();
120     impl = other.impl;
121     if(impl) impl->ref();
122     return *this;
123 }
124
125 HTMLCollection::~HTMLCollection()
126 {
127     if(impl) impl->deref();
128 }
129
130 unsigned long HTMLCollection::length() const
131 {
132     if(!impl) return 0;
133     return ((HTMLCollectionImpl *)impl)->length();
134 }
135
136 Node HTMLCollection::item( unsigned long index ) const
137 {
138     if(!impl) return 0;
139     return ((HTMLCollectionImpl *)impl)->item( index );
140 }
141
142 Node HTMLCollection::namedItem( const DOMString &name ) const
143 {
144     if(!impl) return 0;
145     return ((HTMLCollectionImpl *)impl)->namedItem( name );
146 }
147
148 Node HTMLCollection::base() const
149 {
150     if ( !impl )
151         return 0;
152
153     return static_cast<HTMLCollectionImpl*>( impl )->base;
154 }
155
156 Node HTMLCollection::firstItem() const
157 {
158     if ( !impl )
159         return 0;
160     return static_cast<HTMLCollectionImpl*>( impl )->firstItem();
161 }
162
163 Node HTMLCollection::nextItem() const
164 {
165     if ( !impl )
166         return 0;
167     return static_cast<HTMLCollectionImpl*>( impl )->nextItem();
168 }
169
170 Node HTMLCollection::nextNamedItem( const DOMString &name ) const
171 {
172     if ( !impl )
173         return 0;
174     return static_cast<HTMLCollectionImpl*>( impl )->nextNamedItem( name );
175 }
176
177 HTMLCollectionImpl *HTMLCollection::handle() const
178 {
179     return impl;
180 }
181
182 bool HTMLCollection::isNull() const
183 {
184     return (impl == 0);
185 }
186
187
188 // -----------------------------------------------------------------------------
189
190 HTMLFormCollection::HTMLFormCollection(NodeImpl *base)
191     : HTMLCollection()
192 {
193     impl = new HTMLFormCollectionImpl(base);
194     impl->ref();
195 }
196