Переглянути джерело

Factorized creation of gradient bounds


git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/FOP-2393_gradient-rendering@1609518 13f79535-47bb-0310-9956-ffa450edef68
tags/fop-2_0
Vincent Hennebert 10 роки тому
джерело
коміт
cf24cc5673
1 змінених файлів з 16 додано та 18 видалено
  1. 16
    18
      src/java/org/apache/fop/svg/PDFGraphics2D.java

+ 16
- 18
src/java/org/apache/fop/svg/PDFGraphics2D.java Переглянути файл

@@ -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();


Завантаження…
Відмінити
Зберегти