Author: lehmi
Date: Thu Sep 26 06:08:51 2024
New Revision: 1920942
URL: http://svn.apache.org/viewvc?rev=1920942&view=rev
Log:
PDFBOX-5852: replace Integer with int, add some minor optimizations
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/TriangleBasedShadingContext.java
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
URL:
http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java?rev=1920942&r1=1920941&r2=1920942&view=diff
==============================================================================
---
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
(original)
+++
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
Thu Sep 26 06:08:51 2024
@@ -22,6 +22,7 @@ import java.awt.geom.AffineTransform;
import java.awt.image.ColorModel;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -69,9 +70,14 @@ abstract class GouraudShadingContext ext
}
@Override
- protected Integer[][] calcPixelTableArray(Rectangle deviceBounds) throws
IOException
+ protected int[][] calcPixelTableArray(Rectangle deviceBounds) throws
IOException
{
- Integer[][] array = new Integer[deviceBounds.width +
1][deviceBounds.height + 1];
+ int[][] array = new int[deviceBounds.width + 1][deviceBounds.height +
1];
+ int initialValue = getBackground() != null ? getRgbBackground() : -1;
+ for (int i = 0; i < deviceBounds.width + 1; i++)
+ {
+ Arrays.fill(array[i], initialValue);
+ }
calcPixelTable(triangleList, array, deviceBounds);
return array;
}
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java
URL:
http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java?rev=1920942&r1=1920941&r2=1920942&view=diff
==============================================================================
---
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java
(original)
+++
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java
Thu Sep 26 06:08:51 2024
@@ -20,6 +20,7 @@ import java.awt.Rectangle;
import java.awt.geom.AffineTransform;
import java.awt.image.ColorModel;
import java.io.IOException;
+import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -68,9 +69,14 @@ abstract class PatchMeshesShadingContext
}
@Override
- protected Integer[][] calcPixelTableArray(Rectangle deviceBounds) throws
IOException
+ protected int[][] calcPixelTableArray(Rectangle deviceBounds) throws
IOException
{
- Integer[][] array = new
Integer[deviceBounds.width][deviceBounds.height];
+ int[][] array = new int[deviceBounds.width + 1][deviceBounds.height +
1];
+ int initialValue = getBackground() != null ? getRgbBackground() : -1;
+ for (int i = 0; i < deviceBounds.width + 1; i++)
+ {
+ Arrays.fill(array[i], initialValue);
+ }
for (Patch it : patchList)
{
calcPixelTable(it.listOfTriangles, array, deviceBounds);
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/TriangleBasedShadingContext.java
URL:
http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/TriangleBasedShadingContext.java?rev=1920942&r1=1920941&r2=1920942&view=diff
==============================================================================
---
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/TriangleBasedShadingContext.java
(original)
+++
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/TriangleBasedShadingContext.java
Thu Sep 26 06:08:51 2024
@@ -38,7 +38,7 @@ import org.apache.pdfbox.util.Matrix;
abstract class TriangleBasedShadingContext extends ShadingContext implements
PaintContext
{
// array of pixels within triangles to their RGB color
- private Integer[][] pixelTableArray;
+ private int[][] pixelTableArray;
// offset to be used for the array index
private int xOffset = 0;
@@ -82,7 +82,7 @@ abstract class TriangleBasedShadingConte
*
* @return an array which contains all the points' positions and colors of
one image
*/
- abstract Integer[][] calcPixelTableArray(Rectangle deviceBounds) throws
IOException;
+ abstract int[][] calcPixelTableArray(Rectangle deviceBounds) throws
IOException;
/**
* Get the points from the triangles, calculate their color and add
point-color mappings.
@@ -98,7 +98,7 @@ abstract class TriangleBasedShadingConte
/**
* Get the points from the triangles, calculate their color and add
point-color mappings.
*/
- protected Integer[][] calcPixelTable(List<ShadedTriangle> triangleList,
Integer[][] array,
+ protected int[][] calcPixelTable(List<ShadedTriangle> triangleList,
int[][] array,
Rectangle deviceBounds) throws IOException
{
for (ShadedTriangle tri : triangleList)
@@ -106,11 +106,7 @@ abstract class TriangleBasedShadingConte
int degree = tri.getDeg();
if (degree == 2)
{
- Line line = tri.getLine();
- for (Point p : line.linePoints)
- {
- addValueToArray(p,
evalFunctionAndConvertToRGB(line.calcColor(p)), array);
- }
+ addLinePoints(tri.getLine(), array);
}
else
{
@@ -141,27 +137,23 @@ abstract class TriangleBasedShadingConte
(int) Math.round(tri.corner[1].getY()));
Point p2 = new Point((int) Math.round(tri.corner[2].getX()),
(int) Math.round(tri.corner[2].getY()));
- Line l1 = new Line(p0, p1, tri.color[0], tri.color[1]);
- Line l2 = new Line(p1, p2, tri.color[1], tri.color[2]);
- Line l3 = new Line(p2, p0, tri.color[2], tri.color[0]);
- for (Point p : l1.linePoints)
- {
- addValueToArray(p,
evalFunctionAndConvertToRGB(l1.calcColor(p)), array);
- }
- for (Point p : l2.linePoints)
- {
- addValueToArray(p,
evalFunctionAndConvertToRGB(l2.calcColor(p)), array);
- }
- for (Point p : l3.linePoints)
- {
- addValueToArray(p,
evalFunctionAndConvertToRGB(l3.calcColor(p)), array);
- }
+ addLinePoints(new Line(p0, p1, tri.color[0], tri.color[1]),
array);
+ addLinePoints(new Line(p1, p2, tri.color[1], tri.color[2]),
array);
+ addLinePoints(new Line(p2, p0, tri.color[2], tri.color[0]),
array);
}
}
return array;
}
- private void addValueToArray(Point p, int value, Integer[][] array)
+ private void addLinePoints(Line line, int[][] array) throws IOException
+ {
+ for (Point p : line.linePoints)
+ {
+ addValueToArray(p, evalFunctionAndConvertToRGB(line.calcColor(p)),
array);
+ }
+ }
+
+ private void addValueToArray(Point p, int value, int[][] array)
{
int xIndex = p.x + xOffset;
int yIndex = p.y + yOffset;
@@ -172,14 +164,14 @@ abstract class TriangleBasedShadingConte
array[xIndex][yIndex] = value;
}
- private Integer getValueFromArray(int x, int y)
+ private int getValueFromArray(int x, int y)
{
int xIndex = x + xOffset;
int yIndex = y + yOffset;
if (xIndex < 0 || yIndex < 0 || xIndex >= pixelTableArray.length
|| yIndex >= pixelTableArray[0].length)
{
- return null;
+ return -1;
}
return pixelTableArray[xIndex][yIndex];
}
@@ -225,27 +217,17 @@ abstract class TriangleBasedShadingConte
{
for (int col = 0; col < w; col++)
{
- int value;
- Integer v = getValueFromArray(x + col, y + row);
- if (v != null)
+ int value = getValueFromArray(x + col, y + row);
+ if (value >= 0)
{
- value = v;
- }
- else
- {
- if (getBackground() == null)
- {
- continue;
- }
- value = getRgbBackground();
+ int index = (row * w + col) * 4;
+ data[index] = value & 255;
+ value >>= 8;
+ data[index + 1] = value & 255;
+ value >>= 8;
+ data[index + 2] = value & 255;
+ data[index + 3] = 255;
}
- int index = (row * w + col) * 4;
- data[index] = value & 255;
- value >>= 8;
- data[index + 1] = value & 255;
- value >>= 8;
- data[index + 2] = value & 255;
- data[index + 3] = 255;
}
}
}