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;
                             }
                         }
                     }


Reply via email to