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