Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(145)

Side by Side Diff: src/pdf/SkPDFShader.cpp

Issue 849103004: Make SkStream *not* ref counted. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Rebase, just in case. Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/pdf/SkPDFImage.cpp ('k') | src/pdf/SkPDFStream.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #include "SkPDFShader.h" 10 #include "SkPDFShader.h"
(...skipping 745 matching lines...) Expand 10 before | Expand all | Expand 10 after
756 * luminosity mode. The shader pattern extends to the bbox. 756 * luminosity mode. The shader pattern extends to the bbox.
757 */ 757 */
758 SkPDFGraphicState* SkPDFAlphaFunctionShader::CreateSMaskGraphicState() { 758 SkPDFGraphicState* SkPDFAlphaFunctionShader::CreateSMaskGraphicState() {
759 SkRect bbox; 759 SkRect bbox;
760 bbox.set(fState.get()->fBBox); 760 bbox.set(fState.get()->fBBox);
761 761
762 SkAutoTUnref<SkPDFObject> luminosityShader( 762 SkAutoTUnref<SkPDFObject> luminosityShader(
763 SkPDFShader::GetPDFShaderByState( 763 SkPDFShader::GetPDFShaderByState(
764 fState->CreateAlphaToLuminosityState())); 764 fState->CreateAlphaToLuminosityState()));
765 765
766 SkAutoTUnref<SkStream> alphaStream(create_pattern_fill_content(-1, bbox)); 766 SkAutoTDelete<SkStream> alphaStream(create_pattern_fill_content(-1, bbox));
767 767
768 SkAutoTUnref<SkPDFResourceDict> 768 SkAutoTUnref<SkPDFResourceDict>
769 resources(get_gradient_resource_dict(luminosityShader, NULL)); 769 resources(get_gradient_resource_dict(luminosityShader, NULL));
770 770
771 SkAutoTUnref<SkPDFFormXObject> alphaMask( 771 SkAutoTUnref<SkPDFFormXObject> alphaMask(
772 new SkPDFFormXObject(alphaStream.get(), bbox, resources.get())); 772 new SkPDFFormXObject(alphaStream.get(), bbox, resources.get()));
773 773
774 return SkPDFGraphicState::GetSMaskGraphicState( 774 return SkPDFGraphicState::GetSMaskGraphicState(
775 alphaMask.get(), false, 775 alphaMask.get(), false,
776 SkPDFGraphicState::kLuminosity_SMaskMode); 776 SkPDFGraphicState::kLuminosity_SMaskMode);
777 } 777 }
778 778
779 SkPDFAlphaFunctionShader::SkPDFAlphaFunctionShader(SkPDFShader::State* state) 779 SkPDFAlphaFunctionShader::SkPDFAlphaFunctionShader(SkPDFShader::State* state)
780 : fState(state) { 780 : fState(state) {
781 SkRect bbox; 781 SkRect bbox;
782 bbox.set(fState.get()->fBBox); 782 bbox.set(fState.get()->fBBox);
783 783
784 fColorShader.reset( 784 fColorShader.reset(
785 SkPDFShader::GetPDFShaderByState(state->CreateOpaqueState())); 785 SkPDFShader::GetPDFShaderByState(state->CreateOpaqueState()));
786 786
787 // Create resource dict with alpha graphics state as G0 and 787 // Create resource dict with alpha graphics state as G0 and
788 // pattern shader as P0, then write content stream. 788 // pattern shader as P0, then write content stream.
789 SkAutoTUnref<SkPDFGraphicState> alphaGs(CreateSMaskGraphicState()); 789 SkAutoTUnref<SkPDFGraphicState> alphaGs(CreateSMaskGraphicState());
790 fResourceDict.reset( 790 fResourceDict.reset(
791 get_gradient_resource_dict(fColorShader.get(), alphaGs.get())); 791 get_gradient_resource_dict(fColorShader.get(), alphaGs.get()));
792 792
793 SkAutoTUnref<SkStream> colorStream( 793 SkAutoTDelete<SkStream> colorStream(
794 create_pattern_fill_content(0, bbox)); 794 create_pattern_fill_content(0, bbox));
795 setData(colorStream.get()); 795 setData(colorStream.get());
796 796
797 populate_tiling_pattern_dict(this, bbox, fResourceDict.get(), 797 populate_tiling_pattern_dict(this, bbox, fResourceDict.get(),
798 SkMatrix::I()); 798 SkMatrix::I());
799 } 799 }
800 800
801 // Finds affine and persp such that in = affine * persp. 801 // Finds affine and persp such that in = affine * persp.
802 // but it returns the inverse of perspective matrix. 802 // but it returns the inverse of perspective matrix.
803 static bool split_perspective(const SkMatrix in, SkMatrix* affine, 803 static bool split_perspective(const SkMatrix in, SkMatrix* affine,
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
1149 if (tileModes[0] == SkShader::kMirror_TileMode) { 1149 if (tileModes[0] == SkShader::kMirror_TileMode) {
1150 bottomMatrix.postScale(-1, 1); 1150 bottomMatrix.postScale(-1, 1);
1151 bottomMatrix.postTranslate(2 * width, 0); 1151 bottomMatrix.postTranslate(2 * width, 0);
1152 drawBitmapMatrix(&canvas, bottom, bottomMatrix); 1152 drawBitmapMatrix(&canvas, bottom, bottomMatrix);
1153 } 1153 }
1154 patternBBox.fBottom = deviceBounds.height(); 1154 patternBBox.fBottom = deviceBounds.height();
1155 } 1155 }
1156 } 1156 }
1157 1157
1158 // Put the canvas into the pattern stream (fContent). 1158 // Put the canvas into the pattern stream (fContent).
1159 SkAutoTUnref<SkStream> content(pattern.content()); 1159 SkAutoTDelete<SkStream> content(pattern.content());
1160 setData(content.get()); 1160 setData(content.get());
1161 SkPDFResourceDict* resourceDict = pattern.getResourceDict(); 1161 SkPDFResourceDict* resourceDict = pattern.getResourceDict();
1162 resourceDict->getReferencedResources(fResources, &fResources, false); 1162 resourceDict->getReferencedResources(fResources, &fResources, false);
1163 1163
1164 populate_tiling_pattern_dict(this, patternBBox, 1164 populate_tiling_pattern_dict(this, patternBBox,
1165 pattern.getResourceDict(), finalMatrix); 1165 pattern.getResourceDict(), finalMatrix);
1166 1166
1167 fState.get()->fImage.unlockPixels(); 1167 fState.get()->fImage.unlockPixels();
1168 } 1168 }
1169 1169
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
1369 return false; 1369 return false;
1370 } 1370 }
1371 1371
1372 void SkPDFShader::State::AllocateGradientInfoStorage() { 1372 void SkPDFShader::State::AllocateGradientInfoStorage() {
1373 fColorData.set(sk_malloc_throw( 1373 fColorData.set(sk_malloc_throw(
1374 fInfo.fColorCount * (sizeof(SkColor) + sizeof(SkScalar)))); 1374 fInfo.fColorCount * (sizeof(SkColor) + sizeof(SkScalar))));
1375 fInfo.fColors = reinterpret_cast<SkColor*>(fColorData.get()); 1375 fInfo.fColors = reinterpret_cast<SkColor*>(fColorData.get());
1376 fInfo.fColorOffsets = 1376 fInfo.fColorOffsets =
1377 reinterpret_cast<SkScalar*>(fInfo.fColors + fInfo.fColorCount); 1377 reinterpret_cast<SkScalar*>(fInfo.fColors + fInfo.fColorCount);
1378 } 1378 }
OLDNEW
« no previous file with comments | « src/pdf/SkPDFImage.cpp ('k') | src/pdf/SkPDFStream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698