I filed it (http://issues.apache.org/bugzilla/show_bug.cgi?id=40729)

Thanks for your patience and support. Would not have worked without it.

Next is svg I guess....but I am not sure that will be immediately. I have
only a day or so left for now.

Peter


> -----Original Message-----
> From: Jeremias Maerki [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, October 11, 2006 6:49 PM
> To: fop-dev@xmlgraphics.apache.org
> Subject: Re: Including an sRGB color profile?
> 
> Without seeing the code, no objections here. It's good to be on the safe
> side by using a synchronized Map. I'll look into the "base" parameter
> for getColorSpace() when I see the code.
> 
> When you submit the first patch, please don't expect a fast turn-around,
> since right now I can't tell when I will be able to process it. I'm
> currently struggling to juggle my items on my task list and all the
> other FOP stuff (like this) in the little time I have available for FOP
> nowadays.
> 
> On 11.10.2006 17:35:34 Peter wrote:
> > So I think I have it working but not without substantial changes
> >
> > A summary
> >
> > 1)FopFactory
> > ============
> > *) Added a synchronized Map, colorSpaceMap to cache ...ColorSpace
> > objects(life can be easy). Don't know whether this has to be
> synchronized.
> > Have not looked into the details of FOP MT features.
> >
> > *) Added a public method
> >     public ColorSpace getColorSpace(
> >         String base,
> >         String iccProfileSrc)
> >
> > Kind of awkward to have to pass in the base but the only way I could see
> to
> > work around that is to have the cache in the user agent iso the factory
> >
> > 2) AreaTreeParser.Handler#setTraits
> > ===================================
> > *) Change invocation of ColorUtil.parseColorString (2x). It now needs a
> > first FOUserAgent argument
> > *) Change invocation of BorderProps.valueOf. Expects a first FOUserAgent
> > argument
> >
> > 3) NCNameProperty#getColor
> > ==========================
> > *) New first FOUserAgent argument
> > *) Invoke ColorUtil.parseColorString with the FOUserAgent argument
> >
> > 4) NumericProperty#getColor
> > ============================
> > *) New first FOUserAgent argument
> >
> > 5) PropertyParser#parsePrimaryExpr
> > ==================================
> > *) ColorProperty constructor takes new first FOUserAgent argument
> >
> > 6) SystemColorFunction#eval
> > ===========================
> > *) ColorProperty constructor takes new first FOUserAgent argument
> >
> >
> > 7) ColorProperty
> > ================
> > *) Constructor new first FOUserAgent argument
> > *) getColor - new first FOUserAgent argument
> >
> > 8) CommonBorderPaddingBackground
> > ================================
> > *) getColor - new first FOUserAgent argument
> >
> > 8) NumberProperty
> > =================
> > *) getColor - new first FOUserAgent argument
> >
> > 9) Property
> > ===========
> > *) getColor - new first FOUserAgent argument
> >
> > 10) ColorUtil has been changed to take "advantage" of these changes
> >
> >
> > I have not added a lot of tests to check the arguments which are
> accessed to
> > get hold of the FOUserAgent and the unit tests gave one NPE because one
> of
> > the arguments to one of the functions was null. I am trying to decide
> > whether more defensive checks for null arguments would make sense.
> >
> > Anyone any thoughts?
> >
> > Thanks,
> >
> > Peter
> >
> >
> >
> > > -----Original Message-----
> > > From: Jeremias Maerki [mailto:[EMAIL PROTECTED]
> > > Sent: Wednesday, October 11, 2006 2:29 PM
> > > To: fop-dev@xmlgraphics.apache.org
> > > Subject: Re: Including an sRGB color profile?
> > >
> > > ColorUtil, as the name implies, is a utility class and it doesn't feel
> > > right to put an instance of it in FOUserAgent. I would extract the
> > > profile caching into a separate class and put that there (or rather in
> > > the FopFactory so multiple rendering runs can use the cache). The
> > > ColorUtil methods should then usually receive an instance of the
> profile
> > > cache to work with.
> > >
> > > You will easily see from the unit tests if anything breaks. I will
> also
> > > do extensive tests when reviewing your patch. Since it probably needs
> > > some additional work afterwards, we will probably put it in a branch
> > > until it's ready to be merged back into Trunk. Don't be too afraid to
> > > change some method signatures. What needs to be done, needs to be
> done.
> > >
> > > On 11.10.2006 14:07:51 Peter wrote:
> > > > Some more information....found during the last few hours....and
> finished
> > > > typing in just before your reply came in.
> > > >
> > > > I have been trying to figure out whether it would help to add an
> > > instance of
> > > > ColorUtil to the FOUserAgent (and changing some of its methods and
> > > members
> > > > to instance level)
> > > >
> > > > Skipping to the conclusion first - in theory it seems possible to
> make
> > > > ColorUtil#parseColorString an instance method and add a ColorUtil
> > > instance
> > > > to the FOUserAgent. In theory, because API wise an FOUserAgent can
> > > always be
> > > > made available (given enough API changes) but I have no idea whether
> it
> > > will
> > > > actually be there at runtime (could be null).
> > > >
> > > > Actually there might a problem with one or more static function of
> one
> > > of
> > > > the calling classes/methods I just realize.
> > > >
> > > > Anyway, changes are rather extensive and I am not sure whether they
> will
> > > > work or break anything I overlooked.
> > > >
> > > > Please advice - I am willing to give it a try but need to decide
> asap (I
> > > am
> > > > running out of my time slot that was made available for fop dev work
> for
> > > the
> > > > coming weeks).
> > > >
> > > > Thanks,
> > > >
> > > > Peter
> > > >
> > > >
> > > > What I found out, ColorUtil is referenced from
> > > >
> > > > 1/ colorEqualTest
> > > > ==> Not an issue I guess (test)
> > > >
> > > > 2/ AreaTreeParser.Handler#setTraits
> > > > ==> Not an issue as an FOUserAgent is available
> > > >
> > > > 3/ Trait.Background#toString ==> FOUserAgent not needed
> > > > ==> Not an issue as an FOUserAgent is not needed (only colorToString
> is
> > > > called)
> > > >
> > > > 4/ NCNameProperty#getColor
> > > > ==> NO FOUserAgent ==> ISSUE
> > > >
> > > > 5/ ColorProperty#ColorProperty
> > > > ==> NO FOUserAgent ==> ISSUE
> > > >
> > > > 6/ ColorProperty#toString ==> FOUserAgent not needed
> > > > ==> Not an issue as an FOUserAgent is not needed (only colorToString
> is
> > > > called)
> > > >
> > > > 7/ XMLRenderer#addTraitAttributes ==> FOUserAgent not needed
> > > > ==> Not an issue as an FOUserAgent is not needed (only colorToString
> is
> > > > called)
> > > >
> > > > 8/ BorderProps#toString ==> FOUserAgent not needed
> > > > ==> Not an issue as an FOUserAgent is not needed (only colorToString
> is
> > > > called)
> > > >
> > > > 9/ BorderProps#valueOf
> > > > ==> NO FOUserAgent ==> ISSUE
> > > >
> > > > To summarize three invocations of ColorUtil#parseColorString give
> > > problems
> > > >
> > > > I went a level further
> > > >
> > > > 4/ NCNameProperty#getColor
> > > > ==> NO FOUserAgent ==> But all callers of getColor seem to have
> access
> > > to
> > > > something that in theory should be able to return the FOUserAgent
> > > > ==> No longer an issue
> > > >
> > > >
> > > > 5/ ColorProperty#ColorProperty
> > > > ==> NO FOUserAgent ==> But all callers of ColorProperty constructor
> seem
> > > to
> > > > have access to something that in theory should be able to return the
> > > > FOUserAgent  ==> No longer an issue
> > > >
> > > > 9/ BorderProps#valueOf
> > > > ==> NO FOUserAgent ==> ==> But all callers of valueOf (one :)) seem
> to
> > > have
> > > > access to something that in theory should be able to return the
> > > FOUserAgent
> > > > ==> No longer an issue
> > > >
> > > >
> > > >
> > > >
> > > > > -----Original Message-----
> > > > > From: Jeremias Maerki [mailto:[EMAIL PROTECTED]
> > > > > Sent: Wednesday, October 11, 2006 2:05 PM
> > > > > To: fop-dev@xmlgraphics.apache.org
> > > > > Subject: Re: Including an sRGB color profile?
> > > > >
> > > > > Ok for me, as long as we track the outstanding issues.
> > > > >
> > > > > On 11.10.2006 12:01:19 Peter wrote:
> > > > > > >
> > > > > > > Would you please try to run URI resolution through
> > > > > > > FOUserAgent.resolveURI()? That way we'll have a uniform URI
> > > resolution
> > > > > > > everywhere.
> > > > > >
> > > > > > I understand your concern. I will look into it but the issue is
> that
> > > > > > ColorUtil is really a bunch of static methods that at this stage
> > > have no
> > > > > > access to any instance objects. I am sure that can be changed
> but I
> > > am
> > > > > > concerned this is going to ripple down to a lot of files and I
> would
> > > > > rather
> > > > > > start out by leaving as much code as possible untouched.
> > > > > >
> > > > > >
> > > > > > > Uhm, that's not so good. We were trying to avoid statics where
> > > > > possible.
> > > > > > > I'd prefer to keep that Map in FOUserAgent (per rendering
> run), or
> > > if
> > > > > > > you want to cache the profiles, we should make a cache class
> with
> > > > > > > SoftReferences similar to what is implemented in ImageFactory
> and
> > > > > attach
> > > > > > > that to the FopFactory. But I can look into this. I don't want
> to
> > > put
> > > > > > > too much on your shoulders if you don't want to. It's cool
> enough
> > > that
> > > > > > > you're putting so much energy into this.
> > > > > >
> > > > > > Basically the same issue here. ColorUtil is static....and as a
> > > (lousy)
> > > > > > excuse, I mainly just duplicated the colorMap cache
> "idea"....but I
> > > > > agree
> > > > > > one should avoid those static beasts. Not caching the
> ColorProfiles
> > > on
> > > > > the
> > > > > > other hand seems not a good idea either, from a memory
> consumption
> > > > > > perspective.
> > > > > >
> > > > > > Again (sorry for repeating myself) I would rather see this
> included
> > > and
> > > > > > continue from there...building up fop-dev experience step by
> step.
> > > > >
> > > > >
> > > > >
> > > > > Jeremias Maerki
> > >
> > >
> > >
> > > Jeremias Maerki
> 
> 
> 
> Jeremias Maerki

Reply via email to