Package org.apache.pdfbox.jbig2.image
Class Resizer
- java.lang.Object
-
- org.apache.pdfbox.jbig2.image.Resizer
-
class Resizer extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static classResizer.Mappingprivate static classResizer.OrderOrder in which to apply filter
-
Field Summary
Fields Modifier and Type Field Description private int[]bitsPerChannelNumber of bits per channelprivate booleancoerceShould filters be simplified if possible?(package private) static booleandebugprivate static doubleEPSILONError toleranceprivate int[]finalShiftprivate Resizer.MappingmappingXprivate Resizer.MappingmappingYprivate static int[]NO_SHIFTprivate Resizer.OrderorderThe order in which data is processed.private booleantrimZerosShould zeros be trimmed in x filter weight tables?private intweightBitsNumber of bits in filter coefficientsprivate intweightOne
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static ScanlinecreateScanline(java.lang.Object src, java.lang.Object dst, int length)private Weighttab[]createXWeights(java.awt.Rectangle srcBounds, java.awt.Rectangle dstBounds, ParameterizedFilter filter)private static booleanisInteger(double x)Is x an integer?voidresize(java.lang.Object src, java.awt.Rectangle srcBounds, java.lang.Object dst, java.awt.Rectangle dstBounds, Filter xFilter, Filter yFilter)private voidresizeXfirst(java.lang.Object src, java.awt.Rectangle srcBounds, java.lang.Object dst, java.awt.Rectangle dstBounds, ParameterizedFilter xFilter, ParameterizedFilter yFilter)Filtered zoom, x direction filtering before y direction filteringprivate voidresizeYfirst(java.lang.Object src, java.awt.Rectangle srcBounds, java.lang.Object dst, java.awt.Rectangle dstBounds, ParameterizedFilter xFilter, ParameterizedFilter yFilter)Filtered zoom, y direction filtering before x direction filteringprivate ParameterizedFiltersimplifyFilter(ParameterizedFilter filter, double scale, double offset)Checks if our discrete sampling of an arbitrary continuous filter, parameterized by the filter spacing (ParameterizedFilter.scale), its radius (ParameterizedFilter.support), and the scale and offset of the coordinate mapping, causes the filter to reduce to point sampling.
-
-
-
Field Detail
-
EPSILON
private static final double EPSILON
Error tolerance- See Also:
- Constant Field Values
-
weightBits
private int weightBits
Number of bits in filter coefficients
-
weightOne
private int weightOne
-
bitsPerChannel
private int[] bitsPerChannel
Number of bits per channel
-
NO_SHIFT
private static final int[] NO_SHIFT
-
finalShift
private int[] finalShift
-
debug
static final boolean debug
- See Also:
- Constant Field Values
-
coerce
private final boolean coerce
Should filters be simplified if possible?- See Also:
- Constant Field Values
-
order
private final Resizer.Order order
The order in which data is processed.- See Also:
Resizer.Order
-
trimZeros
private final boolean trimZeros
Should zeros be trimmed in x filter weight tables?- See Also:
- Constant Field Values
-
mappingX
private final Resizer.Mapping mappingX
-
mappingY
private final Resizer.Mapping mappingY
-
-
Constructor Detail
-
Resizer
public Resizer(double scale)
Creates an instance ofResizerwith one scale factor for both x and y directions.- Parameters:
scale- the scale factor for x and y direction
-
Resizer
public Resizer(double scaleX, double scaleY)Creates an instance ofResizerwith a scale factor for each direction.- Parameters:
scaleX- the scale factor for x directionscaleY- the scale factor for y direction
-
-
Method Detail
-
isInteger
private static boolean isInteger(double x)
Is x an integer?- Parameters:
x- the double to check- Returns:
trueif x is an integer,falseif not.
-
createXWeights
private Weighttab[] createXWeights(java.awt.Rectangle srcBounds, java.awt.Rectangle dstBounds, ParameterizedFilter filter)
-
simplifyFilter
private ParameterizedFilter simplifyFilter(ParameterizedFilter filter, double scale, double offset)
Checks if our discrete sampling of an arbitrary continuous filter, parameterized by the filter spacing (ParameterizedFilter.scale), its radius (ParameterizedFilter.support), and the scale and offset of the coordinate mapping, causes the filter to reduce to point sampling.It reduces if support is less than 1 pixel or if integer scale and translation, and filter is cardinal.
- Parameters:
filter- the parameterized filter instance to be simplifiedscale- the scale of the coordinate mappingoffset- the offset of the coordinate mapping
-
resizeXfirst
private void resizeXfirst(java.lang.Object src, java.awt.Rectangle srcBounds, java.lang.Object dst, java.awt.Rectangle dstBounds, ParameterizedFilter xFilter, ParameterizedFilter yFilter)Filtered zoom, x direction filtering before y direction filteringNote: when calling
createXWeights(Rectangle, Rectangle, ParameterizedFilter), we can trim leading and trailing zeros from the x weight buffers as an optimization, but not for y weight buffers since the split formula is anticipating a constant amount of buffering of source scanlines; trimming zeros in y weight could cause feedback.
-
resizeYfirst
private void resizeYfirst(java.lang.Object src, java.awt.Rectangle srcBounds, java.lang.Object dst, java.awt.Rectangle dstBounds, ParameterizedFilter xFilter, ParameterizedFilter yFilter)Filtered zoom, y direction filtering before x direction filtering
-
resize
public void resize(java.lang.Object src, java.awt.Rectangle srcBounds, java.lang.Object dst, java.awt.Rectangle dstBounds, Filter xFilter, Filter yFilter)- Parameters:
src- Source objectsrcBounds- Bounds of the source objectdst- Destination objectdstBounds- Bounds of the destination objectxFilter- The filter used for x direction filteringyFilter- The filter used for y direction filtering
-
createScanline
private static Scanline createScanline(java.lang.Object src, java.lang.Object dst, int length)
-
-