You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2021/04/02 08:04:51 UTC
svn commit: r1888292 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading:
PDMeshBasedShadingType.java PDShadingType4.java
PDTriangleBasedShadingType.java TriangleBasedShadingContext.java
Author: tilman
Date: Fri Apr 2 08:04:51 2021
New Revision: 1888292
URL: http://svn.apache.org/viewvc?rev=1888292&view=rev
Log:
PDFBOX-5134: Sonar fix
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDMeshBasedShadingType.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType4.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDTriangleBasedShadingType.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/TriangleBasedShadingContext.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDMeshBasedShadingType.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDMeshBasedShadingType.java?rev=1888292&r1=1888291&r2=1888292&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDMeshBasedShadingType.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDMeshBasedShadingType.java Fri Apr 2 08:04:51 2021
@@ -175,7 +175,8 @@ abstract class PDMeshBasedShadingType ex
{
float[][] color = new float[4][getNumberOfColorComponents()];
Point2D[] points = new Point2D[controlPoints];
- int pStart = 4, cStart = 2;
+ int pStart = 4;
+ int cStart = 2;
if (isFree)
{
pStart = 0;
@@ -236,7 +237,7 @@ abstract class PDMeshBasedShadingType ex
abstract Patch generatePatch(Point2D[] points, float[][] color);
@Override
- abstract public Rectangle2D getBounds(AffineTransform xform, Matrix matrix) throws IOException;
+ public abstract Rectangle2D getBounds(AffineTransform xform, Matrix matrix) throws IOException;
Rectangle2D getBounds(AffineTransform xform, Matrix matrix, int controlPoints)
throws IOException
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType4.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType4.java?rev=1888292&r1=1888291&r2=1888292&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType4.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType4.java Fri Apr 2 08:04:51 2021
@@ -129,7 +129,9 @@ public class PDShadingType4 extends PDTr
boolean eof = false;
while (!eof)
{
- Vertex p0, p1, p2;
+ Vertex p0;
+ Vertex p1;
+ Vertex p2;
Point2D[] ps;
float[][] cs;
int lastIndex;
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDTriangleBasedShadingType.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDTriangleBasedShadingType.java?rev=1888292&r1=1888291&r2=1888292&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDTriangleBasedShadingType.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDTriangleBasedShadingType.java Fri Apr 2 08:04:51 2021
@@ -41,7 +41,7 @@ abstract class PDTriangleBasedShadingTyp
// value: same as the value of Range
private COSArray decode = null;
- private static final Log LOG = LogFactory.getLog(TriangleBasedShadingContext.class);
+ private static final Log LOG = LogFactory.getLog(PDTriangleBasedShadingType.class);
private int bitsPerCoordinate = -1;
private int bitsPerColorComponent = -1;
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/TriangleBasedShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/TriangleBasedShadingContext.java?rev=1888292&r1=1888291&r2=1888292&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/TriangleBasedShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/TriangleBasedShadingContext.java Fri Apr 2 08:04:51 2021
@@ -25,8 +25,7 @@ import java.awt.image.WritableRaster;
import java.io.IOException;
import java.util.List;
import java.util.Map;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+
import org.apache.pdfbox.util.Matrix;
/**
@@ -95,6 +94,111 @@ abstract class TriangleBasedShadingConte
boundary[1] = Math.min(boundary[1], deviceBounds.x + deviceBounds.width);
boundary[2] = Math.max(boundary[2], deviceBounds.y);
boundary[3] = Math.min(boundary[3], deviceBounds.y + deviceBounds.height);
+
+// // https://github.com/mozilla/pdf.js/blob/master/src/display/pattern_helper.js
+// // drawTriangle
+// // Very basic Gouraud-shaded triangle rasterization algorithm.
+// // rev 398e6ac Yury Delendik
+// float x1 = (float) tri.corner[0].getX();
+// float y1 = (float) tri.corner[0].getY();
+// float x2 = (float) tri.corner[1].getX();
+// float y2 = (float) tri.corner[1].getY();
+// float x3 = (float) tri.corner[2].getX();
+// float y3 = (float) tri.corner[2].getY();
+// float tmpd;
+// float[] tmpf;
+// float[] c1 = tri.color[0];
+// float[] c2 = tri.color[1];
+// float[] c3 = tri.color[2];
+// if (y1 > y2)
+// {
+// tmpd = x1;
+// x1 = x2;
+// x2 = tmpd;
+// tmpd = y1;
+// y1 = y2;
+// y2 = tmpd;
+// tmpf = c1;
+// c1 = c2;
+// c2 = tmpf;
+// }
+// if (y2 > y3)
+// {
+// tmpd = x2;
+// x2 = x3;
+// x3 = tmpd;
+// tmpd = y2;
+// y2 = y3;
+// y3 = tmpd;
+// tmpf = c2;
+// c2 = c3;
+// c3 = tmpf;
+// }
+// if (y1 > y2)
+// {
+// tmpd = x1;
+// x1 = x2;
+// x2 = tmpd;
+// tmpd = y1;
+// y1 = y2;
+// y2 = tmpd;
+// tmpf = c1;
+// c1 = c2;
+// c2 = tmpf;
+// }
+// if (y1 >= y3)
+// {
+// //TODO needed? we're in degree 3
+// continue;
+// }
+//
+// float[] ca = new float[numberOfColorComponents];
+// float[] cb = new float[numberOfColorComponents];
+// float[] cres = new float[numberOfColorComponents];
+// for (int y = boundary[2]; y <= boundary[3]; y++)
+// {
+// float k, xa, xb;
+// if (y < y2)
+// {
+// k = y < y1 ? 0 : y1 == y2 ? 1 : (y1 - y) / (y1 - y2);
+// xa = x1 - (x1 - x2) * k;
+// for (int i = 0; i < numberOfColorComponents; i++)
+// {
+// ca[i] = c1[i] - (c1[i] - c2[i]) * k;
+// }
+// }
+// else
+// {
+// k = y > y3 ? 1 : y2 == y3 ? 0 : (y2 - y) / (y2 - y3);
+// xa = x2 - (x2 - x3) * k;
+// for (int i = 0; i < numberOfColorComponents; i++)
+// {
+// ca[i] = c2[i] - (c2[i] - c3[i]) * k;
+// }
+// }
+// k = (y < y1 ? 0 : y > y3 ? 1 : (y1 - y) / (y1 - y3));
+// xb = x1 - (x1 - x3) * k;
+// for (int i = 0; i < numberOfColorComponents; i++)
+// {
+// cb[i] = c1[i] - (c1[i] - c3[i]) * k;
+// }
+// int x1r = Math.round(Math.min(xa, xb));
+// int x2r = Math.round(Math.max(xa, xb));
+// x1r = Math.max(x1r, boundary[0]);
+// x2r = Math.min(x2r, boundary[1]);
+// float div = xa - xb;
+// for (int x = x1r; x <= x2r; ++x)
+// {
+// k = (xa - x) / div;
+// k = k < 0 ? 0 : k > 1 ? 1 : k;
+// for (int i = 0; i < numberOfColorComponents; i++)
+// {
+// cres[i] = ca[i] - (ca[i] - cb[i]) * k;
+// }
+// map.put(new IntPoint(x, y), evalFunctionAndConvertToRGB(cres));
+// }
+// }
+
for (int x = boundary[0]; x <= boundary[1]; x++)
{
for (int y = boundary[2]; y <= boundary[3]; y++)