Class CSSEngine

java.lang.Object
org.apache.batik.css.engine.CSSEngine
Direct Known Subclasses:
SVGCSSEngine

public abstract class CSSEngine extends Object
This is the base class for all the CSS engines.
Version:
$Id: CSSEngine.java 1804130 2017-08-04 14:41:11Z ssteiner $
  • Field Details

    • userAgent

      protected CSSEngineUserAgent userAgent
      The user agent used for showing error messages.
    • cssContext

      protected CSSContext cssContext
      The CSS context.
    • document

      protected Document document
      The associated document.
    • documentURI

      protected ParsedURL documentURI
      The document URI.
    • isCSSNavigableDocument

      protected boolean isCSSNavigableDocument
      Whether the document is a CSSNavigableDocument.
    • indexes

      protected StringIntMap indexes
      The property/int mappings.
    • shorthandIndexes

      protected StringIntMap shorthandIndexes
      The shorthand-property/int mappings.
    • valueManagers

      protected ValueManager[] valueManagers
      The value managers.
    • shorthandManagers

      protected ShorthandManager[] shorthandManagers
      The shorthand managers.
    • parser

      protected ExtendedParser parser
      The CSS parser.
    • pseudoElementNames

      protected String[] pseudoElementNames
      The pseudo-element names.
    • fontSizeIndex

      protected int fontSizeIndex
      The font-size property index.
    • lineHeightIndex

      protected int lineHeightIndex
      The line-height property index.
    • colorIndex

      protected int colorIndex
      The color property index.
    • userAgentStyleSheet

      protected StyleSheet userAgentStyleSheet
      The user-agent style-sheet.
    • userStyleSheet

      protected StyleSheet userStyleSheet
      The user style-sheet.
    • media

      protected org.w3c.css.sac.SACMediaList media
      The media to use to cascade properties.
    • styleSheetNodes

      protected List styleSheetNodes
      The DOM nodes which contains StyleSheets.
    • fontFaces

      protected List fontFaces
      List of StyleMap objects, one for each @font-face rule encountered by this CSSEngine.
    • styleNamespaceURI

      protected String styleNamespaceURI
      The style attribute namespace URI.
    • styleLocalName

      protected String styleLocalName
      The style attribute local name.
    • classNamespaceURI

      protected String classNamespaceURI
      The class attribute namespace URI.
    • classLocalName

      protected String classLocalName
      The class attribute local name.
    • nonCSSPresentationalHints

      protected Set nonCSSPresentationalHints
      The non CSS presentational hints.
    • nonCSSPresentationalHintsNamespaceURI

      protected String nonCSSPresentationalHintsNamespaceURI
      The non CSS presentational hints namespace URI.
    • styleDeclarationDocumentHandler

      protected CSSEngine.StyleDeclarationDocumentHandler styleDeclarationDocumentHandler
      The style declaration document handler.
    • styleDeclarationUpdateHandler

      protected CSSEngine.StyleDeclarationUpdateHandler styleDeclarationUpdateHandler
      The style declaration update handler.
    • styleSheetDocumentHandler

      protected CSSEngine.StyleSheetDocumentHandler styleSheetDocumentHandler
      The style sheet document handler.
    • styleDeclarationBuilder

      protected CSSEngine.StyleDeclarationBuilder styleDeclarationBuilder
      The style declaration document handler used to build a StyleDeclaration object.
    • element

      protected CSSStylableElement element
      The current element.
    • cssBaseURI

      protected ParsedURL cssBaseURI
      The current base URI.
    • alternateStyleSheet

      protected String alternateStyleSheet
      The alternate stylesheet title.
    • cssNavigableDocumentListener

      protected CSSEngine.CSSNavigableDocumentHandler cssNavigableDocumentListener
      Listener for CSSNavigableDocument events.
    • domAttrModifiedListener

      protected EventListener domAttrModifiedListener
      The DOMAttrModified event listener.
    • domNodeInsertedListener

      protected EventListener domNodeInsertedListener
      The DOMNodeInserted event listener.
    • domNodeRemovedListener

      protected EventListener domNodeRemovedListener
      The DOMNodeRemoved event listener.
    • domSubtreeModifiedListener

      protected EventListener domSubtreeModifiedListener
      The DOMSubtreeModified event listener.
    • domCharacterDataModifiedListener

      protected EventListener domCharacterDataModifiedListener
      The DOMCharacterDataModified event listener.
    • styleSheetRemoved

      protected boolean styleSheetRemoved
      Whether a style sheet as been removed from the document.
    • removedStylableElementSibling

      protected Node removedStylableElementSibling
      The right sibling of the last removed node.
    • listeners

      protected List listeners
      The listeners.
    • selectorAttributes

      protected Set selectorAttributes
      The attributes found in stylesheets selectors.
    • ALL_PROPERTIES

      protected final int[] ALL_PROPERTIES
      Used to fire a change event for all the properties.
    • cssConditionFactory

      protected CSSConditionFactory cssConditionFactory
      The CSS condition factory.
    • LISTENER_ARRAY

      protected static final CSSEngineListener[] LISTENER_ARRAY
  • Constructor Details

    • CSSEngine

      protected CSSEngine(Document doc, ParsedURL uri, ExtendedParser p, ValueManager[] vm, ShorthandManager[] sm, String[] pe, String sns, String sln, String cns, String cln, boolean hints, String hintsNS, CSSContext ctx)
      Creates a new CSSEngine.
      Parameters:
      doc - The associated document.
      uri - The document URI.
      p - The CSS parser.
      vm - The property value managers.
      sm - The shorthand properties managers.
      pe - The pseudo-element names supported by the associated XML dialect. Must be null if no support for pseudo- elements is required.
      sns - The namespace URI of the style attribute.
      sln - The local name of the style attribute.
      cns - The namespace URI of the class attribute.
      cln - The local name of the class attribute.
      hints - Whether the CSS engine should support non CSS presentational hints.
      hintsNS - The hints namespace URI.
      ctx - The CSS context.
  • Method Details

    • getCSSParentNode

      public static Node getCSSParentNode(Node n)
      Returns the CSS parent node of the given node.
    • getCSSFirstChild

      protected static Node getCSSFirstChild(Node n)
      Returns the CSS first child node of the given node.
    • getCSSNextSibling

      protected static Node getCSSNextSibling(Node n)
      Returns the CSS next sibling node of the given node.
    • getCSSPreviousSibling

      protected static Node getCSSPreviousSibling(Node n)
      Returns the CSS previous sibling node of the given node.
    • getParentCSSStylableElement

      public static CSSStylableElement getParentCSSStylableElement(Element elt)
      Returns the next stylable parent of the given element.
    • addEventListeners

      protected void addEventListeners(EventTarget doc)
      Adds event listeners to the document to track CSS changes.
    • removeEventListeners

      protected void removeEventListeners(EventTarget doc)
      Removes the event listeners from the document.
    • dispose

      public void dispose()
      Disposes the CSSEngine and all the attached resources.
    • disposeStyleMaps

      protected void disposeStyleMaps(Node node)
      Removes the style maps from each CSSStylableElement in the document.
    • getCSSContext

      public CSSContext getCSSContext()
      Returns the CSS context.
    • getDocument

      public Document getDocument()
      Returns the document associated with this engine.
    • getFontSizeIndex

      public int getFontSizeIndex()
      Returns the font-size property index.
    • getLineHeightIndex

      public int getLineHeightIndex()
      Returns the line-height property index.
    • getColorIndex

      public int getColorIndex()
      Returns the color property index.
    • getNumberOfProperties

      public int getNumberOfProperties()
      Returns the number of properties.
    • getPropertyIndex

      public int getPropertyIndex(String name)
      Returns the property index, or -1.
    • getShorthandIndex

      public int getShorthandIndex(String name)
      Returns the shorthand property index, or -1.
    • getPropertyName

      public String getPropertyName(int idx)
      Returns the name of the property at the given index.
    • setCSSEngineUserAgent

      public void setCSSEngineUserAgent(CSSEngineUserAgent userAgent)
    • getCSSEngineUserAgent

      public CSSEngineUserAgent getCSSEngineUserAgent()
    • setUserAgentStyleSheet

      public void setUserAgentStyleSheet(StyleSheet ss)
      Sets the user agent style-sheet.
    • setUserStyleSheet

      public void setUserStyleSheet(StyleSheet ss)
      Sets the user style-sheet.
    • getValueManagers

      public ValueManager[] getValueManagers()
      Returns the ValueManagers.
    • getShorthandManagers

      public ShorthandManager[] getShorthandManagers()
      Returns the ShorthandManagers.
    • getFontFaces

      public List getFontFaces()
      Gets the StyleMaps generated by @font-face rules encountered by this CSSEngine thus far.
    • setMedia

      public void setMedia(String str)
      Sets the media to use to compute the styles.
    • setAlternateStyleSheet

      public void setAlternateStyleSheet(String str)
      Sets the alternate style-sheet title.
    • importCascadedStyleMaps

      public void importCascadedStyleMaps(Element src, CSSEngine srceng, Element dest)
      Recursively imports the cascaded style from a source element to an element of the current document.
    • getCSSBaseURI

      public ParsedURL getCSSBaseURI()
      Returns the current base-url.
    • getCascadedStyleMap

      public StyleMap getCascadedStyleMap(CSSStylableElement elt, String pseudo)
      Returns the cascaded style of the given element/pseudo-element.
      Parameters:
      elt - The stylable element.
      pseudo - Optional pseudo-element string (null if none).
    • getComputedStyle

      public Value getComputedStyle(CSSStylableElement elt, String pseudo, int propidx)
      Returns the computed style of the given element/pseudo for the property corresponding to the given index.
    • getStyleSheetNodes

      public List getStyleSheetNodes()
      Returns the document CSSStyleSheetNodes in a list. This list is updated as the document is modified.
    • findStyleSheetNodes

      protected void findStyleSheetNodes(Node n)
      An auxiliary method for getStyleSheets().
    • findSelectorAttributes

      protected void findSelectorAttributes(Set attrs, StyleSheet ss)
      Finds the selector attributes in the given stylesheet.
    • setMainProperties

      public void setMainProperties(CSSStylableElement elt, CSSEngine.MainPropertyReceiver dst, String pname, String value, boolean important)
    • parsePropertyValue

      public Value parsePropertyValue(CSSStylableElement elt, String prop, String value)
      Parses and creates a property value from elt.
      Parameters:
      elt - The element property is from.
      prop - The property name.
      value - The property value.
    • parseStyleDeclaration

      public StyleDeclaration parseStyleDeclaration(CSSStylableElement elt, String value)
      Parses and creates a style declaration.
      Parameters:
      value - The style declaration text.
    • parseStyleSheet

      public StyleSheet parseStyleSheet(ParsedURL uri, String media) throws DOMException
      Parses and creates a new style-sheet.
      Parameters:
      uri - The style-sheet URI.
      media - The target media of the style-sheet.
      Throws:
      DOMException
    • parseStyleSheet

      public StyleSheet parseStyleSheet(org.w3c.css.sac.InputSource is, ParsedURL uri, String media) throws DOMException
      Parses and creates a new style-sheet.
      Parameters:
      is - The input source used to read the document.
      uri - The base URI.
      media - The target media of the style-sheet.
      Throws:
      DOMException
    • parseStyleSheet

      public void parseStyleSheet(StyleSheet ss, ParsedURL uri) throws DOMException
      Parses and fills the given style-sheet.
      Parameters:
      ss - The stylesheet to fill.
      uri - The base URI.
      Throws:
      DOMException
    • parseStyleSheet

      public StyleSheet parseStyleSheet(String rules, ParsedURL uri, String media) throws DOMException
      Parses and creates a new style-sheet.
      Parameters:
      rules - The style-sheet rules to parse.
      uri - The style-sheet URI.
      media - The target media of the style-sheet.
      Throws:
      DOMException
    • parseStyleSheet

      public void parseStyleSheet(StyleSheet ss, String rules, ParsedURL uri) throws DOMException
      Parses and fills the given style-sheet.
      Parameters:
      ss - The stylesheet to fill.
      rules - The style-sheet rules to parse.
      uri - The base URI.
      Throws:
      DOMException
    • parseStyleSheet

      protected void parseStyleSheet(StyleSheet ss, org.w3c.css.sac.InputSource is, ParsedURL uri) throws IOException
      Parses and fills the given style-sheet.
      Parameters:
      ss - The stylesheet to fill.
      uri - The base URI.
      Throws:
      IOException
    • putAuthorProperty

      protected void putAuthorProperty(StyleMap dest, int idx, Value sval, boolean imp, short origin)
      Puts an author property from a style-map in another style-map, if possible.
    • addMatchingRules

      protected void addMatchingRules(List rules, StyleSheet ss, Element elt, String pseudo)
      Adds the rules matching the element/pseudo-element of given style sheet to the list.
    • addRules

      protected void addRules(Element elt, String pseudo, StyleMap sm, ArrayList rules, short origin)
      Adds the rules contained in the given list to a stylemap.
    • sortRules

      protected void sortRules(ArrayList rules, Element elt, String pseudo)
      Sorts the rules matching the element/pseudo-element of given style sheet to the list.
    • mediaMatch

      protected boolean mediaMatch(org.w3c.css.sac.SACMediaList ml)
      Whether the given media list matches the media list of this CSSEngine object.
    • addCSSEngineListener

      public void addCSSEngineListener(CSSEngineListener l)
      Adds a CSS engine listener.
    • removeCSSEngineListener

      public void removeCSSEngineListener(CSSEngineListener l)
      Removes a CSS engine listener.
    • firePropertiesChangedEvent

      protected void firePropertiesChangedEvent(Element target, int[] props)
      Fires a CSSEngineEvent, given a list of modified properties.
    • inlineStyleAttributeUpdated

      protected void inlineStyleAttributeUpdated(CSSStylableElement elt, StyleMap style, short attrChange, String prevValue, String newValue)
      Called when the inline style of the given element has been updated.
    • clearComputedValue

      private static void clearComputedValue(StyleMap style, int n)
    • invalidateProperties

      protected void invalidateProperties(Node node, int[] properties, boolean[] updated, boolean recascade)
      Invalidates all the properties of the given node.
    • propagateChanges

      protected void propagateChanges(Node node, int[] props, boolean recascade)
      Propagates the changes that occurs on the parent of the given node. Props is a list of known 'changed' properties. If recascade is true then the stylesheets will be applied again to see if the any new rules apply (or old rules don't apply).
    • nonCSSPresentationalHintUpdated

      protected void nonCSSPresentationalHintUpdated(CSSStylableElement elt, StyleMap style, String property, short attrChange, String newValue)
      Called when a non-CSS presentational hint has been updated.
    • hasStyleSheetNode

      protected boolean hasStyleSheetNode(Node n)
      Returns whether the DOM subtree rooted at the specified node contains a CSSStyleSheetNode.
    • handleAttrModified

      protected void handleAttrModified(Element e, Attr attr, short attrChange, String prevValue, String newValue)
      Handles an attribute change in the document.
    • handleNodeInserted

      protected void handleNodeInserted(Node n)
      Handles a node insertion in the document.
    • handleNodeRemoved

      protected void handleNodeRemoved(Node n)
      Handles a node removal from the document.
    • handleSubtreeModified

      protected void handleSubtreeModified(Node ignored)
      Handles a subtree modification in the document. todo the incoming Node is actually ignored (not used) here, but it seems caller-sites assume that it is used - is this done right??
    • handleCharacterDataModified

      protected void handleCharacterDataModified(Node n)
      Handles a character data modification in the document.