Re: [Geotools-devel] Fix for ImageWorker

2021-10-15 Thread Jody Garnett
I am not that familiar with image workers myself, I think we should hang
out for a bit and ask for help in how to write test cases.
--
Jody Garnett


On Fri, 15 Oct 2021 at 03:39, Michael Jung  wrote:

> I understand your policy, and I have tried complying. However, it is
> not that simple.
>
> The scale method is deeply entrenched in the ImageWorker and testing
> this safety check would require me to refactor a lot of code that
> I am not familiar with - or to reverse engineer my "big"
> example until I find the parameter-set on class level that causes the
> problem. The first has the danger of introducing new bugs and the latter
> is hideously difficult, as you may imagine. At least it is not worth
> the effort for such an unproblematic safety check.
>
> I'm sorry that this is beyond my ability. Would you still take a pull
> request?
>
> Michael
>
> On Thu, Oct 14, 2021 at 12:18:10PM -0700, Jody Garnett wrote:
> > Thanks for contacting us, it appears your fix is good safety check.
> >
> > We do have the policy of only accepting pull requests with a test case;
> to
> > prevent regressions from occurring and prove to the review that the
> change
> > addresses the issue in questions. We have had too much technical debt
> > accumulate before this policy.
> >
> > We would love if if you can make a PR.
> >
> > Jody
> >
> > On Thu, Oct 14, 2021 at 11:37 AM Michael Jung 
> > wrote:
> >
> > > Hello,
> > >
> > > I sent a similar mail a couple of months ago. I didn't receive any
> > > response,
> > > but I had only recently subscribed, maybe it got lost in translation.
> > >
> > > The CONTRIBUTING.md says, I should post here.
> > >
> > > A lot of my data is raster data with alpha-channel. About 2% fail when
> > > serving them through the tile server at some resolutions.  I can't
> > > produce a small, self-contained example, unfortunately. But I have
> > > tracked it down and it seems the alpha-channel is rendered separately
> > > from the rest of the image and is "allergic" to 0-size tile-width.
> > > This is the way I fixed it in 21.1 (verified in my environment).
> > > If necessary, I can give you the stack trace from the logs, the
> > > AWT class doesn't like 0.
> > >
> > > This is the patch on current main HEAD:
> > >
> > > diff --git
> > >
> a/modules/library/coverage/src/main/java/org/geotools/image/ImageWorker.java
> > >
> b/modules/library/coverage/src/main/java/org/geotools/image/ImageWorker.java
> > > index 0dfee3e..82c0d3f 100644
> > > ---
> > >
> a/modules/library/coverage/src/main/java/org/geotools/image/ImageWorker.java
> > > +++
> > >
> b/modules/library/coverage/src/main/java/org/geotools/image/ImageWorker.java
> > > @@ -4452,15 +4452,17 @@ public class ImageWorker {
> > >  Object candidate = hints.get(JAI.KEY_IMAGE_LAYOUT);
> > >  if (candidate instanceof ImageLayout) {
> > >  ImageLayout layout = (ImageLayout) candidate;
> > > -ImageLayout layout2 =
> > > -new ImageLayout2(
> > > -layout.getTileGridXOffset(null),
> > > -layout.getTileGridYOffset(null),
> > > -layout.getTileWidth(null),
> > > -layout.getTileHeight(null),
> > > -sm,
> > > -cm);
> > > -merged.setRenderingHints(new
> > > RenderingHints(JAI.KEY_IMAGE_LAYOUT, layout2));
> > > +if (layout.getTileWidth(null) > 0 &&
> > > layout.getTileHeight(null) > 0) {
> > > +ImageLayout layout2 =
> > > +new ImageLayout2(
> > > +layout.getTileGridXOffset(null),
> > > +layout.getTileGridYOffset(null),
> > > +layout.getTileWidth(null),
> > > +layout.getTileHeight(null),
> > > +sm,
> > > +cm);
> > > +merged.setRenderingHints(new
> > > RenderingHints(JAI.KEY_IMAGE_LAYOUT, layout2));
> > > +}
> > >  }
> > >  image = merged.addBand(alphaChannel, false, true,
> > > null).getRenderedImage();
> > >  }
> > >
> > > I could also create a pull request (from
> > > https://github.com/irisiflimsi/geotools) and an issue for it, if you
> > > prefer.
> > >
> > > Sincerely,
> > > Michael
> > >
> > >
> > >
> > > ___
> > > GeoTools-Devel mailing list
> > > GeoTools-Devel@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/geotools-devel
> > >
> > --
> > --
> > Jody Garnett
>
___
GeoTools-Devel mailing list
GeoTools-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel


Re: [Geotools-devel] Fix for ImageWorker

2021-10-15 Thread Michael Jung
I understand your policy, and I have tried complying. However, it is
not that simple.

The scale method is deeply entrenched in the ImageWorker and testing
this safety check would require me to refactor a lot of code that
I am not familiar with - or to reverse engineer my "big"
example until I find the parameter-set on class level that causes the
problem. The first has the danger of introducing new bugs and the latter
is hideously difficult, as you may imagine. At least it is not worth
the effort for such an unproblematic safety check.

I'm sorry that this is beyond my ability. Would you still take a pull
request?

Michael

On Thu, Oct 14, 2021 at 12:18:10PM -0700, Jody Garnett wrote:
> Thanks for contacting us, it appears your fix is good safety check.
> 
> We do have the policy of only accepting pull requests with a test case; to
> prevent regressions from occurring and prove to the review that the change
> addresses the issue in questions. We have had too much technical debt
> accumulate before this policy.
> 
> We would love if if you can make a PR.
> 
> Jody
> 
> On Thu, Oct 14, 2021 at 11:37 AM Michael Jung 
> wrote:
> 
> > Hello,
> >
> > I sent a similar mail a couple of months ago. I didn't receive any
> > response,
> > but I had only recently subscribed, maybe it got lost in translation.
> >
> > The CONTRIBUTING.md says, I should post here.
> >
> > A lot of my data is raster data with alpha-channel. About 2% fail when
> > serving them through the tile server at some resolutions.  I can't
> > produce a small, self-contained example, unfortunately. But I have
> > tracked it down and it seems the alpha-channel is rendered separately
> > from the rest of the image and is "allergic" to 0-size tile-width.
> > This is the way I fixed it in 21.1 (verified in my environment).
> > If necessary, I can give you the stack trace from the logs, the
> > AWT class doesn't like 0.
> >
> > This is the patch on current main HEAD:
> >
> > diff --git
> > a/modules/library/coverage/src/main/java/org/geotools/image/ImageWorker.java
> > b/modules/library/coverage/src/main/java/org/geotools/image/ImageWorker.java
> > index 0dfee3e..82c0d3f 100644
> > ---
> > a/modules/library/coverage/src/main/java/org/geotools/image/ImageWorker.java
> > +++
> > b/modules/library/coverage/src/main/java/org/geotools/image/ImageWorker.java
> > @@ -4452,15 +4452,17 @@ public class ImageWorker {
> >  Object candidate = hints.get(JAI.KEY_IMAGE_LAYOUT);
> >  if (candidate instanceof ImageLayout) {
> >  ImageLayout layout = (ImageLayout) candidate;
> > -ImageLayout layout2 =
> > -new ImageLayout2(
> > -layout.getTileGridXOffset(null),
> > -layout.getTileGridYOffset(null),
> > -layout.getTileWidth(null),
> > -layout.getTileHeight(null),
> > -sm,
> > -cm);
> > -merged.setRenderingHints(new
> > RenderingHints(JAI.KEY_IMAGE_LAYOUT, layout2));
> > +if (layout.getTileWidth(null) > 0 &&
> > layout.getTileHeight(null) > 0) {
> > +ImageLayout layout2 =
> > +new ImageLayout2(
> > +layout.getTileGridXOffset(null),
> > +layout.getTileGridYOffset(null),
> > +layout.getTileWidth(null),
> > +layout.getTileHeight(null),
> > +sm,
> > +cm);
> > +merged.setRenderingHints(new
> > RenderingHints(JAI.KEY_IMAGE_LAYOUT, layout2));
> > +}
> >  }
> >  image = merged.addBand(alphaChannel, false, true,
> > null).getRenderedImage();
> >  }
> >
> > I could also create a pull request (from
> > https://github.com/irisiflimsi/geotools) and an issue for it, if you
> > prefer.
> >
> > Sincerely,
> > Michael
> >
> >
> >
> > ___
> > GeoTools-Devel mailing list
> > GeoTools-Devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/geotools-devel
> >
> -- 
> --
> Jody Garnett


___
GeoTools-Devel mailing list
GeoTools-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel