From 93a2e213441c75033b04365c7d68c8d3887288ac Mon Sep 17 00:00:00 2001 From: "commit-bot@chromium.org" Date: Tue, 23 Jul 2013 23:16:03 +0000 Subject: Implemented transparent gradients R=vandebo@chromium.org, edisonn@google.com Author: richardlin@chromium.org Review URL: https://chromiumcodereview.appspot.com/18585002 git-svn-id: http://skia.googlecode.com/svn/trunk@10297 2bbb7eff-a529-9590-31e7-b0007b416f81 --- src/pdf/SkPDFDevice.cpp | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'src/pdf/SkPDFDevice.cpp') diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp index d323009af3..f7077a949b 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 maskFormXObject(createFormXObjectFromDevice()); SkAutoTUnref 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()), -- cgit v1.2.3