com.sun.pdfview.function

## Class FunctionType3

- java.lang.Object
- - com.sun.pdfview.function.PDFFunction
  - - com.sun.pdfview.function.FunctionType3

    public class FunctionType3
    extends PDFFunction

3.9.3 - A stitching function define a stitching of the subdomains of several 1-input functions to produce a single new 1-input function. Since the resulting stitching function is a 1-input function, the domain is given by a two-element array, [ Domain0 Domain1 ].

     Example 4.25
     5 0 obj                          % Shading dictionary
      << /ShadingType 3
          /ColorSpace /DeviceCMYK
          /Coords [ 0.0 0.0 0.096 0.0 0.0 1.0 00]% Concentric circles
          /Function 10 0 R
          /Extend [ true true ]
      >>
     endobj

     10 0 obj                         % Color function
      << /FunctionType 3
          /Domain [ 0.0 1.0 ]
          /Functions [ 11 0 R 12 0 R ]
          /Bounds [ 0.708 ]
          /Encode [ 1.0 0.0 0.0 1.0 ]
      >>
     endobj

     11 0 obj                         % First subfunction
      << /FunctionType 2
          /Domain [ 0.0 1.0 ]
          /C0 [ 0.929 0.357 1.000 0.298 ]
          /C1 [ 0.631 0.278 1.000 0.027 ]
          /N 1.048
      >>
     endobj

     12 0 obj                         % Second subfunction
      << /FunctionType 2
          /Domain [ 0.0 1.0 ]
          /C0 [ 0.929 0.357 1.000 0.298 ]
          /C1 [ 0.941 0.400 1.000 0.102 ]
          /N 1.374
      >>
     endobj

### Field Summary

### Fields inherited from class com.sun.pdfview.function.PDFFunction

`TYPE_0, TYPE_2, TYPE_3, TYPE_4`

### Constructor Summary

Constructors
`protected` `FunctionType3()` Creates a new instance of FunctionType3

### Method Summary

Methods
`protected void` `doFunction(float[] inputs, int inputOffset, float[] outputs, int outputOffset)` Map from m input values to n output values.
`protected void` `parse(PDFObject obj)` Read the function information from a PDF Object.

### Methods inherited from class com.sun.pdfview.function.PDFFunction

`calculate, calculate, getDomain, getFunction, getNumInputs, getNumOutputs, getRange, getType, setDomain, setRange`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### FunctionType3

    protected FunctionType3()

Creates a new instance of FunctionType3

### Method Detail

#### parse

    protected void parse(PDFObject obj)
                  throws java.io.IOException

Read the function information from a PDF Object.

Required entries ( Table 3.38) (3200-1:2008:7.10.4, table: 41) are:

Functions array (Required) An array of k 1-input functions making up the stitching function. The output dimensionality of all functions must be the same, and compatible with the value of Range if Range is present.
Domain array (Required) A 2 element array where Domain0 is less than Domain1. This is read by the `PDFFunction` superclass.
Bounds array (Required) An array of k-1 numbers that, in combination with Domain, define the intervals to which each function from the Functions array applies. Bounds elements must be in order of increasing value, and each value must be within the domain defined by >b>Domain.
Encode array (Required) An array of 2 * k numbers that, taken in pairs, map each subset of the domain defined by <bDomain and the Bounds array to the domain of the corresponding function.

Specified by:
  `parse` in class `PDFFunction`
Throws:
  `java.io.IOException`

#### doFunction

    protected void doFunction(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.

Specified by:
  `doFunction` in class `PDFFunction`
Parameters:
  `inputs` - an array of m input values
  `outputs` - an array of size n which will be filled with the output values, or null to return a new array
  `inputOffset` - the offset into the inputs array to read from
  `outputOffset` - the offset into the output array to write to