added new function finishPage(), to be called after links are processed
authorkramm <kramm>
Wed, 14 May 2008 06:47:24 +0000 (06:47 +0000)
committerkramm <kramm>
Wed, 14 May 2008 06:47:24 +0000 (06:47 +0000)
lib/pdf/BitmapOutputDev.cc
lib/pdf/BitmapOutputDev.h
lib/pdf/CommonOutputDev.h
lib/pdf/pdf.cc

index e551fd6..c9cbd0c 100644 (file)
@@ -552,6 +552,13 @@ void BitmapOutputDev::startPage(int pageNum, GfxState *state, double crop_x1, do
 void BitmapOutputDev::endPage()
 {
     msg("<verbose> endPage (BitmapOutputDev)");
+
+    /* notice: we're not fully done yet with this page- there might still be 
+       a few calls to drawLink() yet to come */
+}
+void BitmapOutputDev::finishPage()
+{
+    msg("<verbose> finishPage (BitmapOutputDev)");
     gfxdev->endPage();
    
     if(layerstate == STATE_BITMAP_IS_ABOVE) {
@@ -569,9 +576,6 @@ void BitmapOutputDev::endPage()
     rgbdev->endPage();
     clip0dev->endPage();
     clip1dev->endPage();
-
-    /* notice: we're not fully done yet with this page- there might still be 
-       a few calls to drawLink() yet to come */
 }
 
 GBool BitmapOutputDev::upsideDown()
index 67c1c59..3adf11a 100644 (file)
@@ -72,6 +72,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);
index 746bc71..9a024c1 100644 (file)
@@ -37,5 +37,6 @@ class CommonOutputDev: public OutputDev
     virtual void setParameter(const char*key, const char*value) = 0;
   
     virtual void preparePage(int pdfpage, int outputpage) = 0;
+    virtual void finishPage() {};
 };
 #endif //__deviceinterface_h__
index 2579978..a5b2607 100644 (file)
@@ -108,6 +108,8 @@ void render2(gfxpage_t*page, gfxdevice_t*dev)
     }
     pi->doc->displayPage((OutputDev*)pi->outputDev, page->nr, zoom*multiply, zoom*multiply, /*rotate*/0, true, true, /*doLinks*/(int)1);
     pi->doc->processLinks((OutputDev*)pi->outputDev, page->nr);
+    pi->outputDev->finishPage();
+
     pi->outputDev->setDevice(0);
     if(pi->middev) {
        gfxdevice_rescale_setdevice(pi->middev, 0x00000000);