? abi/src/Linux_2.2.12-20_i386_OBJ Index: abi/src/af/gr/xp/gr_Graphics.h =================================================================== RCS file: /cvsroot/abi/src/af/gr/xp/gr_Graphics.h,v retrieving revision 1.24 diff -u -r1.24 gr_Graphics.h --- abi/src/af/gr/xp/gr_Graphics.h 2000/01/07 09:51:39 1.24 +++ abi/src/af/gr/xp/gr_Graphics.h 2000/02/16 11:04:16 @@ -170,6 +170,18 @@ virtual void fillRect(GR_Color3D c, UT_sint32 x, UT_sint32 y, UT_sint32 w, UT_sint32 h) = 0; virtual void fillRect(GR_Color3D c, UT_Rect &r) = 0; + // Line #172 + // Postscript context positions graphics wrt top of current PAGE, NOT + // wrt top of document. The screen graphics engine, though positions + // graphics wrt the top of the document, therefore if we are printing + // page 5 we need to adjust the vertical position of the graphic in the + // postscript image printing routine by (current_page_number-1) * page_height + // I'm going to call this variable m_iRasterPosition, for want of a better name, + // it's not acutally a rasterposition --- any better names would be a good idea, + // I jusy can't think of one right now. + UT_uint32 m_iRasterPosition; + + protected: virtual UT_uint32 _getResolution(void) const = 0; Index: abi/src/af/xap/unix/xap_UnixPSGraphics.cpp =================================================================== RCS file: /cvsroot/abi/src/af/xap/unix/xap_UnixPSGraphics.cpp,v retrieving revision 1.40 diff -u -r1.40 xap_UnixPSGraphics.cpp --- abi/src/af/xap/unix/xap_UnixPSGraphics.cpp 2000/01/29 01:51:39 1.40 +++ abi/src/af/xap/unix/xap_UnixPSGraphics.cpp 2000/02/16 11:04:17 @@ -817,7 +817,7 @@ // translate for quadrant 2, so Y values are negative; land us at // lower left of image (baseline), which is twice the height - sprintf(buf, "%d %d translate\n", xDest, (yDest * -1) - iDestHeight); + sprintf(buf, "%d %d translate\n", xDest, m_iRasterPosition - yDest - iDestHeight); m_ps->writeBytes(buf); sprintf(buf, "%d %d scale\n", iDestWidth, iDestHeight); @@ -887,7 +887,7 @@ // translate for quadrant 2, so Y values are negative; land us at // lower left of image (baseline), which is twice the height - sprintf(buf, "%d %d translate\n", xDest, (yDest * -1) - iDestHeight); + sprintf(buf, "%d %d translate\n", xDest, m_iRasterPosition - yDest - iDestHeight); m_ps->writeBytes(buf); sprintf(buf, "%d %d scale\n", iDestWidth, iDestHeight); Index: abi/src/wp/ap/xp/ap_EditMethods.cpp =================================================================== RCS file: /cvsroot/abi/src/wp/ap/xp/ap_EditMethods.cpp,v retrieving revision 1.179 diff -u -r1.179 ap_EditMethods.cpp --- abi/src/wp/ap/xp/ap_EditMethods.cpp 2000/02/12 16:05:56 1.179 +++ abi/src/wp/ap/xp/ap_EditMethods.cpp 2000/02/16 11:04:22 @@ -3643,6 +3643,10 @@ for (j=1; (j <= nCopies); j++) for (k=nFromPage; (k <= nToPage); k++) { + // NB we will need a better way to calc + // pGraphics->m_iRasterPosition when + // iHeight is allowed to vary page to page + pGraphics->m_iRasterPosition = (k-1)*iHeight; pGraphics->startPage(pDocName, k, UT_TRUE, iWidth, iHeight); pPrintView->draw(k-1, &da); } @@ -3652,6 +3656,10 @@ for (k=nFromPage; (k <= nToPage); k++) for (j=1; (j <= nCopies); j++) { + // NB we will need a better way to calc + // pGraphics->m_iRasterPosition when + // iHeight is allowed to vary page to page + pGraphics->m_iRasterPosition = (k-1)*iHeight; pGraphics->startPage(pDocName, k, UT_TRUE, iWidth, iHeight); pPrintView->draw(k-1, &da); }