msg("<verbose> finishPage (BitmapOutputDev)");
gfxdev->endPage();
- if(layerstate == STATE_BITMAP_IS_ABOVE) {
- this->flushText();
- this->flushBitmap();
- } else {
- this->flushBitmap();
- this->flushText();
- }
+ flushEverything();
/* splash will now destroy alpha, and paint the
background color into the "holes" in the bitmap */
bbox.ymax=max(bbox.ymax,y);
return bbox;
}
+
+GBool invalid_size(int width, int height)
+{
+ if((U64)width*(U64)height > 0x7fffffffll)
+ return 1;
+ return 0;
+}
+
void BitmapOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str,
int width, int height, GBool invert,
GBool inlineImg)
{
msg("<debug> drawImageMask streamkind=%d", str->getKind());
+ if(invalid_size(width,height)) return;
CopyStream*cpystr = new CopyStream(str, height * ((width + 7) / 8));
str = cpystr->getStream();
int *maskColors, GBool inlineImg)
{
msg("<debug> drawImage streamkind=%d", str->getKind());
+ if(invalid_size(width,height)) return;
CopyStream*cpystr = new CopyStream(str, height * ((width * colorMap->getNumPixelComps() * colorMap->getBits() + 7) / 8));
str = cpystr->getStream();
GBool maskInvert)
{
msg("<debug> drawMaskedImage streamkind=%d", str->getKind());
+ if(invalid_size(width,height)) return;
CopyStream*cpystr = new CopyStream(str, height * ((width * colorMap->getNumPixelComps() * colorMap->getBits() + 7) / 8));
str = cpystr->getStream();
GfxImageColorMap *maskColorMap)
{
msg("<debug> drawSoftMaskedImage %dx%d (%dx%d) streamkind=%d", width, height, maskWidth, maskHeight, str->getKind());
+ if(invalid_size(width,height)) return;
CopyStream*cpystr = new CopyStream(str, height * ((width * colorMap->getNumPixelComps() * colorMap->getBits() + 7) / 8));
str = cpystr->getStream();
void BitmapOutputDev::processLink(Link *link, Catalog *catalog)
{
msg("<debug> processLink");
+ flushEverything();
gfxdev->processLink(link, catalog);
}
+void BitmapOutputDev::flushEverything()
+{
+ if(layerstate == STATE_BITMAP_IS_ABOVE) {
+ this->flushText();
+ this->flushBitmap();
+ } else {
+ this->flushBitmap();
+ this->flushText();
+ }
+}
void BitmapOutputDev::beginTransparencyGroup(GfxState *state, double *bbox,
GfxColorSpace *blendingColorSpace,