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

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

Issue 1773033002: SkPDF: use sk_make_sp<T> when it makes sense. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 2016-03-08 (Tuesday) 06:54:33 EST Created 4 years, 9 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/SkPDFShader.h ('k') | src/pdf/SkPDFTypes.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 753 matching lines...) Expand 10 before | Expand all | Expand 10 after
764 return nullptr; 764 return nullptr;
765 } 765 }
766 } 766 }
767 767
768 SkRect bbox; 768 SkRect bbox;
769 bbox.set(state.fBBox); 769 bbox.set(state.fBBox);
770 if (!inverse_transform_bbox(finalMatrix, &bbox)) { 770 if (!inverse_transform_bbox(finalMatrix, &bbox)) {
771 return nullptr; 771 return nullptr;
772 } 772 }
773 773
774 sk_sp<SkPDFArray> domain(new SkPDFArray); 774 auto domain = sk_make_sp<SkPDFArray>();
775 domain->reserve(4); 775 domain->reserve(4);
776 domain->appendScalar(bbox.fLeft); 776 domain->appendScalar(bbox.fLeft);
777 domain->appendScalar(bbox.fRight); 777 domain->appendScalar(bbox.fRight);
778 domain->appendScalar(bbox.fTop); 778 domain->appendScalar(bbox.fTop);
779 domain->appendScalar(bbox.fBottom); 779 domain->appendScalar(bbox.fBottom);
780 780
781 SkString functionCode; 781 SkString functionCode;
782 // The two point radial gradient further references 782 // The two point radial gradient further references
783 // state.fInfo 783 // state.fInfo
784 // in translating from x, y coordinates to the t parameter. So, we have 784 // in translating from x, y coordinates to the t parameter. So, we have
785 // to transform the points and radii according to the calculated matrix. 785 // to transform the points and radii according to the calculated matrix.
786 if (state.fType == SkShader::kConical_GradientType) { 786 if (state.fType == SkShader::kConical_GradientType) {
787 SkShader::GradientInfo twoPointRadialInfo = *info; 787 SkShader::GradientInfo twoPointRadialInfo = *info;
788 SkMatrix inverseMapperMatrix; 788 SkMatrix inverseMapperMatrix;
789 if (!mapperMatrix.invert(&inverseMapperMatrix)) { 789 if (!mapperMatrix.invert(&inverseMapperMatrix)) {
790 return nullptr; 790 return nullptr;
791 } 791 }
792 inverseMapperMatrix.mapPoints(twoPointRadialInfo.fPoint, 2); 792 inverseMapperMatrix.mapPoints(twoPointRadialInfo.fPoint, 2);
793 twoPointRadialInfo.fRadius[0] = 793 twoPointRadialInfo.fRadius[0] =
794 inverseMapperMatrix.mapRadius(info->fRadius[0]); 794 inverseMapperMatrix.mapRadius(info->fRadius[0]);
795 twoPointRadialInfo.fRadius[1] = 795 twoPointRadialInfo.fRadius[1] =
796 inverseMapperMatrix.mapRadius(info->fRadius[1]); 796 inverseMapperMatrix.mapRadius(info->fRadius[1]);
797 functionCode = codeFunction(twoPointRadialInfo, perspectiveInverseOnly); 797 functionCode = codeFunction(twoPointRadialInfo, perspectiveInverseOnly);
798 } else { 798 } else {
799 functionCode = codeFunction(*info, perspectiveInverseOnly); 799 functionCode = codeFunction(*info, perspectiveInverseOnly);
800 } 800 }
801 801
802 sk_sp<SkPDFDict> pdfShader(new SkPDFDict); 802 auto pdfShader = sk_make_sp<SkPDFDict>();
803 pdfShader->insertInt("ShadingType", 1); 803 pdfShader->insertInt("ShadingType", 1);
804 pdfShader->insertName("ColorSpace", "DeviceRGB"); 804 pdfShader->insertName("ColorSpace", "DeviceRGB");
805 pdfShader->insertObject("Domain", SkRef(domain.get())); 805 pdfShader->insertObject("Domain", SkRef(domain.get()));
806 806
807 sk_sp<SkPDFStream> function( 807 sk_sp<SkPDFStream> function(
808 make_ps_function(functionCode, domain.get())); 808 make_ps_function(functionCode, domain.get()));
809 pdfShader->insertObjRef("Function", function.release()); 809 pdfShader->insertObjRef("Function", function.release());
810 810
811 sk_sp<SkPDFFunctionShader> pdfFunctionShader(new SkPDFFunctionShader(autoSta te->detach())); 811 sk_sp<SkPDFFunctionShader> pdfFunctionShader(
812 812 new SkPDFFunctionShader(autoState->detach()));
813 pdfFunctionShader->insertInt("PatternType", 2); 813 pdfFunctionShader->insertInt("PatternType", 2);
814 pdfFunctionShader->insertObject("Matrix", 814 pdfFunctionShader->insertObject("Matrix",
815 SkPDFUtils::MatrixToArray(finalMatrix)); 815 SkPDFUtils::MatrixToArray(finalMatrix));
816 pdfFunctionShader->insertObject("Shading", pdfShader.release()); 816 pdfFunctionShader->insertObject("Shading", pdfShader.release());
817 817
818 canon->addFunctionShader(pdfFunctionShader.get()); 818 canon->addFunctionShader(pdfFunctionShader.get());
819 return pdfFunctionShader.release(); 819 return pdfFunctionShader.release();
820 } 820 }
821 821
822 SkPDFImageShader* SkPDFImageShader::Create( 822 SkPDFImageShader* SkPDFImageShader::Create(
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
1224 return false; 1224 return false;
1225 } 1225 }
1226 1226
1227 void SkPDFShader::State::AllocateGradientInfoStorage() { 1227 void SkPDFShader::State::AllocateGradientInfoStorage() {
1228 fColorData.set(sk_malloc_throw( 1228 fColorData.set(sk_malloc_throw(
1229 fInfo.fColorCount * (sizeof(SkColor) + sizeof(SkScalar)))); 1229 fInfo.fColorCount * (sizeof(SkColor) + sizeof(SkScalar))));
1230 fInfo.fColors = reinterpret_cast<SkColor*>(fColorData.get()); 1230 fInfo.fColors = reinterpret_cast<SkColor*>(fColorData.get());
1231 fInfo.fColorOffsets = 1231 fInfo.fColorOffsets =
1232 reinterpret_cast<SkScalar*>(fInfo.fColors + fInfo.fColorCount); 1232 reinterpret_cast<SkScalar*>(fInfo.fColors + fInfo.fColorCount);
1233 } 1233 }
OLDNEW
« no previous file with comments | « src/pdf/SkPDFShader.h ('k') | src/pdf/SkPDFTypes.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698