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

Side by Side Diff: src/core/SkPaint.cpp

Issue 14761003: API modifications needed to upstream Android font changes. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: addressing comments Created 7 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « include/ports/SkTypeface_android.h ('k') | src/core/SkPaintOptionsAndroid.cpp » ('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 2006 The Android Open Source Project 3 * Copyright 2006 The Android Open Source Project
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 #include "SkPaint.h" 9 #include "SkPaint.h"
10 #include "SkAnnotation.h" 10 #include "SkAnnotation.h"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 fMiterLimit = SkPaintDefaults_MiterLimit; 76 fMiterLimit = SkPaintDefaults_MiterLimit;
77 fFlags = SkPaintDefaults_Flags; 77 fFlags = SkPaintDefaults_Flags;
78 fCapType = kDefault_Cap; 78 fCapType = kDefault_Cap;
79 fJoinType = kDefault_Join; 79 fJoinType = kDefault_Join;
80 fTextAlign = kLeft_Align; 80 fTextAlign = kLeft_Align;
81 fStyle = kFill_Style; 81 fStyle = kFill_Style;
82 fTextEncoding = kUTF8_TextEncoding; 82 fTextEncoding = kUTF8_TextEncoding;
83 fHinting = SkPaintDefaults_Hinting; 83 fHinting = SkPaintDefaults_Hinting;
84 fPrivFlags = 0; 84 fPrivFlags = 0;
85 #ifdef SK_BUILD_FOR_ANDROID 85 #ifdef SK_BUILD_FOR_ANDROID
86 new (&fPaintOptionsAndroid) SkPaintOptionsAndroid;
86 fGenerationID = 0; 87 fGenerationID = 0;
87 #endif 88 #endif
88 } 89 }
89 90
90 SkPaint::SkPaint(const SkPaint& src) { 91 SkPaint::SkPaint(const SkPaint& src) {
91 memcpy(this, &src, sizeof(src)); 92 memcpy(this, &src, sizeof(src));
92 93
93 SkSafeRef(fTypeface); 94 SkSafeRef(fTypeface);
94 SkSafeRef(fPathEffect); 95 SkSafeRef(fPathEffect);
95 SkSafeRef(fShader); 96 SkSafeRef(fShader);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 SkSafeUnref(fShader); 135 SkSafeUnref(fShader);
135 SkSafeUnref(fXfermode); 136 SkSafeUnref(fXfermode);
136 SkSafeUnref(fMaskFilter); 137 SkSafeUnref(fMaskFilter);
137 SkSafeUnref(fColorFilter); 138 SkSafeUnref(fColorFilter);
138 SkSafeUnref(fRasterizer); 139 SkSafeUnref(fRasterizer);
139 SkSafeUnref(fLooper); 140 SkSafeUnref(fLooper);
140 SkSafeUnref(fImageFilter); 141 SkSafeUnref(fImageFilter);
141 SkSafeUnref(fAnnotation); 142 SkSafeUnref(fAnnotation);
142 143
143 #ifdef SK_BUILD_FOR_ANDROID 144 #ifdef SK_BUILD_FOR_ANDROID
145 fPaintOptionsAndroid.~SkPaintOptionsAndroid();
146
144 uint32_t oldGenerationID = fGenerationID; 147 uint32_t oldGenerationID = fGenerationID;
145 #endif 148 #endif
146 memcpy(this, &src, sizeof(src)); 149 memcpy(this, &src, sizeof(src));
147 #ifdef SK_BUILD_FOR_ANDROID 150 #ifdef SK_BUILD_FOR_ANDROID
148 fGenerationID = oldGenerationID + 1; 151 fGenerationID = oldGenerationID + 1;
152
153 new (&fPaintOptionsAndroid) SkPaintOptionsAndroid(src.fPaintOptionsAndroid);
149 #endif 154 #endif
150 155
151 return *this; 156 return *this;
152 } 157 }
153 158
154 bool operator==(const SkPaint& a, const SkPaint& b) { 159 bool operator==(const SkPaint& a, const SkPaint& b) {
155 #ifdef SK_BUILD_FOR_ANDROID 160 #ifdef SK_BUILD_FOR_ANDROID
156 //assumes that fGenerationID is the last field in the struct 161 //assumes that fGenerationID is the last field in the struct
157 return !memcmp(&a, &b, SK_OFFSETOF(SkPaint, fGenerationID)); 162 return !memcmp(&a, &b, SK_OFFSETOF(SkPaint, fGenerationID));
158 #else 163 #else
(...skipping 14 matching lines...) Expand all
173 } 178 }
174 179
175 #ifdef SK_BUILD_FOR_ANDROID 180 #ifdef SK_BUILD_FOR_ANDROID
176 uint32_t SkPaint::getGenerationID() const { 181 uint32_t SkPaint::getGenerationID() const {
177 return fGenerationID; 182 return fGenerationID;
178 } 183 }
179 184
180 void SkPaint::setGenerationID(uint32_t generationID) { 185 void SkPaint::setGenerationID(uint32_t generationID) {
181 fGenerationID = generationID; 186 fGenerationID = generationID;
182 } 187 }
183 #endif
184 188
185 #ifdef SK_BUILD_FOR_ANDROID
186 unsigned SkPaint::getBaseGlyphCount(SkUnichar text) const { 189 unsigned SkPaint::getBaseGlyphCount(SkUnichar text) const {
187 SkAutoGlyphCache autoCache(*this, NULL, NULL); 190 SkAutoGlyphCache autoCache(*this, NULL, NULL);
188 SkGlyphCache* cache = autoCache.getCache(); 191 SkGlyphCache* cache = autoCache.getCache();
189 return cache->getBaseGlyphCount(text); 192 return cache->getBaseGlyphCount(text);
190 } 193 }
194
195 void SkPaint::setPaintOptionsAndroid(const SkPaintOptionsAndroid& options) {
196 if (options != fPaintOptionsAndroid) {
197 fPaintOptionsAndroid = options;
198 GEN_ID_INC;
199 }
200 }
191 #endif 201 #endif
192 202
193 void SkPaint::setHinting(Hinting hintingLevel) { 203 void SkPaint::setHinting(Hinting hintingLevel) {
194 GEN_ID_INC_EVAL((unsigned) hintingLevel != fHinting); 204 GEN_ID_INC_EVAL((unsigned) hintingLevel != fHinting);
195 fHinting = hintingLevel; 205 fHinting = hintingLevel;
196 } 206 }
197 207
198 void SkPaint::setFlags(uint32_t flags) { 208 void SkPaint::setFlags(uint32_t flags) {
199 GEN_ID_INC_EVAL(fFlags != flags); 209 GEN_ID_INC_EVAL(fFlags != flags);
200 fFlags = flags; 210 fFlags = flags;
(...skipping 1598 matching lines...) Expand 10 before | Expand all | Expand 10 after
1799 Also, all existing users of blur have calibrated for linear. */ 1809 Also, all existing users of blur have calibrated for linear. */
1800 rec.ignorePreBlend(); 1810 rec.ignorePreBlend();
1801 } 1811 }
1802 if (ra) { 1812 if (ra) {
1803 raBuffer.writeFlattenable(ra); 1813 raBuffer.writeFlattenable(ra);
1804 descSize += raBuffer.size(); 1814 descSize += raBuffer.size();
1805 entryCount += 1; 1815 entryCount += 1;
1806 rec.fMaskFormat = SkMask::kA8_Format; // force antialiasing when we do the scan conversion 1816 rec.fMaskFormat = SkMask::kA8_Format; // force antialiasing when we do the scan conversion
1807 } 1817 }
1808 1818
1819 #ifdef SK_BUILD_FOR_ANDROID
1820 SkOrderedWriteBuffer androidBuffer(128);
1821 fPaintOptionsAndroid.flatten(androidBuffer);
1822 descSize += androidBuffer.size();
1823 entryCount += 1;
1824 #endif
1825
1809 /////////////////////////////////////////////////////////////////////////// 1826 ///////////////////////////////////////////////////////////////////////////
1810 // Now that we're done tweaking the rec, call the PostMakeRec cleanup 1827 // Now that we're done tweaking the rec, call the PostMakeRec cleanup
1811 SkScalerContext::PostMakeRec(*this, &rec); 1828 SkScalerContext::PostMakeRec(*this, &rec);
1812 1829
1813 descSize += SkDescriptor::ComputeOverhead(entryCount); 1830 descSize += SkDescriptor::ComputeOverhead(entryCount);
1814 1831
1815 SkAutoDescriptor ad(descSize); 1832 SkAutoDescriptor ad(descSize);
1816 SkDescriptor* desc = ad.getDesc(); 1833 SkDescriptor* desc = ad.getDesc();
1817 1834
1818 desc->init(); 1835 desc->init();
1819 desc->addEntry(kRec_SkDescriptorTag, sizeof(rec), &rec); 1836 desc->addEntry(kRec_SkDescriptorTag, sizeof(rec), &rec);
1820 1837
1838 #ifdef SK_BUILD_FOR_ANDROID
1839 add_flattenable(desc, kAndroidOpts_SkDescriptorTag, &androidBuffer);
1840 #endif
1841
1821 if (pe) { 1842 if (pe) {
1822 add_flattenable(desc, kPathEffect_SkDescriptorTag, &peBuffer); 1843 add_flattenable(desc, kPathEffect_SkDescriptorTag, &peBuffer);
1823 } 1844 }
1824 if (mf) { 1845 if (mf) {
1825 add_flattenable(desc, kMaskFilter_SkDescriptorTag, &mfBuffer); 1846 add_flattenable(desc, kMaskFilter_SkDescriptorTag, &mfBuffer);
1826 } 1847 }
1827 if (ra) { 1848 if (ra) {
1828 add_flattenable(desc, kRasterizer_SkDescriptorTag, &raBuffer); 1849 add_flattenable(desc, kRasterizer_SkDescriptorTag, &raBuffer);
1829 } 1850 }
1830 1851
(...skipping 14 matching lines...) Expand all
1845 SkDescriptor* desc2 = ad2.getDesc(); 1866 SkDescriptor* desc2 = ad2.getDesc();
1846 1867
1847 memset(desc1, 0x00, descSize); 1868 memset(desc1, 0x00, descSize);
1848 memset(desc2, 0xFF, descSize); 1869 memset(desc2, 0xFF, descSize);
1849 1870
1850 desc1->init(); 1871 desc1->init();
1851 desc2->init(); 1872 desc2->init();
1852 desc1->addEntry(kRec_SkDescriptorTag, sizeof(rec), &rec); 1873 desc1->addEntry(kRec_SkDescriptorTag, sizeof(rec), &rec);
1853 desc2->addEntry(kRec_SkDescriptorTag, sizeof(rec), &rec); 1874 desc2->addEntry(kRec_SkDescriptorTag, sizeof(rec), &rec);
1854 1875
1876 #ifdef SK_BUILD_FOR_ANDROID
1877 add_flattenable(desc1, kAndroidOpts_SkDescriptorTag, &androidBuffer);
1878 add_flattenable(desc2, kAndroidOpts_SkDescriptorTag, &androidBuffer);
1879 #endif
1880
1855 if (pe) { 1881 if (pe) {
1856 add_flattenable(desc1, kPathEffect_SkDescriptorTag, &peBuffer); 1882 add_flattenable(desc1, kPathEffect_SkDescriptorTag, &peBuffer);
1857 add_flattenable(desc2, kPathEffect_SkDescriptorTag, &peBuffer); 1883 add_flattenable(desc2, kPathEffect_SkDescriptorTag, &peBuffer);
1858 } 1884 }
1859 if (mf) { 1885 if (mf) {
1860 add_flattenable(desc1, kMaskFilter_SkDescriptorTag, &mfBuffer); 1886 add_flattenable(desc1, kMaskFilter_SkDescriptorTag, &mfBuffer);
1861 add_flattenable(desc2, kMaskFilter_SkDescriptorTag, &mfBuffer); 1887 add_flattenable(desc2, kMaskFilter_SkDescriptorTag, &mfBuffer);
1862 } 1888 }
1863 if (ra) { 1889 if (ra) {
1864 add_flattenable(desc1, kRasterizer_SkDescriptorTag, &raBuffer); 1890 add_flattenable(desc1, kRasterizer_SkDescriptorTag, &raBuffer);
(...skipping 701 matching lines...) Expand 10 before | Expand all | Expand 10 after
2566 if (firstTime) { 2592 if (firstTime) {
2567 *dst = r; 2593 *dst = r;
2568 } else { 2594 } else {
2569 dst->join(r); 2595 dst->join(r);
2570 } 2596 }
2571 } else { 2597 } else {
2572 break; 2598 break;
2573 } 2599 }
2574 } 2600 }
2575 } 2601 }
OLDNEW
« no previous file with comments | « include/ports/SkTypeface_android.h ('k') | src/core/SkPaintOptionsAndroid.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698