summaryrefslogtreecommitdiffstats
path: root/khtml/css/cssstyleselector.h
diff options
context:
space:
mode:
Diffstat (limited to 'khtml/css/cssstyleselector.h')
-rw-r--r--khtml/css/cssstyleselector.h333
1 files changed, 0 insertions, 333 deletions
diff --git a/khtml/css/cssstyleselector.h b/khtml/css/cssstyleselector.h
deleted file mode 100644
index 1b076337e..000000000
--- a/khtml/css/cssstyleselector.h
+++ /dev/null
@@ -1,333 +0,0 @@
-/*
- * This file is part of the CSS implementation for KDE.
- *
- * Copyright (C) 1999-2003 Lars Knoll (knoll@kde.org)
- * Copyright (C) 2003, 2005, 2006 Apple Computer, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-#ifndef _CSS_cssstyleselector_h_
-#define _CSS_cssstyleselector_h_
-
-#include <tqptrlist.h>
-#include <tqvaluevector.h>
-
-#include "rendering/render_style.h"
-#include "dom/dom_string.h"
-#include "xml/dom_restyler.h"
-
-class KHTMLSettings;
-class KHTMLView;
-class KHTMLPart;
-class KHTMLFactory;
-class KURL;
-
-namespace DOM {
- class DocumentImpl;
- class NodeImpl;
- class ElementImpl;
- class StyleSheetImpl;
- class CSSStyleRuleImpl;
- class CSSStyleSheetImpl;
- class CSSSelector;
- class CSSStyleDeclarationImpl;
- class CSSProperty;
- class StyleSheetListImpl;
- class CSSValueImpl;
-}
-
-namespace khtml
-{
- class CSSStyleSelectorList;
- class CSSOrderedRule;
- class CSSOrderedProperty;
- class CSSOrderedPropertyList;
- class RenderStyle;
-
- /*
- * to remember the source where a rule came from. Differentiates between
- * important and not important rules. This is ordered in the order they have to be applied
- * to the RenderStyle.
- */
- enum Source {
- Default = 0,
- NonCSSHint = 1,
- User = 2,
- Author = 3,
- Inline = 4,
- AuthorImportant = 5,
- InlineImportant = 6,
- UserImportant =7
- };
-
- /**
- * this class selects a RenderStyle for a given Element based on the
- * collection of stylesheets it contains. This is just a virtual base class
- * for specific implementations of the Selector. At the moment only CSSStyleSelector
- * exists, but someone may wish to implement XSL...
- */
- class StyleSelector
- {
- public:
- StyleSelector() {}
-
- /* as nobody has implemented a second style selector up to now comment out
- the virtual methods until then, so the class has no vptr.
- */
-// virtual ~StyleSelector() {}
-// virtual RenderStyle *styleForElement(DOM::ElementImpl *e) = 0;
-
- enum State {
- None = 0x00,
- Hover = 0x01,
- Focus = 0x02,
- Active = 0x04
- };
- };
-
-
- /**
- * the StyleSelector implementation for CSS.
- */
- class CSSStyleSelector : public StyleSelector
- {
- public:
- /**
- * creates a new StyleSelector for a Document.
- * goes through all StyleSheets defined in the document and
- * creates a list of rules it needs to apply to objects
- *
- * Also takes into account special cases for HTML documents,
- * including the defaultStyle (which is html only)
- */
- CSSStyleSelector( DOM::DocumentImpl* doc, TQString userStyleSheet, DOM::StyleSheetListImpl *styleSheets, const KURL &url,
- bool _strictParsing );
- /**
- * same as above but for a single stylesheet.
- */
- CSSStyleSelector( DOM::CSSStyleSheetImpl *sheet );
-
- ~CSSStyleSelector();
-
- void addSheet( DOM::CSSStyleSheetImpl *sheet );
- KDE_EXPORT static void clear();
- static void reparseConfiguration();
-
- static void loadDefaultStyle(const KHTMLSettings *s, DOM::DocumentImpl *doc);
-
- RenderStyle *styleForElement(DOM::ElementImpl *e);
-
- TQValueVector<int> fontSizes() const { return m_fontSizes; }
- TQValueVector<int> fixedFontSizes() const { return m_fixedFontSizes; }
-
- bool strictParsing;
- struct Encodedurl {
- TQString host; //also contains protocol
- TQString path;
- TQString file;
- } encodedurl;
-
- void computeFontSizes(TQPaintDeviceMetrics* paintDeviceMetrics, int zoomFactor);
- void computeFontSizesFor(TQPaintDeviceMetrics* paintDeviceMetrics, int zoomFactor, TQValueVector<int>& fontSizes, bool isFixed);
-
- static void precomputeAttributeDependencies(DOM::DocumentImpl* doc, DOM::CSSSelector* sel);
- protected:
- /* checks if the complete selector (which can be build up from a few CSSSelector's
- with given relationships matches the given Element */
- void checkSelector(int selector, DOM::ElementImpl *e);
- /* checks if the selector matches the given Element */
- bool checkSimpleSelector(DOM::CSSSelector *selector, DOM::ElementImpl *e, bool isAncestor, bool isSubSelector = false);
-
- enum SelectorMatch {SelectorMatches = 0, SelectorFailsLocal, SelectorFails};
- SelectorMatch checkSelector(DOM::CSSSelector *sel, DOM::ElementImpl *e, bool isAncestor, bool isSubSelector = false);
-
- void addDependency(StructuralDependencyType dependencyType, DOM::ElementImpl* dependency);
-#ifdef APPLE_CHANGES
- /* This function fixes up the default font size if it detects that the
- current generic font family has changed. -dwh */
- void checkForGenericFamilyChange(RenderStyle* aStyle, RenderStyle* aParentStyle);
-#endif
-
- /* builds up the selectors and properties lists from the CSSStyleSelectorList's */
- void buildLists();
- void clearLists();
-
- void adjustRenderStyle(RenderStyle* style, DOM::ElementImpl *e);
-
- unsigned int addInlineDeclarations(DOM::ElementImpl* e, DOM::CSSStyleDeclarationImpl *decl,
- unsigned int numProps);
-
- static DOM::CSSStyleSheetImpl *s_defaultSheet;
- static DOM::CSSStyleSheetImpl *s_quirksSheet;
- static CSSStyleSelectorList *s_defaultStyle;
- static CSSStyleSelectorList *s_defaultQuirksStyle;
- static CSSStyleSelectorList *s_defaultPrintStyle;
- static RenderStyle* styleNotYetAvailable;
-
- CSSStyleSelectorList *defaultStyle;
- CSSStyleSelectorList *defaultQuirksStyle;
- CSSStyleSelectorList *defaultPrintStyle;
-
- CSSStyleSelectorList *authorStyle;
- CSSStyleSelectorList *userStyle;
- DOM::CSSStyleSheetImpl *userSheet;
-
-public:
-
- private:
- void init(const KHTMLSettings* settings, DOM::DocumentImpl* doc);
-
- void mapBackgroundAttachment(BackgroundLayer* layer, DOM::CSSValueImpl* value);
- void mapBackgroundClip(BackgroundLayer* layer, DOM::CSSValueImpl* value);
- void mapBackgroundOrigin(BackgroundLayer* layer, DOM::CSSValueImpl* value);
- void mapBackgroundImage(BackgroundLayer* layer, DOM::CSSValueImpl* value);
- void mapBackgroundRepeat(BackgroundLayer* layer, DOM::CSSValueImpl* value);
- void mapBackgroundSize(BackgroundLayer* layer, DOM::CSSValueImpl* value);
- void mapBackgroundXPosition(BackgroundLayer* layer, DOM::CSSValueImpl* value);
- void mapBackgroundYPosition(BackgroundLayer* layer, DOM::CSSValueImpl* value);
-
- public: // we need to make the enum public for SelectorCache
- enum SelectorState {
- Unknown = 0,
- Applies,
- AppliesPseudo,
- Invalid
- };
-
- enum SelectorMedia {
- MediaAural = 1,
- MediaBraille,
- MediaEmboss,
- MediaHandheld,
- MediaPrint,
- MediaProjection,
- MediaScreen,
- MediaTTY,
- MediaTV
- };
- protected:
-
- struct SelectorCache {
- SelectorState state;
- unsigned int props_size;
- int *props;
- };
-
- unsigned int selectors_size;
- DOM::CSSSelector **selectors;
- SelectorCache *selectorCache;
- unsigned int properties_size;
- CSSOrderedProperty **properties;
- TQMemArray<CSSOrderedProperty> inlineProps;
- TQString m_medium;
- CSSOrderedProperty **propsToApply;
- CSSOrderedProperty **pseudoProps;
- unsigned int propsToApplySize;
- unsigned int pseudoPropsSize;
-
-
- RenderStyle::PseudoId dynamicPseudo;
-
- RenderStyle *style;
- RenderStyle *parentStyle;
- DOM::ElementImpl *element;
- DOM::NodeImpl *parentNode;
- KHTMLView *view;
- KHTMLPart *part;
- const KHTMLSettings *settings;
- TQPaintDeviceMetrics *paintDeviceMetrics;
- TQValueVector<int> m_fontSizes;
- TQValueVector<int> m_fixedFontSizes;
-
- bool fontDirty;
-
- void applyRule(int id, DOM::CSSValueImpl *value);
- };
-
- /*
- * List of properties that get applied to the Element. We need to collect them first
- * and then apply them one by one, because we have to change the apply order.
- * Some properties depend on other one already being applied (for example all properties specifying
- * some length need to have already the correct font size. Same applies to color
- *
- * While sorting them, we have to take care not to mix up the original order.
- */
- class CSSOrderedProperty
- {
- public:
- CSSOrderedProperty(DOM::CSSProperty *_prop, uint _selector,
- bool first, Source source, unsigned int specificity,
- unsigned int _position )
- : prop ( _prop ), pseudoId( RenderStyle::NOPSEUDO ), selector( _selector ),
- position( _position )
- {
- priority = (!first << 30) | (source << 24) | specificity;
- }
-
- bool operator < ( const CSSOrderedProperty &other ) const {
- if (priority < other.priority) return true;
- if (priority > other.priority) return false;
- if (position < other.position) return true;
- return false;
- }
-
- DOM::CSSProperty *prop;
- RenderStyle::PseudoId pseudoId;
- unsigned int selector;
- unsigned int position;
-
- TQ_UINT32 priority;
- };
-
- /*
- * This is the list we will collect all properties we need to apply in.
- * It will get sorted once before applying.
- */
- class CSSOrderedPropertyList : public TQPtrList<CSSOrderedProperty>
- {
- public:
- virtual int compareItems(TQPtrCollection::Item i1, TQPtrCollection::Item i2);
- void append(DOM::CSSStyleDeclarationImpl *decl, uint selector, uint specificity,
- Source regular, Source important );
- };
-
- class CSSOrderedRule
- {
- public:
- CSSOrderedRule(DOM::CSSStyleRuleImpl *r, DOM::CSSSelector *s, int _index);
- ~CSSOrderedRule();
-
- DOM::CSSSelector *selector;
- DOM::CSSStyleRuleImpl *rule;
- int index;
- };
-
- class CSSStyleSelectorList : public TQPtrList<CSSOrderedRule>
- {
- public:
- CSSStyleSelectorList();
- virtual ~CSSStyleSelectorList();
-
- void append( DOM::CSSStyleSheetImpl *sheet,
- const DOM::DOMString &medium = "screen" );
-
- void collect( TQPtrList<DOM::CSSSelector> *selectorList, CSSOrderedPropertyList *propList,
- Source regular, Source important );
- };
-
-}
-#endif