30#define funcMaxInputs 8
31#define funcMaxOutputs 8
41 static Function *parse(Object *funcObj);
44 GBool init(Dict *dict);
46 virtual Function *copy() const = 0;
49 int getInputSize() const { return m; }
50 int getOutputSize() const { return n; }
53 virtual void transform( const double *in, double *out) const = 0;
55 virtual GBool isOk() const = 0;
61 domain[funcMaxInputs][2];
63 range[funcMaxOutputs][2];
71class IdentityFunction: public Function {
75 virtual ~IdentityFunction();
76 virtual Function *copy() const { return new IdentityFunction(); }
77 virtual void transform( const double *in, double *out) const;
78 virtual GBool isOk() const { return gTrue; }
87class SampledFunction: public Function {
90 SampledFunction(Object *funcObj, Dict *dict);
91 virtual ~SampledFunction();
92 virtual Function *copy() const { return new SampledFunction( this); }
93 virtual void transform( const double *in, double *out) const;
94 virtual GBool isOk() const { return ok; }
98 SampledFunction( const SampledFunction *func);
101 sampleSize[funcMaxInputs];
103 encode[funcMaxInputs][2];
105 decode[funcMaxOutputs][2];
114class ExponentialFunction: public Function {
117 ExponentialFunction(Object *funcObj, Dict *dict);
118 virtual ~ExponentialFunction();
119 virtual Function *copy() const { return new ExponentialFunction( this); }
120 virtual void transform( const double *in, double *out) const;
121 virtual GBool isOk() const { return ok; }
125 ExponentialFunction( const ExponentialFunction *func);
127 double c0[funcMaxOutputs];
128 double c1[funcMaxOutputs];
137class StitchingFunction: public Function {
140 StitchingFunction(Object *funcObj, Dict *dict);
141 virtual ~StitchingFunction();
142 virtual Function *copy() const { return new StitchingFunction( this); }
143 virtual void transform( const double *in, double *out) const;
144 virtual GBool isOk() const { return ok; }
148 StitchingFunction( const StitchingFunction *func);
161class PostScriptFunction: public Function {
164 PostScriptFunction(Object *funcObj, Dict *dict);
165 virtual ~PostScriptFunction();
166 virtual Function *copy() const { return new PostScriptFunction( this); }
167 virtual void transform( const double *in, double *out) const;
168 virtual GBool isOk() const { return ok; }
172 PostScriptFunction( const PostScriptFunction *func);
173 GBool parseCode(Stream *str, int *codePtr);
174 GString *getToken(Stream *str);
175 void resizeCode( int newSize);
176 void exec(PSStack *stack, int codePtr) const;
|