在batik css解析器中CSSEngine类的目的是什么?

时间:2015-09-29 04:48:29

标签: batik

我正在评估batik css解析器以将其与我们的产品集成。为了最好地使用它我想要了解其所有类所代表的内容。我无法理解org.apache.batik.css.engine.CSSEngine类的用途。这个课程使用的是什么。

1 个答案:

答案 0 :(得分:0)

CSSEngine类有一个函数parseStyleSheet,它返回一个StyleSheet对象。这个StyleSheet对象实际上是css的dom表示。

StyleSheet ss = cssEngine.parseStyleSheet(new ParsedURL("file:///"+filename),"max-width: 800px");

您可以通过扩展CSSEngine类来创建自己的cssengine。

  public class MyCSSEngine extends CSSEngine{

         public MyCSSEngine (ExtendedParser parser) {

        super(null, null, parser, MY_VALUE_MANAGERS, SVGCSSEngine.SVG_SHORTHAND_MANAGERS, null, null, "style",
                  null,
                  "class",
                  true,
                  null,
                  new MyCSSContext());
        // TODO Auto-generated constructor stub
    }
}

通过扩展org.apache.batik.css.engine.CSSContext来创建MyCSSContext。 来到MY_VALUE_MANAGERS这很重要。价值经理可以像

public static final ValueManager[] MY_VALUE_MANAGERS = {
    new AlignmentBaselineManager(),
    new BaselineShiftManager(),
    new ClipManager(),
    new ClipPathManager(),
    new ClipRuleManager(),

    new ColorManager(),
    new ColorInterpolationManager(),
    new ColorInterpolationFiltersManager(),
    new ColorProfileManager(),
    new ColorRenderingManager()
}

它基本上在解析时注册你感兴趣的属性。(远不止于此)。

您也可以使用org.apache.batik.css.engine.SVGCSSEngine.SVG_VALUE_MANAGERS,但实现自己的值管理器可以让您有权处理自己的自定义css属性,例如

-my-own-color:mufunc(10,23,45)