diff options
author | 2013-07-23 23:16:03 +0000 | |
---|---|---|
committer | 2013-07-23 23:16:03 +0000 | |
commit | 93a2e213441c75033b04365c7d68c8d3887288ac (patch) | |
tree | 32ae8744cebc20a20591e34ee8c3f5deee31e010 /src/pdf/SkPDFDevice.cpp | |
parent | 2853429d39b16c1bd09d1e88147a608908f284df (diff) |
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
Diffstat (limited to 'src/pdf/SkPDFDevice.cpp')
-rw-r--r-- | src/pdf/SkPDFDevice.cpp | 20 |
1 files changed, 9 insertions, 11 deletions
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<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()), |