css_stylesheet.cpp
00001
00023 #include "dom/dom_exception.h"
00024 #include "dom/css_rule.h"
00025 #include "dom/dom_doc.h"
00026
00027 #include "xml/dom_docimpl.h"
00028
00029 #include "html/html_headimpl.h"
00030
00031 #include "css/css_stylesheetimpl.h"
00032 #include "misc/htmlhashes.h"
00033
00034 #include <stdio.h>
00035
00036 using namespace DOM;
00037
00038 StyleSheet::StyleSheet()
00039 {
00040 impl = 0;
00041 }
00042
00043 StyleSheet::StyleSheet(const StyleSheet &other)
00044 {
00045 impl = other.impl;
00046 if(impl) impl->ref();
00047 }
00048
00049 StyleSheet::StyleSheet(StyleSheetImpl *i)
00050 {
00051 impl = i;
00052 if(impl) impl->ref();
00053 }
00054
00055 StyleSheet &StyleSheet::operator = (const StyleSheet &other)
00056 {
00057 if ( impl != other.impl ) {
00058 if(impl) impl->deref();
00059 impl = other.impl;
00060 if(impl) impl->ref();
00061 }
00062 return *this;
00063 }
00064
00065 StyleSheet::~StyleSheet()
00066 {
00067 if(impl) impl->deref();
00068 }
00069
00070 DOMString StyleSheet::type() const
00071 {
00072 if(!impl) return DOMString();
00073 return ((StyleSheetImpl *)impl)->type();
00074 }
00075
00076 bool StyleSheet::disabled() const
00077 {
00078 if(!impl) return 0;
00079 return ((StyleSheetImpl *)impl)->disabled();
00080 }
00081
00082 void StyleSheet::setDisabled( bool _disabled )
00083 {
00084 if(impl)
00085 ((StyleSheetImpl *)impl)->setDisabled( _disabled );
00086 }
00087
00088 DOM::Node StyleSheet::ownerNode() const
00089 {
00090 if(!impl) return Node();
00091 return ((StyleSheetImpl *)impl)->ownerNode();
00092 }
00093
00094 StyleSheet StyleSheet::parentStyleSheet() const
00095 {
00096 if(!impl) return 0;
00097 return ((StyleSheetImpl *)impl)->parentStyleSheet();
00098 }
00099
00100 DOMString StyleSheet::href() const
00101 {
00102 if(!impl) return DOMString();
00103 return ((StyleSheetImpl *)impl)->href();
00104 }
00105
00106 DOMString StyleSheet::title() const
00107 {
00108 if(!impl) return DOMString();
00109 return ((StyleSheetImpl *)impl)->title();
00110 }
00111
00112 MediaList StyleSheet::media() const
00113 {
00114 if(!impl) return 0;
00115 return ((StyleSheetImpl *)impl)->media();
00116 }
00117
00118 bool StyleSheet::isCSSStyleSheet() const
00119 {
00120 if(!impl) return false;
00121 return ((StyleSheetImpl *)impl)->isCSSStyleSheet();
00122 }
00123
00124 bool StyleSheet::isNull() const
00125 {
00126 return (impl == 0);
00127 }
00128
00129
00130
00131 CSSStyleSheet::CSSStyleSheet() : StyleSheet()
00132 {
00133 }
00134
00135 CSSStyleSheet::CSSStyleSheet(const CSSStyleSheet &other) : StyleSheet(other)
00136 {
00137 }
00138
00139 CSSStyleSheet::CSSStyleSheet(const StyleSheet &other)
00140 {
00141 if (!other.isCSSStyleSheet())
00142 impl = 0;
00143 else
00144 operator=(other);
00145 }
00146
00147 CSSStyleSheet::CSSStyleSheet(CSSStyleSheetImpl *impl) : StyleSheet(impl)
00148 {
00149 }
00150
00151 CSSStyleSheet &CSSStyleSheet::operator = (const CSSStyleSheet &other)
00152 {
00153 StyleSheet::operator = (other);
00154 return *this;
00155 }
00156
00157 CSSStyleSheet &CSSStyleSheet::operator = (const StyleSheet &other)
00158 {
00159 if(!other.handle()->isCSSStyleSheet())
00160 {
00161 if(impl) impl->deref();
00162 impl = 0;
00163 } else {
00164 StyleSheet::operator = (other);
00165 }
00166 return *this;
00167 }
00168
00169 CSSStyleSheet::~CSSStyleSheet()
00170 {
00171 }
00172
00173 CSSRule CSSStyleSheet::ownerRule() const
00174 {
00175 if(!impl) return 0;
00176 return ((CSSStyleSheetImpl *)impl)->ownerRule();
00177 }
00178
00179 CSSRuleList CSSStyleSheet::cssRules() const
00180 {
00181 if(!impl) return (CSSRuleListImpl*)0;
00182 return ((CSSStyleSheetImpl *)impl)->cssRules();
00183 }
00184
00185 unsigned long CSSStyleSheet::insertRule( const DOMString &rule, unsigned long index )
00186 {
00187 int exceptioncode = 0;
00188 if(!impl) return 0;
00189 unsigned long retval = ((CSSStyleSheetImpl *)impl)->insertRule( rule, index, exceptioncode );
00190 if ( exceptioncode >= CSSException::_EXCEPTION_OFFSET )
00191 throw CSSException( exceptioncode - CSSException::_EXCEPTION_OFFSET );
00192 if ( exceptioncode )
00193 throw DOMException( exceptioncode );
00194 return retval;
00195 }
00196
00197 void CSSStyleSheet::deleteRule( unsigned long index )
00198 {
00199 int exceptioncode = 0;
00200 if(impl)
00201 ((CSSStyleSheetImpl *)impl)->deleteRule( index, exceptioncode );
00202 if ( exceptioncode >= CSSException::_EXCEPTION_OFFSET )
00203 throw CSSException( exceptioncode - CSSException::_EXCEPTION_OFFSET );
00204 if ( exceptioncode )
00205 throw DOMException( exceptioncode );
00206 }
00207
00208
00209
00210 StyleSheetList::StyleSheetList()
00211 {
00212 impl = 0;
00213 }
00214
00215 StyleSheetList::StyleSheetList(const StyleSheetList &other)
00216 {
00217 impl = other.impl;
00218 if(impl) impl->ref();
00219 }
00220
00221 StyleSheetList::StyleSheetList(StyleSheetListImpl *i)
00222 {
00223 impl = i;
00224 if(impl) impl->ref();
00225 }
00226
00227 StyleSheetList &StyleSheetList::operator = (const StyleSheetList &other)
00228 {
00229 if ( impl != other.impl ) {
00230 if(impl) impl->deref();
00231 impl = other.impl;
00232 if(impl) impl->ref();
00233 }
00234 return *this;
00235 }
00236
00237 StyleSheetList::~StyleSheetList()
00238 {
00239 if(impl) impl->deref();
00240 }
00241
00242 unsigned long StyleSheetList::length() const
00243 {
00244 if(!impl) return 0;
00245 return ((StyleSheetListImpl *)impl)->length();
00246 }
00247
00248 StyleSheet StyleSheetList::item( unsigned long index )
00249 {
00250 if(!impl) return StyleSheet();
00251 return ((StyleSheetListImpl *)impl)->item( index );
00252 }
00253
00254 StyleSheetListImpl *StyleSheetList::handle() const
00255 {
00256 return impl;
00257 }
00258
00259 bool StyleSheetList::isNull() const
00260 {
00261 return (impl == 0);
00262 }
00263
00264
00265
00266 MediaList::MediaList()
00267 {
00268 impl = 0;
00269 }
00270
00271 MediaList::MediaList(const MediaList &other)
00272 {
00273 impl = other.impl;
00274 if(impl) impl->ref();
00275 }
00276
00277 MediaList::MediaList(MediaListImpl *i)
00278 {
00279 impl = i;
00280 if(impl) impl->ref();
00281 }
00282
00283 MediaList &MediaList::operator = (const MediaList &other)
00284 {
00285 if ( impl != other.impl ) {
00286 if(impl) impl->deref();
00287 impl = other.impl;
00288 if(impl) impl->ref();
00289 }
00290 return *this;
00291 }
00292
00293 MediaList::~MediaList()
00294 {
00295 if(impl) impl->deref();
00296 }
00297
00298 DOM::DOMString MediaList::mediaText() const
00299 {
00300 if(!impl) return DOMString();
00301 return static_cast<MediaListImpl *>(impl)->mediaText();
00302 }
00303
00304 void MediaList::setMediaText(const DOM::DOMString &value )
00305 {
00306 if(impl)
00307 static_cast<MediaListImpl *>(impl)->setMediaText( value );
00308 }
00309
00310 unsigned long MediaList::length() const
00311 {
00312 if(!impl) return 0;
00313 return ((MediaListImpl *)impl)->length();
00314 }
00315
00316 DOM::DOMString MediaList::item(unsigned long index) const
00317 {
00318 if(!impl) return DOMString();
00319 return ((MediaListImpl *)impl)->item( index );
00320 }
00321
00322 void MediaList::deleteMedium(const DOM::DOMString &oldMedium)
00323 {
00324 if(impl)
00325 ((MediaListImpl *)impl)->deleteMedium( oldMedium );
00326 }
00327
00328 void MediaList::appendMedium(const DOM::DOMString &newMedium)
00329 {
00330 if(impl)
00331 ((MediaListImpl *)impl)->appendMedium( newMedium );
00332 }
00333
00334 MediaListImpl *MediaList::handle() const
00335 {
00336 return impl;
00337 }
00338
00339 bool MediaList::isNull() const
00340 {
00341 return (impl == 0);
00342 }
00343
00344
00345
00346 LinkStyle::LinkStyle()
00347 {
00348 node = 0;
00349 }
00350
00351 LinkStyle::LinkStyle(const LinkStyle &other)
00352 {
00353 node = other.node;
00354 if(node) node->ref();
00355 }
00356
00357 LinkStyle & LinkStyle::operator = (const LinkStyle &other)
00358 {
00359 if ( node != other.node ) {
00360 if(node) node->deref();
00361 node = other.node;
00362 if(node) node->ref();
00363 }
00364 return *this;
00365 }
00366
00367 LinkStyle & LinkStyle::operator = (const Node &other)
00368 {
00369 if(node) node->deref();
00370 node = 0;
00371
00372 NodeImpl *n = other.handle();
00373
00374
00375 if( n && n->isElementNode() &&
00376 (n->id() == ID_STYLE || n->id() == ID_LINK) ) {
00377 node = n;
00378 if(node) node->ref();
00379 }
00380 return *this;
00381 }
00382
00383 LinkStyle::~LinkStyle()
00384 {
00385 if(node) node->deref();
00386 }
00387
00388 StyleSheet LinkStyle::sheet()
00389 {
00390 int id = node ? node->id() : 0;
00391
00392 return
00393 ( id == ID_STYLE) ?
00394 static_cast<HTMLStyleElementImpl *>(node)->sheet()
00395 : ( (id == ID_LINK) ?
00396 static_cast<HTMLLinkElementImpl *>(node)->sheet()
00397 : StyleSheet() );
00398 }
00399
00400 bool LinkStyle::isNull() const
00401 {
00402 return (node == 0);
00403 }
00404
00405
00406
00407
00408 DocumentStyle::DocumentStyle()
00409 {
00410 doc = 0;
00411 }
00412
00413 DocumentStyle::DocumentStyle(const DocumentStyle &other)
00414 {
00415 doc = other.doc;
00416 if(doc) doc->ref();
00417 }
00418
00419 DocumentStyle & DocumentStyle::operator = (const DocumentStyle &other)
00420 {
00421 if ( doc != other.doc ) {
00422 if(doc) doc->deref();
00423 doc = other.doc;
00424 if(doc) doc->ref();
00425 }
00426 return *this;
00427 }
00428
00429 DocumentStyle & DocumentStyle::operator = (const Document &other)
00430 {
00431 DocumentImpl *odoc = static_cast<DocumentImpl *>(other.handle());
00432 if ( doc != odoc ) {
00433 if(doc) doc->deref();
00434 doc = odoc;
00435 if(doc) doc->ref();
00436 }
00437 return *this;
00438 }
00439
00440 DocumentStyle::~DocumentStyle()
00441 {
00442 if(doc) doc->deref();
00443 }
00444
00445 StyleSheetList DocumentStyle::styleSheets()
00446 {
00447 return doc->styleSheets();
00448 }
00449
00450 bool DocumentStyle::isNull() const
00451 {
00452 return (doc == 0);
00453 }
00454
This file is part of the documentation for kdelibs Version 3.1.4.