Ignore:
Timestamp:
Dec 21, 2008, 8:03:13 AM (13 years ago)
Author:
Eugene Romanenko
Message:

PDF plugin: Poppler library updated to version 0.10.2

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/poppler/mypoppler/poppler/Gfx.cc

    r257 r261  
    497497  printCommands = globalParams->getPrintCommands();
    498498  profileCommands = globalParams->getProfileCommands();
     499  mcStack = NULL;
    499500
    500501  // start the resource stack
     
    540541  subPage = gTrue;
    541542  printCommands = globalParams->getPrintCommands();
     543  mcStack = NULL;
    542544
    543545  // start the resource stack
     
    582584  if (state) {
    583585    delete state;
     586  }
     587  while (mcStack) {
     588    popMarkedContent();
    584589  }
    585590}
     
    15631568    return;
    15641569  }
    1565   if (state->isPath()) {
     1570  if (state->isPath() && !contentIsHidden()) {
    15661571    if (state->getStrokeColorSpace()->getMode() == csPattern) {
    15671572      doPatternStroke();
     
    15791584  }
    15801585  state->closePath();
    1581   if (state->isPath()) {
     1586  if (state->isPath() && !contentIsHidden()) {
    15821587    if (state->getStrokeColorSpace()->getMode() == csPattern) {
    15831588      doPatternStroke();
     
    15941599    return;
    15951600  }
    1596   if (state->isPath()) {
     1601  if (state->isPath() && !contentIsHidden()) {
    15971602    if (state->getFillColorSpace()->getMode() == csPattern) {
    15981603      doPatternFill(gFalse);
     
    16091614    return;
    16101615  }
    1611   if (state->isPath()) {
     1616  if (state->isPath() && !contentIsHidden()) {
    16121617    if (state->getFillColorSpace()->getMode() == csPattern) {
    16131618      doPatternFill(gTrue);
     
    16241629    return;
    16251630  }
    1626   if (state->isPath()) {
     1631  if (state->isPath() && !contentIsHidden()) {
    16271632    if (state->getFillColorSpace()->getMode() == csPattern) {
    16281633      doPatternFill(gFalse);
     
    16441649    return;
    16451650  }
    1646   if (state->isPath()) {
     1651  if (state->isPath() && !contentIsHidden()) {
    16471652    state->closePath();
    16481653    if (state->getFillColorSpace()->getMode() == csPattern) {
     
    16651670    return;
    16661671  }
    1667   if (state->isPath()) {
     1672  if (state->isPath() && !contentIsHidden()) {
    16681673    if (state->getFillColorSpace()->getMode() == csPattern) {
    16691674      doPatternFill(gTrue);
     
    16851690    return;
    16861691  }
    1687   if (state->isPath()) {
     1692  if (state->isPath() && !contentIsHidden()) {
    16881693    state->closePath();
    16891694    if (state->getFillColorSpace()->getMode() == csPattern) {
     
    19121917    m1[4] = m[4];
    19131918    m1[5] = m[5];
    1914     out->tilingPatternFill(state, tPat->getContentStream(),
    1915                            tPat->getPaintType(), tPat->getResDict(),
    1916                            m1, tPat->getBBox(),
    1917                            xi0, yi0, xi1, yi1, xstep, ystep);
     1919    if (!contentIsHidden()) {
     1920      out->tilingPatternFill(state, tPat->getContentStream(),
     1921                             tPat->getPaintType(), tPat->getResDict(),
     1922                             m1, tPat->getBBox(),
     1923                             xi0, yi0, xi1, yi1, xstep, ystep);
     1924    }
    19181925  } else {
    19191926    for (yi = yi0; yi < yi1; ++yi) {
     
    19841991    state->setFillColor(shading->getBackground());
    19851992    out->updateFillColor(state);
    1986     out->fill(state);
     1993    if (!contentIsHidden())
     1994      out->fill(state);
    19871995  }
    19881996  state->clearPath();
     
    21972205                  x0 * matrix[1] + y1 * matrix[3] + matrix[5]);
    21982206    state->closePath();
    2199     out->fill(state);
     2207    if (!contentIsHidden())
     2208      out->fill(state);
    22002209    state->clearPath();
    22012210
     
    24862495    state->lineTo(ux1, uy1);
    24872496    state->closePath();
    2488     out->fill(state);
     2497    if (!contentIsHidden())
     2498      out->fill(state);
    24892499    state->clearPath();
    24902500
     
    27622772
    27632773    // fill the path
    2764     out->fill(state);
     2774    if (!contentIsHidden())
     2775      out->fill(state);
    27652776    state->clearPath();
    27662777
     
    27992810      }
    28002811      state->closePath();
    2801       out->fill(state);
     2812      if (!contentIsHidden())
     2813        out->fill(state);
    28022814      state->clearPath();
    28032815    }
     
    28312843      }
    28322844      state->closePath();
    2833       out->fill(state);
     2845      if (!contentIsHidden())
     2846        out->fill(state);
    28342847      state->clearPath();
    28352848    }
     
    28722885    state->lineTo(x2, y2);
    28732886    state->closePath();
    2874     out->fill(state);
     2887    if (!contentIsHidden())
     2888      out->fill(state);
    28752889    state->clearPath();
    28762890  } else {
     
    29522966                   patch->x[0][0], patch->y[0][0]);
    29532967    state->closePath();
    2954     out->fill(state);
     2968    if (!contentIsHidden())
     2969      out->fill(state);
    29552970    state->clearPath();
    29562971  } else {
     
    34123427      originY *= state->getFontSize();
    34133428      state->textTransformDelta(originX, originY, &tOriginX, &tOriginY);
    3414       out->drawChar(state, state->getCurX() + riseX, state->getCurY() + riseY,
    3415                     tdx, tdy, tOriginX, tOriginY, code, n, u, uLen);
     3429      if (!contentIsHidden()) {
     3430        out->drawChar(state, state->getCurX() + riseX, state->getCurY() + riseY,
     3431                      tdx, tdy, tOriginX, tOriginY, code, n, u, uLen);
     3432      }
    34163433      state->shift(tdx, tdy);
    34173434      p += n;
     
    34503467    }
    34513468    state->textTransformDelta(dx, dy, &tdx, &tdy);
    3452     out->drawString(state, s);
     3469    if (!contentIsHidden())
     3470      out->drawString(state, s);
    34533471    state->shift(tdx, tdy);
    34543472  }
     
    36443662
    36453663    // draw it
    3646     out->drawImageMask(state, ref, str, width, height, invert, inlineImg);
     3664    if (!contentIsHidden())
     3665      out->drawImageMask(state, ref, str, width, height, invert, inlineImg);
    36473666
    36483667  } else {
     
    38343853    // draw it
    38353854    if (haveSoftMask) {
    3836       out->drawSoftMaskedImage(state, ref, str, width, height, colorMap,
    3837                                maskStr, maskWidth, maskHeight, maskColorMap);
     3855      if (!contentIsHidden()) {
     3856        out->drawSoftMaskedImage(state, ref, str, width, height, colorMap,
     3857                                 maskStr, maskWidth, maskHeight, maskColorMap);
     3858      }
    38383859      delete maskColorMap;
    3839     } else if (haveExplicitMask) {
     3860    } else if (haveExplicitMask && !contentIsHidden ()) {
    38403861      out->drawMaskedImage(state, ref, str, width, height, colorMap,
    38413862                           maskStr, maskWidth, maskHeight, maskInvert);
    3842     } else {
     3863    } else if (!contentIsHidden()) {
    38433864      out->drawImage(state, ref, str, width, height, colorMap,
    38443865                     haveColorKeyMask ? maskColors : (int *)NULL, inlineImg);
     
    41544175//------------------------------------------------------------------------
    41554176
     4177struct MarkedContentStack {
     4178  GBool ocSuppressed;       // are we ignoring content based on OptionalContent?
     4179  MarkedContentStack *next; // next object on stack
     4180};
     4181
     4182void Gfx::popMarkedContent() {
     4183  MarkedContentStack *mc = mcStack;
     4184  mcStack = mc->next;
     4185  delete mc;
     4186}
     4187
     4188void Gfx::pushMarkedContent() {
     4189  MarkedContentStack *mc = new MarkedContentStack();
     4190  mc->ocSuppressed = gFalse;
     4191  mc->next = mcStack;
     4192  mcStack = mc;
     4193}
     4194
     4195GBool Gfx::contentIsHidden() {
     4196  return mcStack && mcStack->ocSuppressed;
     4197}
     4198
    41564199void Gfx::opBeginMarkedContent(Object args[], int numArgs) {
    4157   // TODO: we really need to be adding this to the markedContentStack
     4200  // push a new stack entry
     4201  pushMarkedContent();
     4202 
    41584203  OCGs *contentConfig = catalog->getOptContentConfig();
    4159        
    41604204  char* name0 = args[0].getName();
    41614205  if ( strncmp( name0, "OC", 2) == 0 && contentConfig) {
     
    41694213        if ( markedContent.isRef() ) {
    41704214          bool visible = contentConfig->optContentIsVisible( &markedContent );
    4171           ocSuppressed = !(visible);
     4215          MarkedContentStack *mc = mcStack;
     4216          mc->ocSuppressed = !(visible);
    41724217       }
    41734218      } else {
     
    41784223    }
    41794224  }
    4180 
    41814225
    41824226  if (printCommands) {
     
    41964240
    41974241void Gfx::opEndMarkedContent(Object args[], int numArgs) {
    4198   // TODO: we should turn this off based on the markedContentStack
    4199   ocSuppressed = false;
     4242  // pop the stack
     4243  if (mcStack)
     4244    popMarkedContent();
    42004245  out->endMarkedContent(state);
    42014246}
     
    42104255  }
    42114256
    4212   if(numArgs == 2) {
     4257  if(numArgs == 2 && args[1].isDict()) {
    42134258    out->markPoint(args[0].getName(),args[1].getDict());
    42144259  } else {
Note: See TracChangeset for help on using the changeset viewer.