GDKSplashOutputDev::GDKSplashOutputDev(GdkScreen *screen,
void (*redrawCbkA)(void *data),
void *redrawCbkDataA):
- SplashOutputDev(splashModeRGB8, gFalse, makeSplashColor (255,255,255)),
+ SplashOutputDev(splashModeRGB8Packed, gFalse, makeSplashColor (255,255,255)),
incrementalUpdate (1)
{
redrawCbk = redrawCbkA;
}
void GDKSplashOutputDev::dump() {
- if (incrementalUpdate) {
+ if (incrementalUpdate && redrawCbk) {
(*redrawCbk)(redrawCbkData);
}
}
GdkDrawable *drawable,
int destX, int destY,
int width, int height) {
- SplashColorPtr dataPtr;
GdkGC *gc;
- guchar *gdk_buf;
int gdk_rowstride;
- int bw, x, y, r, g, b;
- gdk_rowstride = width * 3;
-
- /* better to draw nothing than crash on a huge image */
- gdk_buf = (guchar*) g_try_malloc (height * gdk_rowstride);
- if (gdk_buf == NULL)
- return;
-
- bw = getBitmap()->getWidth();
- dataPtr = getBitmap()->getDataPtr();
-
- for (y = 0; y < height; ++y)
- {
- SplashRGB8 *p;
- SplashRGB8 rgb;
- guchar *gdk_p;
-
- p = dataPtr.rgb8 + (y + srcY) * bw + srcX;
- gdk_p = gdk_buf + y * gdk_rowstride;
- for (x = 0; x < width; ++x)
- {
- rgb = *p++;
- r = splashRGB8R(rgb);
- g = splashRGB8G(rgb);
- b = splashRGB8B(rgb);
-
- *gdk_p++ = r;
- *gdk_p++ = g;
- *gdk_p++ = b;
- }
- }
-
+ gdk_rowstride = getBitmap()->getRowSize();
gc = gdk_gc_new (drawable);
gdk_draw_rgb_image (drawable, gc,
destX, destY,
width, height,
GDK_RGB_DITHER_NORMAL,
- gdk_buf,
+ getBitmap()->getDataPtr().rgb8p + srcY * gdk_rowstride + srcX * 3,
gdk_rowstride);
g_object_unref (gc);
+}
- g_free (gdk_buf);
+void GDKSplashOutputDev::drawToPixbuf(GdkPixbuf *pixbuf, int pageNum) {
+
}
GBool GDKSplashOutputDev::findText(Unicode *s, int len,