| OLD | NEW |
| 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" |
| 11 | 11 |
| 12 #include "SkData.h" | 12 #include "SkData.h" |
| 13 #include "SkOncePtr.h" | |
| 14 #include "SkPDFCanon.h" | 13 #include "SkPDFCanon.h" |
| 15 #include "SkPDFDevice.h" | 14 #include "SkPDFDevice.h" |
| 16 #include "SkPDFFormXObject.h" | 15 #include "SkPDFFormXObject.h" |
| 17 #include "SkPDFGraphicState.h" | 16 #include "SkPDFGraphicState.h" |
| 18 #include "SkPDFResourceDict.h" | 17 #include "SkPDFResourceDict.h" |
| 19 #include "SkPDFUtils.h" | 18 #include "SkPDFUtils.h" |
| 20 #include "SkScalar.h" | 19 #include "SkScalar.h" |
| 21 #include "SkStream.h" | 20 #include "SkStream.h" |
| 22 #include "SkTemplates.h" | 21 #include "SkTemplates.h" |
| 23 #include "SkTypes.h" | 22 #include "SkTypes.h" |
| (...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 671 zero, one, zero, | 670 zero, one, zero, |
| 672 -p0/p2, -p1/p2, 1/p2); | 671 -p0/p2, -p1/p2, 1/p2); |
| 673 | 672 |
| 674 affine->setAll(sx - p0 * tx / p2, kx - p1 * tx / p2, tx / p2, | 673 affine->setAll(sx - p0 * tx / p2, kx - p1 * tx / p2, tx / p2, |
| 675 ky - p0 * ty / p2, sy - p1 * ty / p2, ty / p2, | 674 ky - p0 * ty / p2, sy - p1 * ty / p2, ty / p2, |
| 676 zero, zero, one); | 675 zero, zero, one); |
| 677 | 676 |
| 678 return true; | 677 return true; |
| 679 } | 678 } |
| 680 | 679 |
| 681 static SkPDFObject* create_range_object() { | 680 namespace { |
| 681 SkPDFObject* create_range_object() { |
| 682 SkPDFArray* range = new SkPDFArray; | 682 SkPDFArray* range = new SkPDFArray; |
| 683 range->reserve(6); | 683 range->reserve(6); |
| 684 range->appendInt(0); | 684 range->appendInt(0); |
| 685 range->appendInt(1); | 685 range->appendInt(1); |
| 686 range->appendInt(0); | 686 range->appendInt(0); |
| 687 range->appendInt(1); | 687 range->appendInt(1); |
| 688 range->appendInt(0); | 688 range->appendInt(0); |
| 689 range->appendInt(1); | 689 range->appendInt(1); |
| 690 return range; | 690 return range; |
| 691 } | 691 } |
| 692 SK_DECLARE_STATIC_ONCE_PTR(SkPDFObject, rangeObject); | 692 |
| 693 template <typename T> void unref(T* ptr) { ptr->unref();} |
| 694 } // namespace |
| 695 |
| 696 SK_DECLARE_STATIC_LAZY_PTR(SkPDFObject, rangeObject, |
| 697 create_range_object, unref<SkPDFObject>); |
| 693 | 698 |
| 694 static SkPDFStream* make_ps_function(const SkString& psCode, | 699 static SkPDFStream* make_ps_function(const SkString& psCode, |
| 695 SkPDFArray* domain) { | 700 SkPDFArray* domain) { |
| 696 SkAutoDataUnref funcData( | 701 SkAutoDataUnref funcData( |
| 697 SkData::NewWithCopy(psCode.c_str(), psCode.size())); | 702 SkData::NewWithCopy(psCode.c_str(), psCode.size())); |
| 698 SkPDFStream* result = new SkPDFStream(funcData.get()); | 703 SkPDFStream* result = new SkPDFStream(funcData.get()); |
| 699 result->insertInt("FunctionType", 4); | 704 result->insertInt("FunctionType", 4); |
| 700 result->insertObject("Domain", SkRef(domain)); | 705 result->insertObject("Domain", SkRef(domain)); |
| 701 result->insertObject("Range", SkRef(rangeObject.get(create_range_object))); | 706 result->insertObject("Range", SkRef(rangeObject.get())); |
| 702 return result; | 707 return result; |
| 703 } | 708 } |
| 704 | 709 |
| 705 SkPDFFunctionShader* SkPDFFunctionShader::Create( | 710 SkPDFFunctionShader* SkPDFFunctionShader::Create( |
| 706 SkPDFCanon* canon, SkAutoTDelete<SkPDFShader::State>* autoState) { | 711 SkPDFCanon* canon, SkAutoTDelete<SkPDFShader::State>* autoState) { |
| 707 const SkPDFShader::State& state = **autoState; | 712 const SkPDFShader::State& state = **autoState; |
| 708 | 713 |
| 709 SkString (*codeFunction)(const SkShader::GradientInfo& info, | 714 SkString (*codeFunction)(const SkShader::GradientInfo& info, |
| 710 const SkMatrix& perspectiveRemover) = nullptr; | 715 const SkMatrix& perspectiveRemover) = nullptr; |
| 711 SkPoint transformPoints[2]; | 716 SkPoint transformPoints[2]; |
| (...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1224 return false; | 1229 return false; |
| 1225 } | 1230 } |
| 1226 | 1231 |
| 1227 void SkPDFShader::State::AllocateGradientInfoStorage() { | 1232 void SkPDFShader::State::AllocateGradientInfoStorage() { |
| 1228 fColorData.set(sk_malloc_throw( | 1233 fColorData.set(sk_malloc_throw( |
| 1229 fInfo.fColorCount * (sizeof(SkColor) + sizeof(SkScalar)))); | 1234 fInfo.fColorCount * (sizeof(SkColor) + sizeof(SkScalar)))); |
| 1230 fInfo.fColors = reinterpret_cast<SkColor*>(fColorData.get()); | 1235 fInfo.fColors = reinterpret_cast<SkColor*>(fColorData.get()); |
| 1231 fInfo.fColorOffsets = | 1236 fInfo.fColorOffsets = |
| 1232 reinterpret_cast<SkScalar*>(fInfo.fColors + fInfo.fColorCount); | 1237 reinterpret_cast<SkScalar*>(fInfo.fColors + fInfo.fColorCount); |
| 1233 } | 1238 } |
| OLD | NEW |