| Derived from | |
| Framework | ApplicationServices/ApplicationServices.h |
| Companion guide | |
| Declared in | CGFunction.h |
The CGFunctionRef opaque type provides
a general facility for defining and using callback functions. These
functions can take an arbitrary number of floating-point input values
and pass back an arbitrary number of floating-point output values.
Quartz uses CGFunction objects to implement shadings. CGShading Reference describes the parameters and semantics required for the callbacks used by CGFunction objects.
Creates a Quartz function.
CGFunctionRef CGFunctionCreate ( void *info, size_t domainDimension, const CGFloat *domain, size_t rangeDimension, const CGFloat *range, const CGFunctionCallbacks *callbacks );
A pointer to user-defined storage for data that you want to pass to your callbacks. You need to make sure that the data persists for as long as it’s needed, which can be beyond the scope in which the Quartz function is used.
The number of inputs.
An array of (2*domainDimension)
floats used to specify the valid intervals of input values. For
each k from 0 to (domainDimension
- 1), domain[2*k] must
be less than or equal to domain[2*k+1],
and the kth input value
will be clipped to lie in the interval domain[2*k]
≤ input[k] ≤ domain[2*k+1]. If this parameter
is NULL, then the input
values are not clipped.
The number of outputs.
An array of (2*rangeDimension) floats
that specifies the valid intervals of output values. For each k from 0 to (rangeDimension
- 1), range[2*k] must
be less than or equal to range[2*k+1],
and the kth output value
will be clipped to lie in the interval range[2*k]
≤ output[k] ≤ range[2*k+1]. If this parameter
is NULL, then the output
values are not clipped.
A pointer to a callback function table. This table should contain pointers to the callbacks you provide to implement the semantics of this Quartz function. Quartz makes a copy of your table, so, for example, you could safely pass in a pointer to a structure on the stack.
The new Quartz function.
You are responsible for releasing this object using CGFunctionRelease.
CGFunction.hReturns the type identifier for Quartz function objects.
CFTypeID CGFunctionGetTypeID ( void );
The identifier for
the opaque type CGFunctionRef.
CGFunction.hDecrements the retain count of a function object.
void CGFunctionRelease ( CGFunctionRef function );
The function object to release.
This function is equivalent to CFRelease,
except that it does not cause an error if the function parameter
is NULL.
CGFunction.hIncrements the retain count of a function object.
CGFunctionRef CGFunctionRetain ( CGFunctionRef function );
The same function object you passed in as the function parameter.
This function is equivalent to CFRetain,
except that it does not cause an error if the function parameter
is NULL.
CGFunction.hPerforms custom operations on the supplied input data to produce output data.
typedef void (*CGFunctionEvaluateCallback) ( void *info, const float *inData, float *outData );
If you name your function MyCGFunctionEvaluate,
you would declare it like this:
void MyCGFunctionEvaluate ( void *info, const float *inData, float *outData );
The info parameter
passed to CGFunctionCreate.
An array of floats. The size of the array
is that specified by the domainDimension parameter
passed to the CGFunctionCreate function.
An array of floats. The size of the array
is that specified by the rangeDimension parameter passed to the CGFunctionCreate function.
The callback you write is responsible for implementing the calculation of output values from the supplied input values. For example, if you want to implement a simple "squaring" function of one input argument to one output argument, your evaluation function might be:
void evaluateSquare(void *info, const float *inData, float *outData) |
{ |
outData[0] = inData[0] * inData[0]; |
} |
CGFunction.h
Performs custom clean-up tasks when Quartz deallocates a CGFunction object.
typedef void (*CGFunctionReleaseInfoCallback) ( void *info );
If you name your function MyCGFunctionReleaseInfo,
you would declare it like this:
void MyCGFunctionReleaseInfo ( void *info );
The info parameter
passed to CGFunctionCreate.
CGFunction.hAn opaque type that represents a callback function.
typedef struct CGFunction *CGFunctionRef;
CGFunction.h
A structure that contains callbacks needed by a CGFunction object.
struct CGFunctionCallbacks
{
unsigned int version;
CGFunctionEvaluateCallback evaluate;
CGFunctionReleaseInfoCallback releaseInfo
};
typedef struct CGFunctionCallbacks CGFunctionCallbacks;
versionThe structure version number. For this structure,
the version should be 0.
evaluateThe callback that evaluates the function.
releaseInfoIf non-NULL,
the callback used to release the info parameter
passed to CGFunctionCreate.
CGFunction.h
© 2003, 2006 Apple Computer, Inc. All Rights Reserved. (Last updated: 2006-12-22)