+typedef struct _feature
+{
+ char*string;
+ struct _feature*next;
+} feature_t;
+feature_t*featurewarnings = 0;
+
+static void warnfeature(char*feature,char fully)
+{
+ feature_t*f = featurewarnings;
+ while(f) {
+ if(!strcmp(feature, f->string))
+ return;
+ f = f->next;
+ }
+ f = (feature_t*)malloc(sizeof(feature_t));
+ f->string = strdup(feature);
+ f->next = featurewarnings;
+ featurewarnings = f;
+ msg("<warning> %s not yet %ssupported!",feature,fully?"fully ":"");
+}
+
void GFXOutputDev::fillGfxLine(GfxState *state, gfxline_t*line)
{
gfxcolor_t col = getFillColor(state);
void GFXOutputDev::fillGfxLine(GfxState *state, gfxline_t*line)
{
gfxcolor_t col = getFillColor(state);
if(getLogLevel() >= LOGLEVEL_TRACE) {
msg("<trace> fill %02x%02x%02x%02x\n", col.r, col.g, col.b, col.a);
dump_outline(line);
}
if(getLogLevel() >= LOGLEVEL_TRACE) {
msg("<trace> fill %02x%02x%02x%02x\n", col.r, col.g, col.b, col.a);
dump_outline(line);
}
-void GFXOutputDev::clip(GfxState *state)
-{
- GfxPath * path = state->getPath();
- gfxline_t*line = gfxPath_to_gfxline(state, path, 1, user_movex + clipmovex, user_movey + clipmovey);
- clipToGfxLine(state, line);
- gfxline_free(line);
-}
-
void GFXOutputDev::clipToGfxLine(GfxState *state, gfxline_t*line)
{
if(getLogLevel() >= LOGLEVEL_TRACE) {
void GFXOutputDev::clipToGfxLine(GfxState *state, gfxline_t*line)
{
if(getLogLevel() >= LOGLEVEL_TRACE) {
device->startclip(device, line);
states[statepos].clipping++;
}
device->startclip(device, line);
states[statepos].clipping++;
}
+
+void GFXOutputDev::clip(GfxState *state)
+{
+ if(states[statepos].createsoftmask)
+ return;
+
+ GfxPath * path = state->getPath();
+ gfxline_t*line = gfxPath_to_gfxline(state, path, 1, user_movex + clipmovex, user_movey + clipmovey);
+ clipToGfxLine(state, line);
+ gfxline_free(line);
+}
+
double originX, double originY,
CharCode c, int nBytes, Unicode *_u, int uLen)
{
double originX, double originY,
CharCode c, int nBytes, Unicode *_u, int uLen)
{
int width, int height, GBool invert,
GBool inlineImg)
{
int width, int height, GBool invert,
GBool inlineImg)
{
return;
msg("<verbose> drawImageMask %dx%d, invert=%d inline=%d", width, height, invert, inlineImg);
drawGeneralImage(state,ref,str,width,height,0,invert,inlineImg,1, 0, 0,0,0,0, 0);
return;
msg("<verbose> drawImageMask %dx%d, invert=%d inline=%d", width, height, invert, inlineImg);
drawGeneralImage(state,ref,str,width,height,0,invert,inlineImg,1, 0, 0,0,0,0, 0);
int width, int height, GfxImageColorMap *colorMap,
int *maskColors, GBool inlineImg)
{
int width, int height, GfxImageColorMap *colorMap,
int *maskColors, GBool inlineImg)
{
return;
msg("<verbose> drawImage %dx%d, %s, %s, inline=%d", width, height,
colorMap?"colorMap":"no colorMap",
return;
msg("<verbose> drawImage %dx%d, %s, %s, inline=%d", width, height,
colorMap?"colorMap":"no colorMap",
Stream *maskStr, int maskWidth, int maskHeight,
GBool maskInvert)
{
Stream *maskStr, int maskWidth, int maskHeight,
GBool maskInvert)
{
return;
msg("<verbose> drawMaskedImage %dx%d, %s, %dx%d mask", width, height,
colorMap?"colorMap":"no colorMap",
return;
msg("<verbose> drawMaskedImage %dx%d, %s, %dx%d mask", width, height,
colorMap?"colorMap":"no colorMap",
int maskWidth, int maskHeight,
GfxImageColorMap *maskColorMap)
{
int maskWidth, int maskHeight,
GfxImageColorMap *maskColorMap)
{
return;
msg("<verbose> drawSoftMaskedImage %dx%d, %s, %dx%d mask", width, height,
colorMap?"colorMap":"no colorMap",
return;
msg("<verbose> drawSoftMaskedImage %dx%d, %s, %dx%d mask", width, height,
colorMap?"colorMap":"no colorMap",
GfxPath * path = state->getPath();
gfxline_t*line= gfxPath_to_gfxline(state, path, 1, user_movex + clipmovex, user_movey + clipmovey);
fillGfxLine(state, line);
GfxPath * path = state->getPath();
gfxline_t*line= gfxPath_to_gfxline(state, path, 1, user_movex + clipmovex, user_movey + clipmovey);
fillGfxLine(state, line);
void GFXOutputDev::beginTransparencyGroup(GfxState *state, double *bbox,
GfxColorSpace *blendingColorSpace,
GBool isolated, GBool knockout,
GBool forSoftMask)
{
char*colormodename = GfxColorSpace::getColorSpaceModeName(blendingColorSpace->getMode());
void GFXOutputDev::beginTransparencyGroup(GfxState *state, double *bbox,
GfxColorSpace *blendingColorSpace,
GBool isolated, GBool knockout,
GBool forSoftMask)
{
char*colormodename = GfxColorSpace::getColorSpaceModeName(blendingColorSpace->getMode());
- msg("<verbose> beginTransparencyGroup %f/%f/%f/%f %s isolated=%d knockout=%d forsoftmask=%d", bbox[0],bbox[1],bbox[2],bbox[3], colormodename, isolated, knockout, forSoftMask);
- createsoftmask = forSoftMask;
- transparencyGroup = !forSoftMask;
-
- if(transparencyGroup) {
+ msg("<verbose> beginTransparencyGroup %.1f/%.1f/%.1f/%.1f %s isolated=%d knockout=%d forsoftmask=%d", bbox[0],bbox[1],bbox[2],bbox[3], colormodename, isolated, knockout, forSoftMask);
+ states[statepos].createsoftmask = forSoftMask;
+ states[statepos].transparencygroup = !forSoftMask;
+
+ if(!forSoftMask) {
}
void GFXOutputDev::paintTransparencyGroup(GfxState *state, double *bbox)
{
msg("<verbose> paintTransparencyGroup");
}
void GFXOutputDev::paintTransparencyGroup(GfxState *state, double *bbox)
{
msg("<verbose> paintTransparencyGroup");
}
void GFXOutputDev::setSoftMask(GfxState *state, double *bbox, GBool alpha, Function *transferFunc, GfxColor *rgb)
{
}
void GFXOutputDev::setSoftMask(GfxState *state, double *bbox, GBool alpha, Function *transferFunc, GfxColor *rgb)
{
bbox[0], bbox[1], bbox[2], bbox[3], alpha, colToByte(rgb->c[0]), colToByte(rgb->c[1]), colToByte(rgb->c[2]));
bbox[0], bbox[1], bbox[2], bbox[3], alpha, colToByte(rgb->c[0]), colToByte(rgb->c[1]), colToByte(rgb->c[2]));