]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Factorized creation of gradient bounds
authorVincent Hennebert <vhennebert@apache.org>
Thu, 10 Jul 2014 17:37:30 +0000 (17:37 +0000)
committerVincent Hennebert <vhennebert@apache.org>
Thu, 10 Jul 2014 17:37:30 +0000 (17:37 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/FOP-2393_gradient-rendering@1609518 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/svg/PDFGraphics2D.java

index 06dd1f575beddd10fb93bdbccc4126533c0637db..0403fa465d7b74222b05a035dfa5aa0b61972b95 100644 (file)
@@ -880,19 +880,12 @@ public class PDFGraphics2D extends AbstractGraphics2D implements NativeImageHand
 
         List<Color> colors = createGradientColors(gp);
 
-        float[] fractions = gp.getFractions();
-        List<Double> theBounds = new java.util.ArrayList<Double>();
-        for (int count = 0; count < fractions.length; count++) {
-            float offset = fractions[count];
-            if (0f < offset && offset < 1f) {
-                theBounds.add(new Double(offset));
-            }
-        }
+        List<Double> bounds = createGradientBounds(gp);
 
         //Gradients are currently restricted to sRGB
         PDFDeviceColorSpace colSpace = new PDFDeviceColorSpace(PDFDeviceColorSpace.DEVICE_RGB);
         PDFGradientFactory gradientFactory = new PDFGradientFactory(this);
-        PDFPattern myPat = gradientFactory.createGradient(false, colSpace, colors, theBounds,
+        PDFPattern myPat = gradientFactory.createGradient(false, colSpace, colors, bounds,
                 theCoords, matrix);
         currentStream.write(myPat.getColorSpaceOut(fill));
 
@@ -941,19 +934,12 @@ public class PDFGraphics2D extends AbstractGraphics2D implements NativeImageHand
 
         List<Color> colors = createGradientColors(gp);
 
-        float[] fractions = gp.getFractions();
-        List<Double> theBounds = new java.util.ArrayList<Double>();
-        for (int count = 0; count < fractions.length; count++) {
-            float offset = fractions[count];
-            if (0f < offset && offset < 1f) {
-                theBounds.add(new Double(offset));
-            }
-        }
+        List<Double> bounds = createGradientBounds(gp);
 
         //Gradients are currently restricted to sRGB
         PDFDeviceColorSpace colSpace = new PDFDeviceColorSpace(PDFDeviceColorSpace.DEVICE_RGB);
         PDFGradientFactory gradientFactory = new PDFGradientFactory(this);
-        PDFPattern myPat = gradientFactory.createGradient(true, colSpace, colors, theBounds,
+        PDFPattern myPat = gradientFactory.createGradient(true, colSpace, colors, bounds,
                 theCoords, matrix);
         currentStream.write(myPat.getColorSpaceOut(fill));
 
@@ -991,6 +977,18 @@ public class PDFGraphics2D extends AbstractGraphics2D implements NativeImageHand
         return gradientColors;
     }
 
+    private List<Double> createGradientBounds(MultipleGradientPaint gradient) {
+        // TODO is the conversion to double necessary?
+        float[] fractions = gradient.getFractions();
+        List<Double> bounds = new java.util.ArrayList<Double>(fractions.length);
+        for (float offset : fractions) {
+            if (0f < offset && offset < 1f) {
+                bounds.add(Double.valueOf(offset));
+            }
+        }
+        return bounds;
+    }
+
     private boolean createPattern(PatternPaint pp, boolean fill) {
         preparePainting();