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 2014/08/09 17:11:35 UTC
svn commit: r1616964 [1/2] -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/
Author: tilman
Date: Sat Aug 9 15:11:34 2014
New Revision: 1616964
URL: http://svn.apache.org/r1616964
Log:
PDFBOX-1915: reformat the package
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingPaint.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/CoonsPatch.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/CubicBezierCurve.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Line.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShading.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType1.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType2.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType3.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/PDShadingType5.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/Patch.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingPaint.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/ShadedTriangle.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/ShadingContext.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/TensorPatch.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/TriangleBasedShadingContext.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type1ShadingContext.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type1ShadingPaint.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingContext.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingPaint.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingContext.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingPaint.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type6ShadingContext.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type6ShadingPaint.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type7ShadingContext.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type7ShadingPaint.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Vertex.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/package.html
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java?rev=1616964&r1=1616963&r2=1616964&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java Sat Aug 9 15:11:34 2014
@@ -33,12 +33,12 @@ import org.apache.pdfbox.util.Matrix;
/**
* AWT PaintContext for axial shading.
- *
+ *
* Performance improvement done as part of GSoC2014, Tilman Hausherr is the
* mentor.
*
* @author Andreas Lehmkühler
- * @author Shaola Ren
+ * @author Shaola Ren
*
*/
public class AxialShadingContext extends ShadingContext implements PaintContext
@@ -56,21 +56,22 @@ public class AxialShadingContext extends
private final double y1y0;
private final float d1d0;
private double denom;
-
+
private final double axialLength;
private final int[] colorTable;
/**
* Constructor creates an instance to be used for fill operations.
+ *
* @param shading the shading type to be used
* @param colorModel the color model to be used
* @param xform transformation for user to device space
* @param ctm the transformation matrix
* @param pageHeight height of the current page
- * @param dBounds device bounds
+ * @param dBounds device bounds
*/
public AxialShadingContext(PDShadingType2 shading, ColorModel colorModel, AffineTransform xform,
- Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
+ Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
{
super(shading, colorModel, xform, ctm, pageHeight, dBounds);
this.axialShadingType = shading;
@@ -82,7 +83,7 @@ public class AxialShadingContext extends
ctm.createAffineTransform().transform(coords, 0, coords, 0, 2);
}
xform.transform(coords, 0, coords, 0, 2);
-
+
// domain values
if (shading.getDomain() != null)
{
@@ -91,7 +92,10 @@ public class AxialShadingContext extends
else
{
// set default values
- domain = new float[] { 0, 1 };
+ domain = new float[]
+ {
+ 0, 1
+ };
}
// extend values
COSArray extendValues = shading.getExtend();
@@ -104,7 +108,10 @@ public class AxialShadingContext extends
else
{
// set default values
- extend = new boolean[] { false, false };
+ extend = new boolean[]
+ {
+ false, false
+ };
}
// calculate some constants to be used in getRaster
x1x0 = coords[2] - coords[0];
@@ -122,7 +129,7 @@ public class AxialShadingContext extends
}
colorTable = calcColorTable();
}
-
+
/**
* Calculate the color on the axial line and store them in an array.
*
@@ -148,7 +155,7 @@ public class AxialShadingContext extends
{
for (int i = 0; i <= axialLength; i++)
{
- float t = domain[0] + d1d0 * i / (float)axialLength;
+ float t = domain[0] + d1d0 * i / (float) axialLength;
try
{
float[] values = axialShadingType.evalFunction(t);
@@ -162,9 +169,9 @@ public class AxialShadingContext extends
}
return map;
}
-
+
@Override
- public void dispose()
+ public void dispose()
{
outputColorModel = null;
shadingColorSpace = null;
@@ -172,13 +179,13 @@ public class AxialShadingContext extends
}
@Override
- public ColorModel getColorModel()
+ public ColorModel getColorModel()
{
return outputColorModel;
}
@Override
- public Raster getRaster(int x, int y, int w, int h)
+ public Raster getRaster(int x, int y, int w, int h)
{
// create writable raster
WritableRaster raster = getColorModel().createCompatibleWritableRaster(w, h);
@@ -204,7 +211,7 @@ public class AxialShadingContext extends
continue;
}
}
-
+
useBackground = false;
double inputValue = x1x0 * (currentX - coords[0]);
inputValue += y1y0 * (currentY - coords[1]);
@@ -290,27 +297,30 @@ public class AxialShadingContext extends
/**
* Returns the coords values.
+ *
* @return the coords values as array
*/
- public float[] getCoords()
+ public float[] getCoords()
{
return coords;
}
-
+
/**
* Returns the domain values.
+ *
* @return the domain values as array
*/
- public float[] getDomain()
+ public float[] getDomain()
{
return domain;
}
-
+
/**
* Returns the extend values.
+ *
* @return the extend values as array
*/
- public boolean[] getExtend()
+ public boolean[] getExtend()
{
return extend;
}
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingPaint.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingPaint.java?rev=1616964&r1=1616963&r2=1616964&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingPaint.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingPaint.java Sat Aug 9 15:11:34 2014
@@ -31,6 +31,7 @@ import org.apache.pdfbox.util.Matrix;
/**
* AWT Paint for axial shading.
+ *
* @author Andreas Lehmkühler
*/
public class AxialShadingPaint implements Paint
@@ -40,9 +41,10 @@ public class AxialShadingPaint implement
private PDShadingType2 shading;
private Matrix ctm;
private int pageHeight;
-
+
/**
* Constructor.
+ *
* @param shadingType2 the shading resources
* @param ctm current transformation matrix
* @param pageHeight size of the current page
@@ -55,15 +57,15 @@ public class AxialShadingPaint implement
}
@Override
- public int getTransparency()
+ public int getTransparency()
{
return 0;
}
@Override
public PaintContext createContext(ColorModel cm, Rectangle deviceBounds,
- Rectangle2D userBounds, AffineTransform xform,
- RenderingHints hints)
+ Rectangle2D userBounds, AffineTransform xform,
+ RenderingHints hints)
{
try
{
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/CoonsPatch.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/CoonsPatch.java?rev=1616964&r1=1616963&r2=1616964&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/CoonsPatch.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/CoonsPatch.java Sat Aug 9 15:11:34 2014
@@ -13,23 +13,24 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.pdfbox.pdmodel.graphics.shading;
import java.awt.geom.Point2D;
import java.util.ArrayList;
/**
- * This class is used to describe a patch for type 6 shading.
- * This was done as part of GSoC2014, Tilman Hausherr is the mentor.
+ * This class is used to describe a patch for type 6 shading. This was done as
+ * part of GSoC2014, Tilman Hausherr is the mentor.
+ *
* @author Shaola Ren
*/
class CoonsPatch extends Patch
-{
+{
/**
* Constructor of a patch for type 6 shading.
+ *
* @param points 12 control points
- * @param color 4 corner colors
+ * @param color 4 corner colors
*/
protected CoonsPatch(Point2D[] points, float[][] color)
{
@@ -38,39 +39,42 @@ class CoonsPatch extends Patch
level = calcLevel();
listOfTriangles = getTriangles();
}
-
+
// adjust the 12 control points to 4 groups, each group defines one edge of a patch
private Point2D[][] reshapeControlPoints(Point2D[] points)
{
Point2D[][] fourRows = new Point2D[4][4];
fourRows[2] = new Point2D[]
- {
- points[0], points[1], points[2], points[3]
- }; // d1
+ {
+ points[0], points[1], points[2], points[3]
+ }; // d1
fourRows[1] = new Point2D[]
- {
- points[3], points[4], points[5], points[6]
- }; // c2
+ {
+ points[3], points[4], points[5], points[6]
+ }; // c2
fourRows[3] = new Point2D[]
- {
- points[9], points[8], points[7], points[6]
- }; // d2
+ {
+ points[9], points[8], points[7], points[6]
+ }; // d2
fourRows[0] = new Point2D[]
- {
- points[0], points[11], points[10], points[9]
- }; // c1
+ {
+ points[0], points[11], points[10], points[9]
+ }; // c1
return fourRows;
}
-
+
// calculate the dividing level from control points
private int[] calcLevel()
{
- int[] l = {4, 4};
+ int[] l =
+ {
+ 4, 4
+ };
// if two opposite edges are both lines, there is a possibility to reduce the dividing level
if (isEdgeALine(controlPoints[0]) & isEdgeALine(controlPoints[1]))
{
- double lc1 = getLen(controlPoints[0][0], controlPoints[0][3]),
- lc2 = getLen(controlPoints[1][0], controlPoints[1][3]);
+ double lc1 = getLen(controlPoints[0][0], controlPoints[0][3]),
+ lc2 = getLen(controlPoints[1][0], controlPoints[1][3]);
// determine the dividing level by the lengths of edges
if (lc1 > 800 || lc2 > 800)
{
@@ -88,12 +92,12 @@ class CoonsPatch extends Patch
l[0] = 1;
}
}
-
+
// the other two opposite edges
if (isEdgeALine(controlPoints[2]) & isEdgeALine(controlPoints[3]))
{
- double ld1 = getLen(controlPoints[2][0], controlPoints[2][3]),
- ld2 = getLen(controlPoints[3][0], controlPoints[3][3]);
+ double ld1 = getLen(controlPoints[2][0], controlPoints[2][3]),
+ ld2 = getLen(controlPoints[3][0], controlPoints[3][3]);
if (ld1 > 800 || ld2 > 800)
{
}
@@ -124,13 +128,13 @@ class CoonsPatch extends Patch
CoordinateColorPair[][] patchCC = getPatchCoordinatesColor(eC1, eC2, eD1, eD2);
return getShadedTriangles(patchCC);
}
-
+
@Override
protected Point2D[] getFlag1Edge()
{
return controlPoints[1].clone();
}
-
+
@Override
protected Point2D[] getFlag2Edge()
{
@@ -141,7 +145,7 @@ class CoonsPatch extends Patch
implicitEdge[3] = controlPoints[3][0];
return implicitEdge;
}
-
+
@Override
protected Point2D[] getFlag3Edge()
{
@@ -152,60 +156,60 @@ class CoonsPatch extends Patch
implicitEdge[3] = controlPoints[0][0];
return implicitEdge;
}
-
+
/*
- dividing a patch into a grid, return a matrix of the coordinate and color at the crossing points of the grid,
- the rule to calculate the coordinate is defined in page 195 of PDF32000_2008.pdf, the rule to calculate the
- cooresponding color is bilinear interpolation
- */
+ dividing a patch into a grid, return a matrix of the coordinate and color at the crossing points of the grid,
+ the rule to calculate the coordinate is defined in page 195 of PDF32000_2008.pdf, the rule to calculate the
+ cooresponding color is bilinear interpolation
+ */
private CoordinateColorPair[][] getPatchCoordinatesColor(CubicBezierCurve C1, CubicBezierCurve C2, CubicBezierCurve D1, CubicBezierCurve D2)
{
Point2D[] curveC1 = C1.getCubicBezierCurve();
Point2D[] curveC2 = C2.getCubicBezierCurve();
Point2D[] curveD1 = D1.getCubicBezierCurve();
Point2D[] curveD2 = D2.getCubicBezierCurve();
-
+
int numberOfColorComponents = cornerColor[0].length;
int szV = curveD1.length;
int szU = curveC1.length;
-
+
CoordinateColorPair[][] patchCC = new CoordinateColorPair[szV][szU];
-
+
double stepV = (double) 1 / (szV - 1);
double stepU = (double) 1 / (szU - 1);
- double v = - stepV;
- for(int i = 0; i < szV; i++)
+ double v = -stepV;
+ for (int i = 0; i < szV; i++)
{
// v and u are the assistant parameters
v += stepV;
- double u = - stepU;
- for(int j = 0; j < szU; j++)
+ double u = -stepU;
+ for (int j = 0; j < szU; j++)
{
u += stepU;
double scx = (1 - v) * curveC1[j].getX() + v * curveC2[j].getX();
double scy = (1 - v) * curveC1[j].getY() + v * curveC2[j].getY();
double sdx = (1 - u) * curveD1[i].getX() + u * curveD2[i].getX();
double sdy = (1 - u) * curveD1[i].getY() + u * curveD2[i].getY();
- double sbx = (1 - v) * ((1 - u) * controlPoints[0][0].getX() + u * controlPoints[0][3].getX())
+ double sbx = (1 - v) * ((1 - u) * controlPoints[0][0].getX() + u * controlPoints[0][3].getX())
+ v * ((1 - u) * controlPoints[1][0].getX() + u * controlPoints[1][3].getX());
- double sby = (1 - v) * ((1 - u) * controlPoints[0][0].getY() + u * controlPoints[0][3].getY())
+ double sby = (1 - v) * ((1 - u) * controlPoints[0][0].getY() + u * controlPoints[0][3].getY())
+ v * ((1 - u) * controlPoints[1][0].getY() + u * controlPoints[1][3].getY());
-
+
double sx = scx + sdx - sbx;
double sy = scy + sdy - sby;
// the above code in this for loop defines the patch surface (coordinates)
-
+
Point2D tmpC = new Point2D.Double(sx, sy);
-
+
float[] paramSC = new float[numberOfColorComponents];
- for(int ci = 0; ci < numberOfColorComponents; ci++)
+ for (int ci = 0; ci < numberOfColorComponents; ci++)
{
- paramSC[ci] = (float) ((1 - v) * ((1 - u) * cornerColor[0][ci] + u * cornerColor[3][ci])
+ paramSC[ci] = (float) ((1 - v) * ((1 - u) * cornerColor[0][ci] + u * cornerColor[3][ci])
+ v * ((1 - u) * cornerColor[1][ci] + u * cornerColor[2][ci])); // bilinear interpolation
}
patchCC[i][j] = new CoordinateColorPair(tmpC, paramSC);
}
}
return patchCC;
- }
+ }
}
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/CubicBezierCurve.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/CubicBezierCurve.java?rev=1616964&r1=1616963&r2=1616964&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/CubicBezierCurve.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/CubicBezierCurve.java Sat Aug 9 15:11:34 2014
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.pdfbox.pdmodel.graphics.shading;
import java.awt.geom.Point2D;
@@ -21,21 +20,23 @@ import java.awt.geom.Point2D;
/**
* This class is used to describe the edge of each patch for type 6 shading.
* This was done as part of GSoC2014, Tilman Hausherr is the mentor.
+ *
* @author Shaola Ren
*/
-
class CubicBezierCurve
{
protected final Point2D[] controlPoints;
-
+
private final int level;
private final Point2D[] curve;
-
+
/**
* Constructor of CubicBezierCurve
+ *
* @param ctrlPnts, 4 control points [p0, p1, p2, p3]
- * @param l, dividing level, if l = 0, one cubic Bezier curve is divided into 2^0 = 1 segments,
- * if l = n, one cubic Bezier curve is divided into 2^n segments
+ * @param l, dividing level, if l = 0, one cubic Bezier curve is divided
+ * into 2^0 = 1 segments, if l = n, one cubic Bezier curve is divided into
+ * 2^n segments
*/
public CubicBezierCurve(Point2D[] ctrlPnts, int l)
{
@@ -43,16 +44,17 @@ class CubicBezierCurve
level = l;
curve = getPoints(level);
}
-
+
/**
* Get level parameter
- * @return level
+ *
+ * @return level
*/
public int getLevel()
{
return level;
}
-
+
// calculate sampled points on the cubic Bezier curve defined by the 4 given control points
private Point2D[] getPoints(int l)
{
@@ -63,32 +65,33 @@ class CubicBezierCurve
int sz = (1 << l) + 1;
Point2D[] res = new Point2D[sz];
double step = (double) 1 / (sz - 1);
- double t = - step;
- for(int i = 0; i < sz; i++)
+ double t = -step;
+ for (int i = 0; i < sz; i++)
{
t += step;
- double tmpX = (1 - t) * (1 - t)*( 1 - t) * controlPoints[0].getX() +
- 3 * t * (1 - t) * (1 - t) * controlPoints[1].getX() +
- 3 * t * t * (1 - t) * controlPoints[2].getX() +
- t * t * t * controlPoints[3].getX();
- double tmpY = (1 - t) * (1 - t)*( 1 - t) * controlPoints[0].getY() +
- 3 * t * (1 - t) * (1 - t) * controlPoints[1].getY() +
- 3 * t * t * (1 - t) * controlPoints[2].getY() +
- t * t * t * controlPoints[3].getY();
+ double tmpX = (1 - t) * (1 - t) * (1 - t) * controlPoints[0].getX()
+ + 3 * t * (1 - t) * (1 - t) * controlPoints[1].getX()
+ + 3 * t * t * (1 - t) * controlPoints[2].getX()
+ + t * t * t * controlPoints[3].getX();
+ double tmpY = (1 - t) * (1 - t) * (1 - t) * controlPoints[0].getY()
+ + 3 * t * (1 - t) * (1 - t) * controlPoints[1].getY()
+ + 3 * t * t * (1 - t) * controlPoints[2].getY()
+ + t * t * t * controlPoints[3].getY();
res[i] = new Point2D.Double(tmpX, tmpY);
}
return res;
}
-
+
/**
* Get sampled points of this cubic Bezier curve.
+ *
* @return sampled points
*/
public Point2D[] getCubicBezierCurve()
{
return curve;
}
-
+
@Override
public String toString()
{
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java?rev=1616964&r1=1616963&r2=1616964&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java Sat Aug 9 15:11:34 2014
@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.pdfbox.pdmodel.graphics.shading;
import java.awt.PaintContext;
@@ -37,6 +36,7 @@ import org.apache.pdfbox.util.Matrix;
/**
* Shades Gouraud triangles for Type4ShadingContext and Type5ShadingContext.
+ *
* @author Andreas Lehmkühler
* @author Tilman Hausherr
* @author Shaola Ren
@@ -45,13 +45,19 @@ abstract class GouraudShadingContext ext
{
private static final Log LOG = LogFactory.getLog(GouraudShadingContext.class);
- /** number of color components. */
+ /**
+ * number of color components.
+ */
protected int numberOfColorComponents;
- /** triangle list. */
+ /**
+ * triangle list.
+ */
protected ArrayList<ShadedTriangle> triangleList;
- /** background values.*/
+ /**
+ * background values.
+ */
protected float[] background;
protected int rgbBackground;
@@ -59,6 +65,7 @@ abstract class GouraudShadingContext ext
/**
* Constructor creates an instance to be used for fill operations.
+ *
* @param shading the shading type to be used
* @param colorModel the color model to be used
* @param xform transformation for user to device space
@@ -67,7 +74,7 @@ abstract class GouraudShadingContext ext
* @throws IOException if something went wrong
*/
protected GouraudShadingContext(PDShading shading, ColorModel colorModel, AffineTransform xform,
- Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
+ Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
{
super(shading, colorModel, xform, ctm, pageHeight, dBounds);
triangleList = new ArrayList<ShadedTriangle>();
@@ -83,6 +90,7 @@ abstract class GouraudShadingContext ext
/**
* Read a vertex from the bit input stream performs interpolations.
+ *
* @param input bit input stream
* @param flag the flag or any value if not relevant
* @param maxSrcCoord max value for source coordinate (2^bits-1)
@@ -94,8 +102,8 @@ abstract class GouraudShadingContext ext
* @throws IOException if something went wrong
*/
protected Vertex readVertex(ImageInputStream input, long maxSrcCoord, long maxSrcColor,
- PDRange rangeX, PDRange rangeY, PDRange[] colRangeTab, Matrix ctm,
- AffineTransform xform) throws IOException
+ PDRange rangeX, PDRange rangeY, PDRange[] colRangeTab, Matrix ctm,
+ AffineTransform xform) throws IOException
{
float[] colorComponentTab = new float[numberOfColorComponents];
long x = input.readBits(bitsPerCoordinate);
@@ -105,7 +113,7 @@ abstract class GouraudShadingContext ext
LOG.debug("coord: " + String.format("[%06X,%06X] -> [%f,%f]", x, y, dstX, dstY));
Point2D tmp = new Point2D.Double(dstX, dstY);
transformPoint(tmp, ctm, xform);
-
+
for (int n = 0; n < numberOfColorComponents; ++n)
{
int color = (int) input.readBits(bitsPerColorComponent);
@@ -115,7 +123,7 @@ abstract class GouraudShadingContext ext
}
return new Vertex(tmp, colorComponentTab);
}
-
+
protected HashMap<Point, Integer> calcPixelTable()
{
HashMap<Point, Integer> map = new HashMap<Point, Integer>();
@@ -139,6 +147,7 @@ abstract class GouraudShadingContext ext
/**
* Calculate the interpolation, see p.345 pdf spec 1.7.
+ *
* @param src src value
* @param srcMax max src value (2^bits-1)
* @param dstMin min dst value
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Line.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Line.java?rev=1616964&r1=1616963&r2=1616964&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Line.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Line.java Sat Aug 9 15:11:34 2014
@@ -13,15 +13,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.pdfbox.pdmodel.graphics.shading;
import java.awt.Point;
import java.util.HashSet;
/**
- * This class describes a rasterized line.
- * This was done as part of GSoC2014, Tilman Hausherr is the mentor.
+ * This class describes a rasterized line. This was done as part of GSoC2014,
+ * Tilman Hausherr is the mentor.
+ *
* @author Shaola Ren
*/
class Line
@@ -30,11 +30,12 @@ class Line
private final Point point1;
private final float[] color0;
private final float[] color1;
-
+
protected final HashSet<Point> linePoints; // all the points in this rasterized line
-
+
/**
* Constructor of class Line.
+ *
* @param p0 one end of a line
* @param p1 the other end of the line
* @param c0 color of point p0
@@ -48,24 +49,27 @@ class Line
color1 = c1.clone();
linePoints = calcLine(point0.x, point0.y, point1.x, point1.y);
}
-
+
/**
* Calculate the points of a line with Bresenham's line algorithm
- * <a href="http://en.wikipedia.org/wiki/Bresenham's_line_algorithm">Bresenham's line algorithm</a>
+ * <a
+ * href="http://en.wikipedia.org/wiki/Bresenham's_line_algorithm">Bresenham's
+ * line algorithm</a>
+ *
* @param x0 coordinate
* @param y0 coordinate
* @param x1 coordinate
* @param y1 coordinate
* @return all the points on the rasterized line from (x0, y0) to (x1, y1)
*/
- private HashSet<Point> calcLine(int x0, int y0, int x1, int y1)
+ private HashSet<Point> calcLine(int x0, int y0, int x1, int y1)
{
HashSet<Point> points = new HashSet<Point>(3);
int dx = (int) Math.round(Math.abs(x1 - x0));
int dy = (int) Math.round(Math.abs(y1 - y0));
int sx = x0 < x1 ? 1 : -1;
int sy = y0 < y1 ? 1 : -1;
- int err = dx - dy;
+ int err = dx - dy;
while (true)
{
points.add(new Point(x0, y0));
@@ -87,9 +91,11 @@ class Line
}
return points;
}
-
+
/**
- * Calculate the color of a point on a rasterized line by linear interpolation.
+ * Calculate the color of a point on a rasterized line by linear
+ * interpolation.
+ *
* @param p target point, p should always be contained in linePoints
* @return color
*/
@@ -106,8 +112,8 @@ class Line
float l = point1.y - point0.y;
for (int i = 0; i < numberOfColorComponents; i++)
{
- pc[i] = (float) (color0[i] * (point1.y - p.y) / l +
- color1[i] * (p.y - point0.y) / l);
+ pc[i] = (float) (color0[i] * (point1.y - p.y) / l
+ + color1[i] * (p.y - point0.y) / l);
}
}
else
@@ -115,8 +121,8 @@ class Line
float l = point1.x - point0.x;
for (int i = 0; i < numberOfColorComponents; i++)
{
- pc[i] = (float) (color0[i] * (point1.x - p.x) / l +
- color1[i] * (p.x - point0.x) / l);
+ pc[i] = (float) (color0[i] * (point1.x - p.x) / l
+ + color1[i] * (p.x - point0.x) / l);
}
}
return pc;
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShading.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShading.java?rev=1616964&r1=1616963&r2=1616964&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShading.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShading.java Sat Aug 9 15:11:34 2014
@@ -31,6 +31,7 @@ import org.apache.pdfbox.util.Matrix;
/**
* A Shading Resource.
+ *
* @author Andreas Lehmkühler
*/
public abstract class PDShading implements COSObjectable
@@ -41,28 +42,42 @@ public abstract class PDShading implemen
private PDColorSpace colorSpace = null;
private PDFunction function = null;
private PDFunction[] functionArray = null;
-
- /** shading type 1 = function based shading. */
+
+ /**
+ * shading type 1 = function based shading.
+ */
public static final int SHADING_TYPE1 = 1;
- /** shading type 2 = axial shading. */
+ /**
+ * shading type 2 = axial shading.
+ */
public static final int SHADING_TYPE2 = 2;
- /** shading type 3 = radial shading. */
+ /**
+ * shading type 3 = radial shading.
+ */
public static final int SHADING_TYPE3 = 3;
- /** shading type 4 = Free-Form Gouraud-Shaded Triangle Meshes. */
+ /**
+ * shading type 4 = Free-Form Gouraud-Shaded Triangle Meshes.
+ */
public static final int SHADING_TYPE4 = 4;
- /** shading type 5 = Lattice-Form Gouraud-Shaded Triangle Meshes. */
+ /**
+ * shading type 5 = Lattice-Form Gouraud-Shaded Triangle Meshes.
+ */
public static final int SHADING_TYPE5 = 5;
- /** shading type 6 = Coons Patch Meshes. */
+ /**
+ * shading type 6 = Coons Patch Meshes.
+ */
public static final int SHADING_TYPE6 = 6;
- /** shading type 7 = Tensor-Product Patch Meshes. */
+ /**
+ * shading type 7 = Tensor-Product Patch Meshes.
+ */
public static final int SHADING_TYPE7 = 7;
-
+
/**
* Default constructor.
*/
@@ -73,6 +88,7 @@ public abstract class PDShading implemen
/**
* Constructor using the given shading dictionary.
+ *
* @param shadingDictionary the dictionary for this shading
*/
public PDShading(COSDictionary shadingDictionary)
@@ -82,6 +98,7 @@ public abstract class PDShading implemen
/**
* This will get the underlying dictionary.
+ *
* @return the dictionary for this shading
*/
public COSDictionary getCOSDictionary()
@@ -91,6 +108,7 @@ public abstract class PDShading implemen
/**
* Convert this standard java object to a COS object.
+ *
* @return the cos object that matches this Java object
*/
public COSBase getCOSObject()
@@ -100,6 +118,7 @@ public abstract class PDShading implemen
/**
* This will return the type.
+ *
* @return the type of object that this is
*/
public String getType()
@@ -109,6 +128,7 @@ public abstract class PDShading implemen
/**
* This will set the shading type.
+ *
* @param shadingType the new shading type
*/
public void setShadingType(int shadingType)
@@ -118,12 +138,14 @@ public abstract class PDShading implemen
/**
* This will return the shading type.
+ *
* @return the shading typ
*/
public abstract int getShadingType();
/**
* This will set the background.
+ *
* @param newBackground the new background
*/
public void setBackground(COSArray newBackground)
@@ -134,31 +156,33 @@ public abstract class PDShading implemen
/**
* This will return the background.
+ *
* @return the background
*/
public COSArray getBackground()
{
- if (background == null)
+ if (background == null)
{
- background = (COSArray)dictionary.getDictionaryObject( COSName.BACKGROUND );
+ background = (COSArray) dictionary.getDictionaryObject(COSName.BACKGROUND);
}
return background;
}
/**
* An array of four numbers in the form coordinate system (see below),
- * giving the coordinates of the left, bottom, right, and top edges, respectively,
- * of the shading's bounding box.
+ * giving the coordinates of the left, bottom, right, and top edges,
+ * respectively, of the shading's bounding box.
+ *
* @return the BBox of the form
*/
public PDRectangle getBBox()
{
- if (bBox == null)
+ if (bBox == null)
{
- COSArray array = (COSArray)dictionary.getDictionaryObject( COSName.BBOX );
- if( array != null )
+ COSArray array = (COSArray) dictionary.getDictionaryObject(COSName.BBOX);
+ if (array != null)
{
- bBox = new PDRectangle( array );
+ bBox = new PDRectangle(array);
}
}
return bBox;
@@ -166,23 +190,25 @@ public abstract class PDShading implemen
/**
* This will set the BBox (bounding box) for this Shading.
+ *
* @param newBBox the new BBox
*/
public void setBBox(PDRectangle newBBox)
{
bBox = newBBox;
- if( bBox == null )
+ if (bBox == null)
{
- dictionary.removeItem( COSName.BBOX );
+ dictionary.removeItem(COSName.BBOX);
}
else
{
- dictionary.setItem( COSName.BBOX, bBox.getCOSArray() );
+ dictionary.setItem(COSName.BBOX, bBox.getCOSArray());
}
}
/**
* This will set the AntiAlias value.
+ *
* @param antiAlias the new AntiAlias value
*/
public void setAntiAlias(boolean antiAlias)
@@ -192,23 +218,25 @@ public abstract class PDShading implemen
/**
* This will return the AntiAlias value.
+ *
* @return the AntiAlias value
*/
public boolean getAntiAlias()
{
- return dictionary.getBoolean( COSName.ANTI_ALIAS, false );
+ return dictionary.getBoolean(COSName.ANTI_ALIAS, false);
}
/**
* This will get the color space or null if none exists.
+ *
* @return the color space for the shading
* @throws IOException if there is an error getting the color space
*/
public PDColorSpace getColorSpace() throws IOException
{
- if( colorSpace == null )
+ if (colorSpace == null)
{
- COSBase colorSpaceDictionary = dictionary.getDictionaryObject( COSName.CS, COSName.COLORSPACE );
+ COSBase colorSpaceDictionary = dictionary.getDictionaryObject(COSName.CS, COSName.COLORSPACE);
colorSpace = PDColorSpace.create(colorSpaceDictionary);
}
return colorSpace;
@@ -216,23 +244,25 @@ public abstract class PDShading implemen
/**
* This will set the color space for the shading.
+ *
* @param colorSpace the color space
*/
- public void setColorSpace( PDColorSpace colorSpace )
+ public void setColorSpace(PDColorSpace colorSpace)
{
this.colorSpace = colorSpace;
- if( colorSpace != null )
+ if (colorSpace != null)
{
- dictionary.setItem( COSName.COLORSPACE, colorSpace.getCOSObject() );
+ dictionary.setItem(COSName.COLORSPACE, colorSpace.getCOSObject());
}
else
{
- dictionary.removeItem( COSName.COLORSPACE );
+ dictionary.removeItem(COSName.COLORSPACE);
}
}
/**
* Create the correct PD Model shading based on the COS base shading.
+ *
* @param resourceDictionary the COS shading dictionary
* @return the newly created shading resources object
* @throws IOException if we are unable to create the PDShading object
@@ -240,10 +270,10 @@ public abstract class PDShading implemen
public static PDShading create(COSDictionary resourceDictionary) throws IOException
{
PDShading shading = null;
- int shadingType = resourceDictionary.getInt( COSName.SHADING_TYPE, 0 );
- switch (shadingType)
+ int shadingType = resourceDictionary.getInt(COSName.SHADING_TYPE, 0);
+ switch (shadingType)
{
- case SHADING_TYPE1:
+ case SHADING_TYPE1:
shading = new PDShadingType1(resourceDictionary);
break;
case SHADING_TYPE2:
@@ -265,13 +295,14 @@ public abstract class PDShading implemen
shading = new PDShadingType7(resourceDictionary);
break;
default:
- throw new IOException( "Error: Unknown shading type " + shadingType );
+ throw new IOException("Error: Unknown shading type " + shadingType);
}
return shading;
}
/**
* This will set the function for the color conversion.
+ *
* @param newFunction the new function
*/
public void setFunction(PDFunction newFunction)
@@ -290,6 +321,7 @@ public abstract class PDShading implemen
/**
* This will set the functions COSArray for the color conversion.
+ *
* @param newFunctions the new COSArray containing all functions
*/
public void setFunction(COSArray newFunctions)
@@ -308,6 +340,7 @@ public abstract class PDShading implemen
/**
* This will return the function used to convert the color values.
+ *
* @return the function
* @exception IOException if we are unable to create the PDFunction object
*/
@@ -326,7 +359,8 @@ public abstract class PDShading implemen
/**
* Provide the function(s) of the shading dictionary as array.
- * @return an array containing the function(s)
+ *
+ * @return an array containing the function(s)
* @throws IOException if something went wrong
*/
private PDFunction[] getFunctionsArray() throws IOException
@@ -341,10 +375,10 @@ public abstract class PDShading implemen
}
else
{
- COSArray functionCOSArray = (COSArray)functionObject;
+ COSArray functionCOSArray = (COSArray) functionObject;
int numberOfFunctions = functionCOSArray.size();
functionArray = new PDFunction[numberOfFunctions];
- for (int i=0; i<numberOfFunctions; i++)
+ for (int i = 0; i < numberOfFunctions; i++)
{
functionArray[i] = PDFunction.create(functionCOSArray.get(i));
}
@@ -352,25 +386,30 @@ public abstract class PDShading implemen
}
return functionArray;
}
-
+
/**
* Convert the input value using the functions of the shading dictionary.
+ *
* @param inputValue the input value
* @return the output values
* @throws IOException thrown if something went wrong
*/
public float[] evalFunction(float inputValue) throws IOException
{
- return evalFunction(new float[] {inputValue});
+ return evalFunction(new float[]
+ {
+ inputValue
+ });
}
-
+
/**
* Convert the input values using the functions of the shading dictionary.
+ *
* @param input the input values
* @return the output values
* @throws IOException thrown if something went wrong
*/
- public float[] evalFunction(float [] input) throws IOException
+ public float[] evalFunction(float[] input) throws IOException
{
PDFunction[] functions = getFunctionsArray();
int numberOfFunctions = functions.length;
@@ -382,7 +421,7 @@ public abstract class PDShading implemen
else
{
returnValues = new float[numberOfFunctions];
- for (int i=0; i<numberOfFunctions;i++)
+ for (int i = 0; i < numberOfFunctions; i++)
{
float[] newValue = functions[i].eval(input);
returnValues[i] = newValue[0];
@@ -407,6 +446,7 @@ public abstract class PDShading implemen
/**
* Returns an AWT paint which corresponds to this shading
+ *
* @param matrix the pattern matrix
* @param pageHeight the height of the current page
* @return an AWT Paint instance
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType1.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType1.java?rev=1616964&r1=1616963&r2=1616964&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType1.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType1.java Sat Aug 9 15:11:34 2014
@@ -35,6 +35,7 @@ public class PDShadingType1 extends PDSh
/**
* Constructor using the given shading dictionary.
+ *
* @param shadingDictionary the dictionary for this shading
*/
public PDShadingType1(COSDictionary shadingDictionary)
@@ -50,6 +51,7 @@ public class PDShadingType1 extends PDSh
/**
* This will get the optional Matrix of a function based shading.
+ *
* @return the matrix
*/
public Matrix getMatrix()
@@ -71,6 +73,7 @@ public class PDShadingType1 extends PDSh
/**
* Sets the optional Matrix entry for the function based shading.
+ *
* @param transform the transformation matrix
*/
public void setMatrix(AffineTransform transform)
@@ -87,6 +90,7 @@ public class PDShadingType1 extends PDSh
/**
* This will get the optional Domain values of a function based shading.
+ *
* @return the domain values
*/
public COSArray getDomain()
@@ -100,6 +104,7 @@ public class PDShadingType1 extends PDSh
/**
* Sets the optional Domain entry for the function based shading.
+ *
* @param newDomain the domain array
*/
public void setDomain(COSArray newDomain)
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType2.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType2.java?rev=1616964&r1=1616963&r2=1616964&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType2.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType2.java Sat Aug 9 15:11:34 2014
@@ -34,6 +34,7 @@ public class PDShadingType2 extends PDSh
/**
* Constructor using the given shading dictionary.
+ *
* @param shadingDictionary the dictionary for this shading
*/
public PDShadingType2(COSDictionary shadingDictionary)
@@ -49,6 +50,7 @@ public class PDShadingType2 extends PDSh
/**
* This will get the optional Extend values for this shading.
+ *
* @return the extend values
*/
public COSArray getExtend()
@@ -62,6 +64,7 @@ public class PDShadingType2 extends PDSh
/**
* Sets the optional Extend entry for this shading.
+ *
* @param newExtend the extend array
*/
public void setExtend(COSArray newExtend)
@@ -79,6 +82,7 @@ public class PDShadingType2 extends PDSh
/**
* This will get the optional Domain values for this shading.
+ *
* @return the domain values
*/
public COSArray getDomain()
@@ -92,6 +96,7 @@ public class PDShadingType2 extends PDSh
/**
* Sets the optional Domain entry for this shading.
+ *
* @param newDomain the domain array
*/
public void setDomain(COSArray newDomain)
@@ -109,6 +114,7 @@ public class PDShadingType2 extends PDSh
/**
* This will get the Coords values for this shading.
+ *
* @return the coordinate values
*/
public COSArray getCoords()
@@ -122,6 +128,7 @@ public class PDShadingType2 extends PDSh
/**
* Sets the Coords entry for this shading.
+ *
* @param newCoords the coordinates array
*/
public void setCoords(COSArray newCoords)
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType3.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType3.java?rev=1616964&r1=1616963&r2=1616964&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType3.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType3.java Sat Aug 9 15:11:34 2014
@@ -28,6 +28,7 @@ public class PDShadingType3 extends PDSh
{
/**
* Constructor using the given shading dictionary.
+ *
* @param shadingDictionary the dictionary for this shading
*/
public PDShadingType3(COSDictionary shadingDictionary)
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=1616964&r1=1616963&r2=1616964&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 Sat Aug 9 15:11:34 2014
@@ -29,6 +29,7 @@ public class PDShadingType4 extends PDTr
{
/**
* Constructor using the given shading dictionary.
+ *
* @param shadingDictionary the dictionary for this shading
*/
public PDShadingType4(COSDictionary shadingDictionary)
@@ -43,7 +44,9 @@ public class PDShadingType4 extends PDTr
}
/**
- * The bits per flag of this shading. This will return -1 if one has not been set.
+ * The bits per flag of this shading. This will return -1 if one has not
+ * been set.
+ *
* @return The number of bits per flag.
*/
public int getBitsPerFlag()
@@ -53,6 +56,7 @@ public class PDShadingType4 extends PDTr
/**
* Set the number of bits per flag.
+ *
* @param bitsPerFlag the number of bits per flag
*/
public void setBitsPerFlag(int bitsPerFlag)
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType5.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType5.java?rev=1616964&r1=1616963&r2=1616964&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType5.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType5.java Sat Aug 9 15:11:34 2014
@@ -29,6 +29,7 @@ public class PDShadingType5 extends PDTr
{
/**
* Constructor using the given shading dictionary.
+ *
* @param shadingDictionary the dictionary for this shading
*/
public PDShadingType5(COSDictionary shadingDictionary)
@@ -43,7 +44,9 @@ public class PDShadingType5 extends PDTr
}
/**
- * The vertices per row of this shading. This will return -1 if one has not been set.
+ * The vertices per row of this shading. This will return -1 if one has not
+ * been set.
+ *
* @return the number of vertices per row
*/
public int getVerticesPerRow()
@@ -53,6 +56,7 @@ public class PDShadingType5 extends PDTr
/**
* Set the number of vertices per row.
+ *
* @param verticesPerRow the number of vertices per row
*/
public void setVerticesPerRow(int verticesPerRow)
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=1616964&r1=1616963&r2=1616964&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 Sat Aug 9 15:11:34 2014
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.pdfbox.pdmodel.graphics.shading;
import org.apache.pdfbox.cos.COSArray;
@@ -37,7 +36,9 @@ abstract class PDTriangleBasedShadingTyp
}
/**
- * The bits per component of this shading. This will return -1 if one has not been set.
+ * The bits per component of this shading. This will return -1 if one has
+ * not been set.
+ *
* @return the number of bits per component
*/
public int getBitsPerComponent()
@@ -47,6 +48,7 @@ abstract class PDTriangleBasedShadingTyp
/**
* Set the number of bits per component.
+ *
* @param bitsPerComponent the number of bits per component
*/
public void setBitsPerComponent(int bitsPerComponent)
@@ -55,7 +57,9 @@ abstract class PDTriangleBasedShadingTyp
}
/**
- * The bits per coordinate of this shading. This will return -1 if one has not been set.
+ * The bits per coordinate of this shading. This will return -1 if one has
+ * not been set.
+ *
* @return the number of bits per coordinate
*/
public int getBitsPerCoordinate()
@@ -65,6 +69,7 @@ abstract class PDTriangleBasedShadingTyp
/**
* Set the number of bits per coordinate.
+ *
* @param bitsPerComponent the number of bits per coordinate
*/
public void setBitsPerCoordinate(int bitsPerComponent)
@@ -74,6 +79,7 @@ abstract class PDTriangleBasedShadingTyp
/**
* Returns all decode values as COSArray.
+ *
* @return the decode array
*/
private COSArray getDecodeValues()
@@ -87,6 +93,7 @@ abstract class PDTriangleBasedShadingTyp
/**
* This will set the decode values.
+ *
* @param decodeValues the new decode values
*/
public void setDecodeValues(COSArray decodeValues)
@@ -97,6 +104,7 @@ abstract class PDTriangleBasedShadingTyp
/**
* Get the decode for the input parameter.
+ *
* @param paramNum the function parameter number
* @return the decode parameter range or null if none is set
*/
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Patch.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Patch.java?rev=1616964&r1=1616963&r2=1616964&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Patch.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Patch.java Sat Aug 9 15:11:34 2014
@@ -13,22 +13,22 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.pdfbox.pdmodel.graphics.shading;
import java.awt.geom.Point2D;
import java.util.ArrayList;
/**
- * Patch is extended by CoonsPatch and TensorPatch.
- * This was done as part of GSoC2014, Tilman Hausherr is the mentor.
+ * Patch is extended by CoonsPatch and TensorPatch. This was done as part of
+ * GSoC2014, Tilman Hausherr is the mentor.
+ *
* @author Shaola Ren
*/
abstract class Patch
{
protected Point2D[][] controlPoints;
protected float[][] cornerColor;
-
+
/*
level = {levelU, levelV}, levelU defines the patch's u direction edges should be
divided into 2^levelU parts, level V defines the patch's v direction edges should
@@ -36,37 +36,43 @@ abstract class Patch
*/
protected int[] level;
protected ArrayList<ShadedTriangle> listOfTriangles;
-
+
/**
* Constructor of Patch.
- * @param ctl control points, size is 12 (for type 6 shading) or 16 (for type 7 shading)
+ *
+ * @param ctl control points, size is 12 (for type 6 shading) or 16 (for
+ * type 7 shading)
* @param color 4 corner's colors
*/
public Patch(Point2D[] ctl, float[][] color)
{
cornerColor = color.clone();
}
-
+
/**
* Get the implicit edge for flag = 1.
+ *
* @return implicit control points
*/
protected abstract Point2D[] getFlag1Edge();
-
+
/**
* Get the implicit edge for flag = 2.
+ *
* @return implicit control points
*/
protected abstract Point2D[] getFlag2Edge();
-
+
/**
* Get the implicit edge for flag = 3.
+ *
* @return implicit control points
*/
protected abstract Point2D[] getFlag3Edge();
-
+
/**
* Get the implicit color for flag = 1.
+ *
* @return color
*/
protected float[][] getFlag1Color()
@@ -80,9 +86,10 @@ abstract class Patch
}
return implicitCornerColor;
}
-
+
/**
* Get implicit color for flag = 2.
+ *
* @return color
*/
protected float[][] getFlag2Color()
@@ -96,9 +103,10 @@ abstract class Patch
}
return implicitCornerColor;
}
-
+
/**
* Get implicit color for flag = 3.
+ *
* @return color
*/
protected float[][] getFlag3Color()
@@ -112,9 +120,10 @@ abstract class Patch
}
return implicitCornerColor;
}
-
+
/**
* Calculate the distance from point ps to point pe.
+ *
* @param ps one end of a line
* @param pe the other end of the line
* @return length of the line
@@ -125,9 +134,10 @@ abstract class Patch
double y = pe.getY() - ps.getY();
return Math.sqrt(x * x + y * y);
}
-
+
/**
* Whether the for control points are on a line.
+ *
* @param ctl an edge's control points, the size of ctl is 4
* @return true when 4 control points are on a line, otherwise false
*/
@@ -139,11 +149,12 @@ abstract class Patch
double y = Math.abs(ctl[0].getY() - ctl[3].getY());
return (ctl1 <= x && ctl2 <= x) || (ctl1 <= y && ctl2 <= y);
}
-
+
/**
- * A line from point p1 to point p2 defines an equation, adjust the form of the equation
- * to let the rhs equals 0, then calculate the lhs value by plugging the coordinate of p
- * in the lhs expression.
+ * A line from point p1 to point p2 defines an equation, adjust the form of
+ * the equation to let the rhs equals 0, then calculate the lhs value by
+ * plugging the coordinate of p in the lhs expression.
+ *
* @param p target point
* @param p1 one end of a line
* @param p2 the other end of a line
@@ -153,9 +164,10 @@ abstract class Patch
{
return (p2.getY() - p1.getY()) * (p.getX() - p1.getX()) - (p2.getX() - p1.getX()) * (p.getY() - p1.getY());
}
-
+
/**
* An assistant method to accomplish type 6 and type 7 shading.
+ *
* @param patchCC all the crossing point coordinates and color of a grid
* @return a ShadedTriangle list which can compose the grid patch
*/
@@ -168,17 +180,24 @@ abstract class Patch
{
for (int j = 1; j < szU; j++)
{
- Point2D p0 = patchCC[i-1][j-1].coordinate, p1 = patchCC[i-1][j].coordinate, p2 = patchCC[i][j].coordinate,
- p3 = patchCC[i][j-1].coordinate;
+ Point2D p0 = patchCC[i - 1][j - 1].coordinate, p1 = patchCC[i - 1][j].coordinate, p2 = patchCC[i][j].coordinate,
+ p3 = patchCC[i][j - 1].coordinate;
boolean ll = true;
if (overlaps(p0, p1) || overlaps(p0, p3))
{
ll = false;
}
- else{
+ else
+ {
// p0, p1 and p3 are in counter clock wise order, p1 has priority over p0, p3 has priority over p1
- Point2D[] llCorner = {p0, p1, p3};
- float[][] llColor = {patchCC[i-1][j-1].color, patchCC[i-1][j].color, patchCC[i][j-1].color};
+ Point2D[] llCorner =
+ {
+ p0, p1, p3
+ };
+ float[][] llColor =
+ {
+ patchCC[i - 1][j - 1].color, patchCC[i - 1][j].color, patchCC[i][j - 1].color
+ };
ShadedTriangle tmpll = new ShadedTriangle(llCorner, llColor); // lower left triangle
list.add(tmpll);
}
@@ -188,8 +207,14 @@ abstract class Patch
else
{
// p3, p1 and p2 are in counter clock wise order, p1 has priority over p3, p2 has priority over p1
- Point2D[] urCorner = {p3, p1, p2};
- float[][] urColor = {patchCC[i][j-1].color, patchCC[i-1][j].color, patchCC[i][j].color};
+ Point2D[] urCorner =
+ {
+ p3, p1, p2
+ };
+ float[][] urColor =
+ {
+ patchCC[i][j - 1].color, patchCC[i - 1][j].color, patchCC[i][j].color
+ };
ShadedTriangle tmpur = new ShadedTriangle(urCorner, urColor); // upper right triangle
list.add(tmpur);
}
@@ -197,10 +222,10 @@ abstract class Patch
}
return list;
}
-
+
// whether two points p0 and p1 are degenerated into one point within the coordinates' accuracy 0.001
private boolean overlaps(Point2D p0, Point2D p1)
{
return Math.abs(p0.getX() - p1.getX()) < 0.001 && Math.abs(p0.getY() - p1.getY()) < 0.001;
- }
+ }
}
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java?rev=1616964&r1=1616963&r2=1616964&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java Sat Aug 9 15:11:34 2014
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.pdfbox.pdmodel.graphics.shading;
import java.awt.PaintContext;
@@ -39,43 +38,45 @@ import org.apache.pdfbox.pdmodel.common.
import org.apache.pdfbox.util.Matrix;
/**
- * This class is extended in Type6ShadingContext and Type7ShadingContext.
- * This was done as part of GSoC2014, Tilman Hausherr is the mentor.
+ * This class is extended in Type6ShadingContext and Type7ShadingContext. This
+ * was done as part of GSoC2014, Tilman Hausherr is the mentor.
+ *
* @author Shaola Ren
*/
abstract class PatchMeshesShadingContext extends TriangleBasedShadingContext implements PaintContext
{
private static final Log LOG = LogFactory.getLog(PatchMeshesShadingContext.class);
-
+
protected final int numberOfColorComponents; // number of color components
protected float[] background; // background values.
protected int rgbBackground;
protected final PDShading patchMeshesShadingType;
-
+
// the following fields are not intialized in this abstract class
protected ArrayList<Patch> patchList; // patch list
protected int bitsPerFlag; // bits per flag
protected HashMap<Point, Integer> pixelTable;
-
+
/**
* Constructor creates an instance to be used for fill operations.
+ *
* @param shading the shading type to be used
* @param colorModel the color model to be used
* @param xform transformation for user to device space
* @param ctm current transformation matrix
* @param pageHeight height of the current page
- * @param dBounds device bounds
+ * @param dBounds device bounds
* @throws IOException if something went wrong
*/
protected PatchMeshesShadingContext(PDShading shading, ColorModel colorModel, AffineTransform xform,
- Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
+ Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
{
super(shading, colorModel, xform, ctm, pageHeight, dBounds);
patchMeshesShadingType = shading;
bitsPerFlag = ((PDShadingType6) shading).getBitsPerFlag();
patchList = new ArrayList<Patch>();
numberOfColorComponents = hasFunction ? 1 : shadingColorSpace.getNumberOfComponents();
-
+
COSArray bg = shading.getBackground();
if (bg != null)
{
@@ -83,35 +84,37 @@ abstract class PatchMeshesShadingContext
rgbBackground = convertToRGB(background);
}
}
-
+
/**
- * Create a patch list from a data stream, the returned list contains all the patches
- * contained in the data stream.
+ * Create a patch list from a data stream, the returned list contains all
+ * the patches contained in the data stream.
+ *
* @param xform transformation for user to device space
* @param ctm current transformation matrix
* @param cosDictionary dictionary object to give the image information
* @param rangeX range for coordinate x
* @param rangeY range for coordinate y
* @param colRange range for color
- * @param numP number of control points, 12 for type 6 shading and 16 for type 7 shading
+ * @param numP number of control points, 12 for type 6 shading and 16 for
+ * type 7 shading
* @return the obtained patch list
* @throws IOException when something went wrong
*/
- protected ArrayList<Patch> getPatchList(AffineTransform xform,Matrix ctm, COSDictionary cosDictionary,
- PDRange rangeX, PDRange rangeY, PDRange[] colRange, int numP) throws IOException
+ protected ArrayList<Patch> getPatchList(AffineTransform xform, Matrix ctm, COSDictionary cosDictionary,
+ PDRange rangeX, PDRange rangeY, PDRange[] colRange, int numP) throws IOException
{
ArrayList<Patch> list = new ArrayList<Patch>();
long maxSrcCoord = (long) Math.pow(2, bitsPerCoordinate) - 1;
long maxSrcColor = (long) Math.pow(2, bitsPerColorComponent) - 1;
COSStream cosStream = (COSStream) cosDictionary;
-
+
ImageInputStream mciis = new MemoryCacheImageInputStream(cosStream.getUnfilteredStream());
-
+
Point2D[] implicitEdge = new Point2D[4];
float[][] implicitCornerColor = new float[2][numberOfColorComponents];
-
+
byte flag = (byte) 0;
-
+
try
{
flag = (byte) (mciis.readBits(bitsPerFlag) & 3);
@@ -120,14 +123,14 @@ abstract class PatchMeshesShadingContext
{
LOG.error(ex);
}
-
+
while (true)
{
try
{
boolean isFree = (flag == 0);
Patch current = readPatch(mciis, isFree, implicitEdge, implicitCornerColor,
- maxSrcCoord, maxSrcColor, rangeX, rangeY, colRange, ctm, xform, numP);
+ maxSrcCoord, maxSrcColor, rangeX, rangeY, colRange, ctm, xform, numP);
if (current == null)
{
break;
@@ -153,7 +156,7 @@ abstract class PatchMeshesShadingContext
default:
LOG.warn("bad flag: " + flag);
break;
- }
+ }
}
catch (EOFException ex)
{
@@ -163,29 +166,34 @@ abstract class PatchMeshesShadingContext
mciis.close();
return list;
}
-
+
/**
- * Read a single patch from a data stream, a patch contains information of
+ * Read a single patch from a data stream, a patch contains information of
* its coordinates and color parameters.
+ *
* @param input the image source data stream
* @param isFree whether this is a free patch
- * @param implicitEdge implicit edge when a patch is not free, otherwise it's not used
- * @param implicitCornerColor implicit colors when a patch is not free, otherwise it's not used
- * @param maxSrcCoord the maximum coordinate value calculated from source data
+ * @param implicitEdge implicit edge when a patch is not free, otherwise
+ * it's not used
+ * @param implicitCornerColor implicit colors when a patch is not free,
+ * otherwise it's not used
+ * @param maxSrcCoord the maximum coordinate value calculated from source
+ * data
* @param maxSrcColor the maximum color value calculated from source data
* @param rangeX range for coordinate x
* @param rangeY range for coordinate y
* @param colRange range for color
* @param ctm current transformation matrix
* @param xform transformation for user to device space
- * @param numP number of control points, 12 for type 6 shading and 16 for type 7 shading
+ * @param numP number of control points, 12 for type 6 shading and 16 for
+ * type 7 shading
* @return a single patch
* @throws IOException when something went wrong
*/
- protected Patch readPatch(ImageInputStream input, boolean isFree, Point2D[] implicitEdge,
- float[][] implicitCornerColor, long maxSrcCoord, long maxSrcColor,
- PDRange rangeX, PDRange rangeY, PDRange[] colRange,
- Matrix ctm, AffineTransform xform, int numP) throws IOException
+ protected Patch readPatch(ImageInputStream input, boolean isFree, Point2D[] implicitEdge,
+ float[][] implicitCornerColor, long maxSrcCoord, long maxSrcColor,
+ PDRange rangeX, PDRange rangeY, PDRange[] colRange,
+ Matrix ctm, AffineTransform xform, int numP) throws IOException
{
float[][] color = new float[4][numberOfColorComponents];
Point2D[] points = new Point2D[numP];
@@ -201,14 +209,14 @@ abstract class PatchMeshesShadingContext
points[1] = implicitEdge[1];
points[2] = implicitEdge[2];
points[3] = implicitEdge[3];
-
+
for (int i = 0; i < numberOfColorComponents; i++)
{
color[0][i] = implicitCornerColor[0][i];
color[1][i] = implicitCornerColor[1][i];
}
}
-
+
try
{
for (int i = pStart; i < numP; i++)
@@ -230,7 +238,7 @@ abstract class PatchMeshesShadingContext
}
}
}
- catch(EOFException ex)
+ catch (EOFException ex)
{
LOG.debug("EOF");
return null;
@@ -239,23 +247,27 @@ abstract class PatchMeshesShadingContext
}
/**
- * Create a patch using control points and 4 corner color values, in Type6ShadingContext,
- * a CoonsPatch is returned; in Type6ShadingContext, a TensorPatch is returned.
+ * Create a patch using control points and 4 corner color values, in
+ * Type6ShadingContext, a CoonsPatch is returned; in Type6ShadingContext, a
+ * TensorPatch is returned.
+ *
* @param points 12 or 16 control points
* @param color 4 corner colors
* @return a patch instance
*/
abstract Patch generatePatch(Point2D[] points, float[][] color);
-
+
// get a point coordinate on a line by linear interpolation
private double interpolate(double x, long maxValue, float rangeMin, float rangeMax)
{
return rangeMin + (x / maxValue) * (rangeMax - rangeMin);
}
-
+
/**
* Calculate every point and its color and store them in a Hash table.
- * @return a Hash table which contains all the points' positions and colors of one image
+ *
+ * @return a Hash table which contains all the points' positions and colors
+ * of one image
*/
protected HashMap<Point, Integer> calcPixelTable()
{
@@ -274,18 +286,18 @@ abstract class PatchMeshesShadingContext
outputColorModel = null;
shadingColorSpace = null;
}
-
+
@Override
public final ColorModel getColorModel()
{
return outputColorModel;
}
-
+
@Override
public final Raster getRaster(int x, int y, int w, int h)
{
WritableRaster raster = getColorModel().createCompatibleWritableRaster(w, h);
- int[] data = new int[w * h * 4];
+ int[] data = new int[w * h * 4];
if (!patchList.isEmpty() || background != null)
{
for (int row = 0; row < h; row++)
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java?rev=1616964&r1=1616963&r2=1616964&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java Sat Aug 9 15:11:34 2014
@@ -38,7 +38,7 @@ import org.apache.pdfbox.util.Matrix;
* mentor.
*
* @author Andreas Lehmkühler
- * @author Shaola Ren
+ * @author Shaola Ren
*/
public class RadialShadingContext extends ShadingContext implements PaintContext
{
@@ -51,7 +51,7 @@ public class RadialShadingContext extend
private float[] background;
private int rgbBackground;
private final boolean[] extend;
- private final double x1x0;
+ private final double x1x0;
private final double y1y0;
private final double r1r0;
private final double x1x0pow2;
@@ -65,15 +65,16 @@ public class RadialShadingContext extend
/**
* Constructor creates an instance to be used for fill operations.
+ *
* @param shading the shading type to be used
* @param colorModel the color model to be used
* @param xform transformation for user to device space
* @param ctm the transformation matrix
- * @param dBounds device bounds
+ * @param dBounds device bounds
* @param pageHeight height of the current page
*/
public RadialShadingContext(PDShadingType3 shading, ColorModel colorModel, AffineTransform xform,
- Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
+ Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
{
super(shading, colorModel, xform, ctm, pageHeight, dBounds);
this.radialShadingType = shading;
@@ -103,9 +104,12 @@ public class RadialShadingContext extend
else
{
// set default values
- domain = new float[] { 0, 1 };
+ domain = new float[]
+ {
+ 0, 1
+ };
}
-
+
// extend values
COSArray extendValues = shading.getExtend();
if (shading.getExtend() != null)
@@ -117,7 +121,10 @@ public class RadialShadingContext extend
else
{
// set default values
- extend = new boolean[] { false, false };
+ extend = new boolean[]
+ {
+ false, false
+ };
}
// calculate some constants to be used in getRaster
x1x0 = coords[3] - coords[0];
@@ -139,7 +146,7 @@ public class RadialShadingContext extend
longestDistance = getLongestDis();
colorTable = calcColorTable();
}
-
+
// get the longest distance of two points which are located on these two circles
private double getLongestDis()
{
@@ -164,10 +171,13 @@ public class RadialShadingContext extend
return rmin + centerToCenter + coords[5];
}
}
-
+
/**
- * Calculate the color on the line connects two circles' centers and store the result in an array.
- * @return an array, index denotes the relative position, the corresponding value the color
+ * Calculate the color on the line connects two circles' centers and store
+ * the result in an array.
+ *
+ * @return an array, index denotes the relative position, the corresponding
+ * value the color
*/
private int[] calcColorTable()
{
@@ -188,7 +198,7 @@ public class RadialShadingContext extend
{
for (int i = 0; i <= longestDistance; i++)
{
- float t = domain[0] + d1d0 * i / (float)longestDistance;
+ float t = domain[0] + d1d0 * i / (float) longestDistance;
try
{
float[] values = radialShadingType.evalFunction(t);
@@ -202,9 +212,9 @@ public class RadialShadingContext extend
}
return map;
}
-
+
@Override
- public void dispose()
+ public void dispose()
{
outputColorModel = null;
radialShadingType = null;
@@ -212,13 +222,13 @@ public class RadialShadingContext extend
}
@Override
- public ColorModel getColorModel()
+ public ColorModel getColorModel()
{
return outputColorModel;
}
@Override
- public Raster getRaster(int x, int y, int w, int h)
+ public Raster getRaster(int x, int y, int w, int h)
{
// create writable raster
WritableRaster raster = getColorModel().createCompatibleWritableRaster(w, h);
@@ -397,41 +407,50 @@ public class RadialShadingContext extend
float root2 = (float) ((-p - root) / denom);
if (denom < 0)
{
- return new float[] { root1, root2 };
+ return new float[]
+ {
+ root1, root2
+ };
}
else
{
- return new float[] { root2, root1 };
+ return new float[]
+ {
+ root2, root1
+ };
}
}
/**
* Returns the coords values.
+ *
* @return the coords values as array
*/
- public float[] getCoords()
+ public float[] getCoords()
{
return coords;
}
-
+
/**
* Returns the domain values.
+ *
* @return the domain values as array
*/
- public float[] getDomain()
+ public float[] getDomain()
{
return domain;
}
-
+
/**
* Returns the extend values.
+ *
* @return the extend values as array
*/
- public boolean[] getExtend()
+ public boolean[] getExtend()
{
return extend;
}
-
+
/**
* Returns the function.
*
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingPaint.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingPaint.java?rev=1616964&r1=1616963&r2=1616964&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingPaint.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingPaint.java Sat Aug 9 15:11:34 2014
@@ -31,6 +31,7 @@ import org.apache.pdfbox.util.Matrix;
/**
* AWT Paint for radial shading.
+ *
* @author Andreas Lehmkühler
*/
public class RadialShadingPaint implements Paint
@@ -40,9 +41,10 @@ public class RadialShadingPaint implemen
private PDShadingType3 shading;
private Matrix ctm;
private int pageHeight;
-
+
/**
* Constructor.
+ *
* @param shading the shading resources
* @param ctm current transformation matrix
* @param pageHeight size of the current page
@@ -55,14 +57,14 @@ public class RadialShadingPaint implemen
}
@Override
- public int getTransparency()
+ public int getTransparency()
{
return 0;
}
@Override
public PaintContext createContext(ColorModel cm, Rectangle deviceBounds, Rectangle2D userBounds,
- AffineTransform xform, RenderingHints hints)
+ AffineTransform xform, RenderingHints hints)
{
try
{