--- Finn Bock <[EMAIL PROTECTED]> wrote: > > But the biggest improvement is IMHO the easy ability > to create special > maker subclasses to handle the corner cases. Take a > look at > IndentPropertyMaker for the calculation of start and > end-indent and at > BorderWidthPropertyMaker for the special handling of > border-width when > border-style is NONE. >
Well, I'm not there yet, but I'll be able to appreciate it in due time. > > Initially my new FOPropertyMapping was generated by > XSLT but that is now > a long time ago and I have made lots of manual > changes since then. OK, no problem, we'll modify the Java source from now on. > > The generic properties are just templates that > carries default data > values to be used later on, so I don't fully see how > we could xslt- > generate them as anything other than containers of > default values. Your > last statement is a bit difficult to parse so I'm > not sure what exactly > you are recommending. > Umm, never mind. What I was trying to say is that the generic templates (GenericKeep, GenericSpace, etc., of the present code) were all autogenerated. *If* you thought it still useful to keep it as such, it's OK with me (i.e., going down from 250 autogenerated to about 8 is still a very nice improvement.) But you no longer see a need for it, which is absolutely fine with me. > > One thing that *does* stick out, however, is the > 100 > > or so addKeyword() calls for genericColor (the > largest > > of the generic properties): > > > > genericColor.addKeyword("antiquewhite", > "#faebd7"); > > genericColor.addKeyword("aqua", "#00ffff"); > > genericColor.addKeyword("aquamarine", > "#7fffd4"); > > ..... > > > > I'd like us to have a static array of these > > values--i.e., something done compile-time, that > > genericColor can just reference, so we don't have > to > > do this keyword initialization. > > I probably need an example of what you thinking are > here. Right now in > HEAD all the color keywords are stored in a HashMap > created in > GenericColor so the keywords initialization is > already done. OK--I see, thanks for the enlightenment here. Never mind again, I was wrong on this point. > Putting the > keywords in static array would require us to somehow > search the array > and I don't see how that will be much faster. > Yes, wasn't thinking of that. > > 4) I'd also like us to, rather than call > > setInherited() and setDefault() for each of the > > properties during initialization, for the > > Property/Property.Maker classes to just reference > that > > information from two (new) static arrays, added to > > Constants.java. We can also get rid of these two > > setter methods as well (ideally there shouldn't be > > setters for these attributes anyway--they should > > remain inherent to the Property.) > > > > This change will allow us to take advantage of the > > fact that we are now on int-constants. > > getDefault(PR_WHATEVER), for example, is just > > Constants.DefaultArray[PR_WHATEVER]. > > I think 'Default' is a bad example, noone ever tries > to get the default > value except for the property maker itself, but your > argument holds for > isInherited(). > No--I don't think you've gotten my point here. I don't care about the consumers of that information--even if it is just Property.Maker. But I don't see the reason to run-time initialize a PropertyMaker with inherited and default values, because I can add the whole array in the Constants interface, or even in Property.Maker directly. static Boolean inheritedArray[] = { false .... // 0 true // PR_PROP_1 true // PR_PROP_2 false // PR_PROP_3 true // ... .... Once you initialize a Property.Maker with its PR_XXXXXX constant, *it* (the Maker) can always obtain these values by accessing inheritedArray[PR_XXXXXX] or defaultArray[PR_XXXXXX]. No reason to initialize via setInherited(true) or setDefault("5"). Do you see what I'm trying to say? > Still, I disagree. If one want to know is a property > is inherited, the > proper way to get the information should be to call > propertyMapping[PR_WHATEVER].isInherited(). > OK--we can place these two arrays in a location where only the Property.Makers can get to it. (Maybe a protected static array in Property.Maker?) Thoughts here? > > Again, getting rid of the useGeneric() function. > This > > is for more speed, encapsulation, and also > shrinking > > FOPropertyMapping class a bit. > > A very good idea. +1. > I can probably make the modifications to this--looks simple. Thanks, Glen __________________________________ Do you Yahoo!? Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes http://hotjobs.sweepstakes.yahoo.com/signingbonus