X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fpdf%2FBitmapOutputDev.h;h=91e110ae70fcd1108f8545f4ed7f69855fbc0e34;hp=62bca6d660e5ca4323a96d7ec9003bfe378d0d2c;hb=6468644eca8b699a42a9c68048da87b90764f385;hpb=f159751f289e668dc4efa9a080833b5013391075 diff --git a/lib/pdf/BitmapOutputDev.h b/lib/pdf/BitmapOutputDev.h index 62bca6d..91e110a 100644 --- a/lib/pdf/BitmapOutputDev.h +++ b/lib/pdf/BitmapOutputDev.h @@ -38,17 +38,23 @@ struct ClipState ClipState(); }; +#define STATE_PARALLEL 0 +#define STATE_TEXT_IS_ABOVE 1 +#define STATE_BITMAP_IS_ABOVE 2 + class BitmapOutputDev: public CommonOutputDev { public: BitmapOutputDev(InfoOutputDev*info, PDFDoc*doc); virtual ~BitmapOutputDev(); + + virtual void dbg_newdata(char*newdata); // CommonOutputDev: virtual void setDevice(gfxdevice_t*dev); virtual void setMove(int x,int y); virtual void setClip(int x1,int y1,int x2,int y2); virtual void setParameter(const char*key, const char*value); - virtual void preparePage(int pdfpage, int outputpage); + virtual void setPageMap(int*page2page, int pagemap_size); // OutputDev: virtual GBool upsideDown(); @@ -68,6 +74,7 @@ public: virtual void startPage(int pageNum, GfxState *state, double x1,double y1,double x2,double y2); virtual void endPage(); + virtual void finishPage(); virtual void saveState(GfxState *state); virtual void restoreState(GfxState *state); @@ -123,7 +130,6 @@ public: virtual GBool axialShadedFill(GfxState *state, GfxAxialShading *shading); virtual GBool radialShadedFill(GfxState *state, GfxRadialShading *shading); - void doClip(GfxState *state, GBool eo); virtual void clip(GfxState *state); virtual void eoClip(GfxState *state); virtual void clipToStrokePath(GfxState *state); @@ -178,12 +184,29 @@ public: virtual void processLink(Link *link, Catalog *catalog); virtual void setVectorAntialias(GBool vaa); + virtual GBool getVectorAntialias(); + private: - void flush(); + void flushEverything(); + void clearClips(); + void clearBoolPolyDev(); + void clearBoolTextDev(); + void flushText(); + void flushBitmap(); + GBool checkNewText(int x1, int y1, int x2, int y2); + GBool checkNewBitmap(int x1, int y1, int x2, int y2); + GBool clip0and1differ(int x1,int y1,int x2,int y2); + GBool intersection(SplashBitmap*boolpoly, SplashBitmap*booltext, int x1, int y1, int x2, int y2); + + virtual gfxbbox_t getImageBBox(GfxState*state); + virtual gfxbbox_t getBBox(GfxState*state); - char config_bitmapfonts; char config_extrafontdata; + char config_optimizeplaincolorfills; + + int layerstate; + GBool emptypage; SplashPath*bboxpath; @@ -192,6 +215,18 @@ private: SplashOutputDev*rgbdev; SplashOutputDev*clip0dev; SplashOutputDev*clip1dev; + SplashOutputDev*boolpolydev; + SplashOutputDev*booltextdev; + + SplashBitmap*rgbbitmap; + SplashBitmap*clip0bitmap; + SplashBitmap*clip1bitmap; + SplashBitmap*boolpolybitmap; + SplashBitmap*stalepolybitmap; + SplashBitmap*booltextbitmap; + SplashBitmap*staletextbitmap; + + gfxdevice_t* gfxoutput; GFXOutputDev*gfxdev; InfoOutputDev*info; gfxdevice_t*dev;