Author: tilman Date: Sun Feb 23 13:42:00 2014 New Revision: 1571010 URL: http://svn.apache.org/r1571010 Log: PDFBOX-1877: type 3 shading (radial shading): fix handling of values not in the domain
Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java?rev=1571010&r1=1571009&r2=1571010&view=diff ============================================================================== --- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java (original) +++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java Sun Feb 23 13:42:00 2014 @@ -252,20 +252,28 @@ public class RadialShadingContext implem { inputValue = inputValues[1]; } - // both are not in the domain (is this correct, or is there some miscalculation??) + // both are not in the domain else { - // TODO don't know what to do in such cases. The following works - // with the given examples - // choose the smaller if extend[0] is set to true - if (extend[0]) + if (extend[0] && extend[1]) { - inputValue = Math.min(inputValues[0], inputValues[1]); + inputValue = Math.max(inputValues[0], inputValues[1]); + } + else if (extend[0]) + { + inputValue = inputValues[0]; + } + else if (extend[1]) + { + inputValue = inputValues[1]; + } + else if (background != null) + { + useBackground = true; } - // choose the bigger one in all other cases else { - inputValue = Math.max(inputValues[0], inputValues[1]); + continue; } } }