00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef OUTPUTDEV_H
00010 #define OUTPUTDEV_H
00011
00012 #include <aconf.h>
00013
00014 #ifdef USE_GCC_PRAGMAS
00015 #pragma interface
00016 #endif
00017
00018 #include "gtypes.h"
00019 #include "CharTypes.h"
00020
00021 class GString;
00022 class GfxState;
00023 class GfxColorSpace;
00024 class GfxImageColorMap;
00025 class Stream;
00026 class Link;
00027 class Catalog;
00028
00029
00030
00031
00032
00033 class OutputDev {
00034 public:
00035
00036
00037 OutputDev() {}
00038
00039
00040 virtual ~OutputDev() {}
00041
00042
00043
00044
00045
00046 virtual GBool upsideDown() = 0;
00047
00048
00049 virtual GBool useDrawChar() = 0;
00050
00051
00052
00053 virtual GBool interpretType3Chars() = 0;
00054
00055
00056 virtual GBool needNonText() { return gTrue; }
00057
00058
00059
00060
00061 virtual void setDefaultCTM(const double *ctm);
00062
00063
00064 virtual void startPage(int , GfxState *) {}
00065
00066
00067 virtual void endPage() {}
00068
00069
00070 virtual void dump() {}
00071
00072
00073
00074
00075 virtual void cvtDevToUser(int dx, int dy, double *ux, double *uy);
00076 virtual void cvtUserToDev(double ux, double uy, int *dx, int *dy);
00077
00078
00079 virtual void drawLink(Link *, Catalog *) {}
00080
00081
00082 virtual void saveState(GfxState *) {}
00083 virtual void restoreState(GfxState *) {}
00084
00085
00086 virtual void updateAll(GfxState *state);
00087 virtual void updateCTM(GfxState *, double , double ,
00088 double , double , double , double ) {}
00089 virtual void updateLineDash(GfxState *) {}
00090 virtual void updateFlatness(GfxState *) {}
00091 virtual void updateLineJoin(GfxState *) {}
00092 virtual void updateLineCap(GfxState *) {}
00093 virtual void updateMiterLimit(GfxState *) {}
00094 virtual void updateLineWidth(GfxState *) {}
00095 virtual void updateFillColor(GfxState *) {}
00096 virtual void updateStrokeColor(GfxState *) {}
00097 virtual void updateFillOpacity(GfxState *) {}
00098 virtual void updateStrokeOpacity(GfxState *) {}
00099
00100
00101 virtual void updateFont(GfxState *) {}
00102 virtual void updateTextMat(GfxState *) {}
00103 virtual void updateCharSpace(GfxState *) {}
00104 virtual void updateRender(GfxState *) {}
00105 virtual void updateRise(GfxState *) {}
00106 virtual void updateWordSpace(GfxState *) {}
00107 virtual void updateHorizScaling(GfxState *) {}
00108 virtual void updateTextPos(GfxState *) {}
00109 virtual void updateTextShift(GfxState *, double ) {}
00110
00111
00112 virtual void stroke(GfxState *) {}
00113 virtual void fill(GfxState *) {}
00114 virtual void eoFill(GfxState *) {}
00115
00116
00117 virtual void clip(GfxState *) {}
00118 virtual void eoClip(GfxState *) {}
00119
00120
00121 virtual void beginString(GfxState *, GString *) {}
00122 virtual void endString(GfxState *) {}
00123 virtual void drawChar(GfxState *, double , double ,
00124 double , double ,
00125 double , double ,
00126 CharCode , Unicode *, int ) {}
00127 virtual void drawString(GfxState *, GString *) {}
00128 virtual GBool beginType3Char(GfxState *state,
00129 CharCode code, Unicode *u, int uLen);
00130 virtual void endType3Char(GfxState *) {}
00131
00132
00133 virtual void drawImageMask(GfxState *state, Object *ref, Stream *str,
00134 int width, int height, GBool invert,
00135 GBool inlineImg);
00136 virtual void drawImage(GfxState *state, Object *ref, Stream *str,
00137 int width, int height, GfxImageColorMap *colorMap,
00138 int *maskColors, GBool inlineImg);
00139
00140 #ifdef OPI_SUPPORT
00141
00142 virtual void opiBegin(GfxState *state, Dict *opiDict);
00143 virtual void opiEnd(GfxState *state, Dict *opiDict);
00144 #endif
00145
00146
00147 virtual void type3D0(GfxState *, double , double ) {}
00148 virtual void type3D1(GfxState *, double , double ,
00149 double , double , double , double ) {}
00150
00151
00152 virtual void psXObject(Stream *, Stream *) {}
00153
00154 private:
00155
00156 double defCTM[6];
00157 double defICTM[6];
00158 };
00159
00160 #endif