You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-dev@xmlgraphics.apache.org by Finn Bock <bc...@worldonline.dk> on 2004/01/03 00:15:38 UTC
Abandoning code-generated Property.Maker
Hi,
Inspired by a recent discussion about code-generated vs. manual
maintained property maker classes, I've come up with an idea which I
hope you will find interesting.
The patch I've uploaded
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25873
which implement the idea, disables the code generation of the property
maker classes and instead creates instances of the base maker types and
configures them with setter methods.
// font-size
m = new LengthProperty.Maker(PR_FONT_SIZE);
m.setInherited(true, false);
m.setDefault("12pt");
m.setPercentBase(LengthBase.INH_FONTSIZE);
addPropertyMaker("font-size", m);
As a result, the FOPropertyMapping isn't generated anymore but can be
maintained as a normal java program.
The two most interesting files can be found here:
http://bckfnn-modules.sf.net/FOPropertyMapping.java
http://bckfnn-modules.sf.net/Property.java
I have had to created three handmade maker subclasses to handle the more
involved computation of properties:
[inline|block]-progression-dimension
[start|end]-indent
border-[left|right|top|bottom]-width
All the rest of the properties are handled by setting values on the base
maker classes which already existed.
I've also removed the enum classes for constants. I don't know if that
will be considered a good idea, it just seemed a heavy-weight way of
documenting the enumness of the constants. Perhaps it is better to keep
the enum interfaces and reuse them to typesafe enums when 1.5 comes along.
Rightfully, this should be slower than having specialized code which
just handle the features needed by each maker, but in reality I have not
been able to measure any difference. It is however difficult to measure
performance while the string->int conversion is taking place.
regards,
finn