splash/Splash.cc | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-)
New commits: commit b297fb9de0779ac84d5b7ef68c792afefe598320 Author: William Bader <[email protected]> Date: Sun Feb 27 01:48:55 2011 +0000 access the pixels directly Faster, bug 34005 diff --git a/splash/Splash.cc b/splash/Splash.cc index bf24892..5d65834 100644 --- a/splash/Splash.cc +++ b/splash/Splash.cc @@ -15,6 +15,7 @@ // Copyright (C) 2005 Marco Pesenti Gritti <[email protected]> // Copyright (C) 2010, 2011 Thomas Freitag <[email protected]> // Copyright (C) 2010 Christian Feuersänger <[email protected]> +// Copyright (C) 2011 William Bader <[email protected]> // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -3511,7 +3512,6 @@ GBool Splash::gouraudTriangleShadedFill(SplashGouraudColor *shading) SplashError Splash::blitTransparent(SplashBitmap *src, int xSrc, int ySrc, int xDest, int yDest, int w, int h) { - SplashColor pixel; SplashColorPtr p, sp; Guchar *q; int x, y, mask; @@ -3524,10 +3524,10 @@ SplashError Splash::blitTransparent(SplashBitmap *src, int xSrc, int ySrc, case splashModeMono1: for (y = 0; y < h; ++y) { p = &bitmap->data[(yDest + y) * bitmap->rowSize + (xDest >> 3)]; + sp = &src->data[(ySrc + y) * bitmap->rowSize + (xSrc >> 3)]; mask = 0x80 >> (xDest & 7); for (x = 0; x < w; ++x) { - src->getPixel(xSrc + x, ySrc + y, pixel); - if (pixel[0]) { + if (sp[0] & (0x80 >> (x & 7))) { *p |= mask; } else { *p &= ~mask; @@ -3535,6 +3535,7 @@ SplashError Splash::blitTransparent(SplashBitmap *src, int xSrc, int ySrc, if (!(mask >>= 1)) { mask = 0x80; ++p; + ++sp; } } } @@ -3542,9 +3543,9 @@ SplashError Splash::blitTransparent(SplashBitmap *src, int xSrc, int ySrc, case splashModeMono8: for (y = 0; y < h; ++y) { p = &bitmap->data[(yDest + y) * bitmap->rowSize + xDest]; + sp = &src->data[(ySrc + y) * bitmap->rowSize + xSrc]; for (x = 0; x < w; ++x) { - src->getPixel(xSrc + x, ySrc + y, pixel); - *p++ = pixel[0]; + *p++ = *sp++; } } break; @@ -3577,12 +3578,12 @@ SplashError Splash::blitTransparent(SplashBitmap *src, int xSrc, int ySrc, case splashModeCMYK8: for (y = 0; y < h; ++y) { p = &bitmap->data[(yDest + y) * bitmap->rowSize + 4 * xDest]; + sp = &src->data[(ySrc + y) * bitmap->rowSize + 4 * xSrc]; for (x = 0; x < w; ++x) { - src->getPixel(xSrc + x, ySrc + y, pixel); - *p++ = pixel[0]; - *p++ = pixel[1]; - *p++ = pixel[2]; - *p++ = pixel[3]; + *p++ = *sp++; + *p++ = *sp++; + *p++ = *sp++; + *p++ = *sp++; } } break;
_______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
