function.h

来自「source code: Covert TXT to PDF」· C头文件 代码 · 共 184 行

H
184
字号
//========================================================================//// Function.h//// Copyright 2001-2002 Glyph & Cog, LLC////========================================================================#ifndef FUNCTION_H#define FUNCTION_H#include <aconf.h>#ifdef USE_GCC_PRAGMAS#pragma interface#endif#include "gtypes.h"#include "Object.h"class Dict;class Stream;struct PSObject;class PSStack;//------------------------------------------------------------------------// Function//------------------------------------------------------------------------#define funcMaxInputs  8#define funcMaxOutputs 8class Function {public:  Function();  virtual ~Function();  // Construct a function.  Returns NULL if unsuccessful.  static Function *parse(Object *funcObj);  // Initialize the entries common to all function types.  GBool init(Dict *dict);  virtual Function *copy() = 0;  // Return size of input and output tuples.  int getInputSize() { return m; }  int getOutputSize() { return n; }  // Transform an input tuple into an output tuple.  virtual void transform(double *in, double *out) = 0;  virtual GBool isOk() = 0;protected:  int m, n;			// size of input and output tuples  double			// min and max values for function domain    domain[funcMaxInputs][2];  double			// min and max values for function range    range[funcMaxOutputs][2];  GBool hasRange;		// set if range is defined};//------------------------------------------------------------------------// IdentityFunction//------------------------------------------------------------------------class IdentityFunction: public Function {public:  IdentityFunction();  virtual ~IdentityFunction();  virtual Function *copy() { return new IdentityFunction(); }  virtual void transform(double *in, double *out);  virtual GBool isOk() { return gTrue; }private:};//------------------------------------------------------------------------// SampledFunction//------------------------------------------------------------------------class SampledFunction: public Function {public:  SampledFunction(Object *funcObj, Dict *dict);  virtual ~SampledFunction();  virtual Function *copy() { return new SampledFunction(this); }  virtual void transform(double *in, double *out);  virtual GBool isOk() { return ok; }private:  SampledFunction(SampledFunction *func);  int				// number of samples for each domain element    sampleSize[funcMaxInputs];  double			// min and max values for domain encoder    encode[funcMaxInputs][2];  double			// min and max values for range decoder    decode[funcMaxOutputs][2];  double *samples;		// the samples  GBool ok;};//------------------------------------------------------------------------// ExponentialFunction//------------------------------------------------------------------------class ExponentialFunction: public Function {public:  ExponentialFunction(Object *funcObj, Dict *dict);  virtual ~ExponentialFunction();  virtual Function *copy() { return new ExponentialFunction(this); }  virtual void transform(double *in, double *out);  virtual GBool isOk() { return ok; }private:  ExponentialFunction(ExponentialFunction *func);  double c0[funcMaxOutputs];  double c1[funcMaxOutputs];  double e;  GBool ok;};//------------------------------------------------------------------------// StitchingFunction//------------------------------------------------------------------------class StitchingFunction: public Function {public:  StitchingFunction(Object *funcObj, Dict *dict);  virtual ~StitchingFunction();  virtual Function *copy() { return new StitchingFunction(this); }  virtual void transform(double *in, double *out);  virtual GBool isOk() { return ok; }private:  StitchingFunction(StitchingFunction *func);  int k;  Function **funcs;  double *bounds;  double *encode;  GBool ok;};//------------------------------------------------------------------------// PostScriptFunction//------------------------------------------------------------------------class PostScriptFunction: public Function {public:  PostScriptFunction(Object *funcObj, Dict *dict);  virtual ~PostScriptFunction();  virtual Function *copy() { return new PostScriptFunction(this); }  virtual void transform(double *in, double *out);  virtual GBool isOk() { return ok; }private:  PostScriptFunction(PostScriptFunction *func);  GBool parseCode(Stream *str, int *codePtr);  GString *getToken(Stream *str);  void resizeCode(int newSize);  void exec(PSStack *stack, int codePtr);  PSObject *code;  int codeSize;  GBool ok;};#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?