X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=pdf2swf%2Fxpdf%2FGfxState.cc;h=6e38d55ffc4bdc2a638a7b5afa8c4a300093daa7;hb=67d980b74c1ad32fda94b1807b51136e6aff0dca;hp=051c7b645c8bb5c9a1c7f75b5d1bc5ab2d5d0b43;hpb=f72fd5c03fec8c8d7220c4da964929442962d168;p=swftools.git diff --git a/pdf2swf/xpdf/GfxState.cc b/pdf2swf/xpdf/GfxState.cc index 051c7b6..6e38d55 100644 --- a/pdf2swf/xpdf/GfxState.cc +++ b/pdf2swf/xpdf/GfxState.cc @@ -21,6 +21,7 @@ #include "Array.h" #include "Page.h" #include "GfxState.h" +#include "cmyk.h" //------------------------------------------------------------------------ @@ -468,6 +469,18 @@ void GfxDeviceCMYKColorSpace::getGray(GfxColor *color, GfxGray *gray) { - 0.11 * color->c[2] + 0.5)); } +/*void GfxDeviceCMYKColorSpace::getRGB(GfxColor *color, GfxRGB *rgb) { + unsigned char r,g,b; + float c = color->c[0]; + float m = color->c[1]; + float y = color->c[2]; + float k = color->c[3]; + convert_cmyk2rgb(c,m,y,k, &r,&g,&b); + rgb->r = r/255.0; + rgb->g = g/255.0; + rgb->b = b/255.0; +}*/ + void GfxDeviceCMYKColorSpace::getRGB(GfxColor *color, GfxRGB *rgb) { double c, m, y, k, c1, m1, y1, k1, r, g, b, x; @@ -3099,6 +3112,7 @@ GfxImageColorMap::GfxImageColorMap(int bitsA, Object *decode, GfxIndexedColorSpace *indexedCS; GfxSeparationColorSpace *sepCS; int maxPixel, indexHigh; + int maxPixelForAlloc; Guchar *lookup2; Function *sepFunc; Object obj; @@ -3111,6 +3125,7 @@ GfxImageColorMap::GfxImageColorMap(int bitsA, Object *decode, // bits per component and color space bits = bitsA; maxPixel = (1 << bits) - 1; + maxPixelForAlloc = (1 << (bits>8?bits:8)); colorSpace = colorSpaceA; // get decode map @@ -3163,7 +3178,7 @@ GfxImageColorMap::GfxImageColorMap(int bitsA, Object *decode, lookup2 = indexedCS->getLookup(); colorSpace2->getDefaultRanges(x, y, indexHigh); for (k = 0; k < nComps2; ++k) { - lookup[k] = (GfxColorComp *)gmallocn(maxPixel + 1, + lookup[k] = (GfxColorComp *)gmallocn(maxPixelForAlloc + 1, sizeof(GfxColorComp)); for (i = 0; i <= maxPixel; ++i) { j = (int)(decodeLow[0] + (i * decodeRange[0]) / maxPixel + 0.5); @@ -3182,7 +3197,7 @@ GfxImageColorMap::GfxImageColorMap(int bitsA, Object *decode, nComps2 = colorSpace2->getNComps(); sepFunc = sepCS->getFunc(); for (k = 0; k < nComps2; ++k) { - lookup[k] = (GfxColorComp *)gmallocn(maxPixel + 1, + lookup[k] = (GfxColorComp *)gmallocn(maxPixelForAlloc + 1, sizeof(GfxColorComp)); for (i = 0; i <= maxPixel; ++i) { x[0] = decodeLow[0] + (i * decodeRange[0]) / maxPixel; @@ -3192,7 +3207,7 @@ GfxImageColorMap::GfxImageColorMap(int bitsA, Object *decode, } } else { for (k = 0; k < nComps; ++k) { - lookup[k] = (GfxColorComp *)gmallocn(maxPixel + 1, + lookup[k] = (GfxColorComp *)gmallocn(maxPixelForAlloc + 1, sizeof(GfxColorComp)); for (i = 0; i <= maxPixel; ++i) { lookup[k][i] = dblToCol(decodeLow[k] +