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