| Index: src/pdf/SkPDFDevice.cpp
|
| diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp
|
| index d323009af337584d8fd9ecad62d10787d01e4804..f7077a949b9921e7a8ac9835f53710bb69b9c0c4 100644
|
| --- a/src/pdf/SkPDFDevice.cpp
|
| +++ b/src/pdf/SkPDFDevice.cpp
|
| @@ -425,14 +425,7 @@ void GraphicStackState::updateDrawingState(const GraphicStateEntry& state) {
|
| // PDF treats a shader as a color, so we only set one or the other.
|
| if (state.fShaderIndex >= 0) {
|
| if (state.fShaderIndex != currentEntry()->fShaderIndex) {
|
| - SkString resourceName = SkPDFResourceDict::getResourceName(
|
| - SkPDFResourceDict::kPattern_ResourceType,
|
| - state.fShaderIndex);
|
| - fContentStream->writeText("/Pattern CS /Pattern cs /");
|
| - fContentStream->writeText(resourceName.c_str());
|
| - fContentStream->writeText(" SCN /");
|
| - fContentStream->writeText(resourceName.c_str());
|
| - fContentStream->writeText(" scn\n");
|
| + SkPDFUtils::ApplyPattern(state.fShaderIndex, fContentStream);
|
| currentEntry()->fShaderIndex = state.fShaderIndex;
|
| }
|
| } else {
|
| @@ -1407,7 +1400,8 @@ void SkPDFDevice::drawFormXObjectWithClip(SkPDFFormXObject* xobject,
|
| this->drawPaint(draw, stockPaint);
|
| SkAutoTUnref<SkPDFFormXObject> maskFormXObject(createFormXObjectFromDevice());
|
| SkAutoTUnref<SkPDFGraphicState> sMaskGS(
|
| - SkPDFGraphicState::GetSMaskGraphicState(maskFormXObject, invertClip));
|
| + SkPDFGraphicState::GetSMaskGraphicState(maskFormXObject, invertClip,
|
| + SkPDFGraphicState::kAlpha_SMaskMode));
|
|
|
| // Draw the xobject with the clip as a mask.
|
| ScopedContentEntry content(this, &fExistingClipStack, fExistingClipRegion,
|
| @@ -1563,12 +1557,16 @@ void SkPDFDevice::finishContentEntry(const SkXfermode::Mode xfermode,
|
| if (xfermode == SkXfermode::kSrcIn_Mode ||
|
| xfermode == SkXfermode::kSrcOut_Mode) {
|
| sMaskGS.reset(SkPDFGraphicState::GetSMaskGraphicState(
|
| - dst, xfermode == SkXfermode::kSrcOut_Mode));
|
| + dst,
|
| + xfermode == SkXfermode::kSrcOut_Mode,
|
| + SkPDFGraphicState::kAlpha_SMaskMode));
|
| fXObjectResources.push(srcFormXObject.get());
|
| srcFormXObject.get()->ref();
|
| } else {
|
| sMaskGS.reset(SkPDFGraphicState::GetSMaskGraphicState(
|
| - srcFormXObject.get(), xfermode == SkXfermode::kDstOut_Mode));
|
| + srcFormXObject.get(),
|
| + xfermode == SkXfermode::kDstOut_Mode,
|
| + SkPDFGraphicState::kAlpha_SMaskMode));
|
| // dst already added to fXObjectResources in drawFormXObjectWithClip.
|
| }
|
| SkPDFUtils::ApplyGraphicState(addGraphicStateResource(sMaskGS.get()),
|
|
|