stylesheets.h revision 6b15695578f07a3f72c4c9475c1a261a3021472a
#ifndef __STYLESHEETS_H__
#define __STYLESHEETS_H__
/**
* Phoebe DOM Implementation.
*
* This is a C++ approximation of the W3C DOM model, which follows
* fairly closely the specifications in the various .idl files, copies of
* which are provided for reference. Most important is this one:
*
* http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html
*
* Authors:
* Bob Jamison
*
* Copyright (C) 2005 Bob Jamison
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "dom.h"
#include <vector>
namespace org
{
namespace w3c
{
namespace dom
{
namespace stylesheets
{
//Make local definitions
typedef dom::DOMString DOMString;
typedef dom::Node Node;
/*#########################################################################
## MediaList
#########################################################################*/
/**
*
*/
class MediaList
{
public:
/**
*
*/
virtual DOMString getMediaText()
{
return mediaText;
}
/**
*
*/
virtual void setMediaText(const DOMString &val) throw (dom::DOMException)
{
mediaText = val;
}
/**
*
*/
virtual unsigned long getLength()
{
return items.size();
}
/**
*
*/
virtual DOMString item(unsigned long index)
{
if (index >= items.size())
return "";
return items[index];
}
/**
*
*/
virtual void deleteMedium(const DOMString& oldMedium)
throw (dom::DOMException)
{
std::vector<DOMString>::iterator iter;
for (iter=items.begin() ; iter!=items.end() ; iter++)
{
if (*iter == oldMedium)
items.erase(iter);
}
}
/**
*
*/
virtual void appendMedium(const DOMString& newMedium)
throw (dom::DOMException)
{
items.push_back(newMedium);
}
//##################
//# Non-API methods
//##################
/**
*
*/
MediaList() {}
/**
*
*/
MediaList(const MediaList &other)
{
mediaText = other.mediaText;
items = other.items;
}
/**
*
*/
virtual ~MediaList() {}
protected:
DOMString mediaText;
std::vector<DOMString>items;
};
/*#########################################################################
## StyleSheet
#########################################################################*/
/**
*
*/
class StyleSheet
{
public:
/**
*
*/
virtual DOMString getType()
{
return type;
}
/**
*
*/
virtual bool getDisabled()
{
return disabled;
}
/**
*
*/
virtual void setDisabled(bool val)
{
disabled = val;
}
/**
*
*/
virtual Node *getOwnerNode()
{
return ownerNode;
}
/**
*
*/
virtual StyleSheet *getParentStyleSheet()
{
return parentStylesheet;
}
/**
*
*/
virtual DOMString getHref()
{
return href;
}
/**
*
*/
virtual DOMString getTitle()
{
return title;
}
/**
*
*/
virtual MediaList &getMedia()
{
MediaList &mediaListRef = mediaList;
return mediaListRef;
}
//##################
//# Non-API methods
//##################
/**
*
*/
StyleSheet()
{
type = "";
disabled = false;
ownerNode = NULL;
parentStylesheet = NULL;
href = "";
title = "";
}
/**
*
*/
StyleSheet(const StyleSheet &other)
{
type = other.type;
disabled = other.disabled;
ownerNode = other.ownerNode;
parentStylesheet = other.parentStylesheet;
href = other.href;
title = other.title;
mediaList = other.mediaList;
}
/**
*
*/
virtual ~StyleSheet() {}
protected:
DOMString type;
bool disabled;
Node *ownerNode;
StyleSheet *parentStylesheet;
DOMString href;
DOMString title;
MediaList mediaList;
};
/*#########################################################################
## StyleSheetList
#########################################################################*/
/**
*
*/
class StyleSheetList
{
public:
/**
*
*/
virtual unsigned long getLength()
{
return sheets.size();
}
/**
*
*/
virtual StyleSheet *item(unsigned long index)
{
if (index >= sheets.size())
return NULL;
return sheets[index];
}
//##################
//# Non-API methods
//##################
/**
*
*/
StyleSheetList() {}
/**
*
*/
StyleSheetList(const StyleSheetList &other)
{
sheets = other.sheets;
}
/**
*
*/
virtual ~StyleSheetList() {}
protected:
std::vector<StyleSheet *>sheets;
};
/*#########################################################################
## LinkStyle
#########################################################################*/
/**
*
*/
class LinkStyle
{
public:
/**
*
*/
virtual StyleSheet &getSheet()
{
StyleSheet &sheetRef = sheet;
return sheetRef;
}
//##################
//# Non-API methods
//##################
/**
*
*/
LinkStyle()
{
}
/**
*
*/
LinkStyle(const LinkStyle &other)
{
sheet = other.sheet;
}
/**
*
*/
virtual ~LinkStyle() {}
protected:
StyleSheet sheet;
};
/*#########################################################################
## DocumentStyle
#########################################################################*/
/**
*
*/
class DocumentStyle
{
public:
/**
*
*/
virtual StyleSheetList &getStyleSheets()
{
StyleSheetList &listRef = styleSheets;
return listRef;
}
//##################
//# Non-API methods
//##################
/**
*
*/
DocumentStyle() {}
/**
*
*/
DocumentStyle(const DocumentStyle &other)
{
styleSheets = other.styleSheets;
}
/**
*
*/
virtual ~DocumentStyle() {}
protected:
StyleSheetList styleSheets;
};
} //namespace stylesheets
} //namespace dom
} //namespace w3c
} //namespace org
#endif // __STYLESHEETS_H__
/*#########################################################################
## E N D O F F I L E
#########################################################################*/