com.sun.pdfview.function

Class PDFFunction

public abstract class PDFFunction extends Object

PDF Functions are defined in the reference as Section 3.9.

A PDF function maps some set of m inputs into some set of n outputs. There are 4 types of functions:

The function interface contains a single method, calculate which takes an array of m floats an interprets them into an array of n floats.

PDFFunctions do not have accessible constructors. Instead, use the static getFunction() method to read a functions from a PDF Object.

Field Summary
static intTYPE_0
The known function types
static intTYPE_2
static intTYPE_3
static intTYPE_4
Constructor Summary
protected PDFFunction(int type)
Creates a new instance of PDFFunction
Method Summary
float[]calculate(float[] inputs)
Map from m input values to n output values.
float[]calculate(float[] inputs, int inputOffset, float[] outputs, int outputOffset)
Map from m input values to n output values.
protected abstract voiddoFunction(float[] inputs, int inputOffset, float[] outputs, int outputOffset)
Subclasses must implement this method to perform the actual function on the given set of data.
protected floatgetDomain(int i)
Get a component of the domain of this function
static PDFFunctiongetFunction(PDFObject obj)
Get a PDFFunction from a PDFObject
intgetNumInputs()
Get the number of inputs, m, required by this function
intgetNumOutputs()
Get the number of outputs, n, returned by this function
protected floatgetRange(int i)
Get a component of the range of this function
intgetType()
Get the type of this function
protected abstract voidparse(PDFObject obj)
Read the function information from a PDF Object
protected voidsetDomain(float[] domain)
Set the domain of this function
protected voidsetRange(float[] range)
Set the range of this function

Field Detail

TYPE_0

public static final int TYPE_0
The known function types

TYPE_2

public static final int TYPE_2

TYPE_3

public static final int TYPE_3

TYPE_4

public static final int TYPE_4

Constructor Detail

PDFFunction

protected PDFFunction(int type)
Creates a new instance of PDFFunction

Method Detail

calculate

public float[] calculate(float[] inputs)
Map from m input values to n output values. The number of inputs m must be exactly one half the size of the domain. The number of outputs should match one half the size of the range.

Parameters: inputs an array of >= m input values

Returns: the array of n output values

calculate

public float[] calculate(float[] inputs, int inputOffset, float[] outputs, int outputOffset)
Map from m input values to n output values. The number of inputs m must be exactly one half the size of the domain. The number of outputs should match one half the size of the range.

Parameters: inputs an array of >= m input values inputOffset the offset into the input array to read from outputs an array of size >= n which will be filled with the output values outputOffset the offset into the output array to write to

Returns: the array of n output values

doFunction

protected abstract void doFunction(float[] inputs, int inputOffset, float[] outputs, int outputOffset)
Subclasses must implement this method to perform the actual function on the given set of data. Note that the inputs are guaranteed to be clipped to the domain, while the outputs will be automatically clipped to the range after being returned from this function.

Parameters: inputs guaranteed to be at least as big as getNumInputs() and all values within range inputOffset the offset into the inputs array to read from outputs guaranteed to be at least as big as getNumOutputs(), but not yet clipped to domain outputOffset the offset into the output array to write to

getDomain

protected float getDomain(int i)
Get a component of the domain of this function

Parameters: i the index into the domain array, which has size 2 * m. the ith entry in the array has index 2i, 2i + 1

Returns: the ith entry in the domain array

getFunction

public static PDFFunction getFunction(PDFObject obj)
Get a PDFFunction from a PDFObject

getNumInputs

public int getNumInputs()
Get the number of inputs, m, required by this function

Returns: the number of input values expected by this function

getNumOutputs

public int getNumOutputs()
Get the number of outputs, n, returned by this function

Returns: the number of output values this function will return

getRange

protected float getRange(int i)
Get a component of the range of this function

Parameters: i the index into the range array, which has size 2 * n. the ith entry in the array has index 2i, 2i + 1

Returns: the ith entry in the range array

getType

public int getType()
Get the type of this function

Returns: one of the types of function (0-4)

parse

protected abstract void parse(PDFObject obj)
Read the function information from a PDF Object

setDomain

protected void setDomain(float[] domain)
Set the domain of this function

setRange

protected void setRange(float[] range)
Set the range of this function