| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2006 The Android Open Source Project | 2 * Copyright 2006 The Android Open Source Project |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkPaint.h" | 8 #include "SkPaint.h" |
| 9 #include "SkAnnotation.h" | 9 #include "SkAnnotation.h" |
| 10 #include "SkAutoKern.h" | 10 #include "SkAutoKern.h" |
| (...skipping 1878 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1889 | 1889 |
| 1890 // left-align the fields of "known" size, and right-align the last (flatFlag
s) so it can easly | 1890 // left-align the fields of "known" size, and right-align the last (flatFlag
s) so it can easly |
| 1891 // add more bits in the future. | 1891 // add more bits in the future. |
| 1892 return (flags << 16) | (hint << 14) | (align << 12) | (filter << 10) | flatF
lags; | 1892 return (flags << 16) | (hint << 14) | (align << 12) | (filter << 10) | flatF
lags; |
| 1893 } | 1893 } |
| 1894 | 1894 |
| 1895 static FlatFlags unpack_paint_flags(SkPaint* paint, uint32_t packed) { | 1895 static FlatFlags unpack_paint_flags(SkPaint* paint, uint32_t packed) { |
| 1896 paint->setFlags(packed >> 16); | 1896 paint->setFlags(packed >> 16); |
| 1897 paint->setHinting((SkPaint::Hinting)((packed >> 14) & BPF_Mask(kHint_BPF))); | 1897 paint->setHinting((SkPaint::Hinting)((packed >> 14) & BPF_Mask(kHint_BPF))); |
| 1898 paint->setTextAlign((SkPaint::Align)((packed >> 12) & BPF_Mask(kAlign_BPF)))
; | 1898 paint->setTextAlign((SkPaint::Align)((packed >> 12) & BPF_Mask(kAlign_BPF)))
; |
| 1899 paint->setFilterLevel((SkPaint::FilterLevel)((packed >> 10) & BPF_Mask(kFilt
er_BPF))); | 1899 paint->setFilterQuality((SkFilterQuality)((packed >> 10) & BPF_Mask(kFilter_
BPF))); |
| 1900 return (FlatFlags)(packed & kFlatFlagMask); | 1900 return (FlatFlags)(packed & kFlatFlagMask); |
| 1901 } | 1901 } |
| 1902 | 1902 |
| 1903 // The size of a flat paint's POD fields | 1903 // The size of a flat paint's POD fields |
| 1904 static const uint32_t kPODPaintSize = 5 * sizeof(SkScalar) + | 1904 static const uint32_t kPODPaintSize = 5 * sizeof(SkScalar) + |
| 1905 1 * sizeof(SkColor) + | 1905 1 * sizeof(SkColor) + |
| 1906 1 * sizeof(uint16_t) + | 1906 1 * sizeof(uint16_t) + |
| 1907 6 * sizeof(uint8_t); | 1907 6 * sizeof(uint8_t); |
| 1908 | 1908 |
| 1909 /* To save space/time, we analyze the paint, and write a truncated version of | 1909 /* To save space/time, we analyze the paint, and write a truncated version of |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1930 uint32_t* ptr = buffer.reserve(kPODPaintSize); | 1930 uint32_t* ptr = buffer.reserve(kPODPaintSize); |
| 1931 | 1931 |
| 1932 ptr = write_scalar(ptr, this->getTextSize()); | 1932 ptr = write_scalar(ptr, this->getTextSize()); |
| 1933 ptr = write_scalar(ptr, this->getTextScaleX()); | 1933 ptr = write_scalar(ptr, this->getTextScaleX()); |
| 1934 ptr = write_scalar(ptr, this->getTextSkewX()); | 1934 ptr = write_scalar(ptr, this->getTextSkewX()); |
| 1935 ptr = write_scalar(ptr, this->getStrokeWidth()); | 1935 ptr = write_scalar(ptr, this->getStrokeWidth()); |
| 1936 ptr = write_scalar(ptr, this->getStrokeMiter()); | 1936 ptr = write_scalar(ptr, this->getStrokeMiter()); |
| 1937 *ptr++ = this->getColor(); | 1937 *ptr++ = this->getColor(); |
| 1938 | 1938 |
| 1939 *ptr++ = pack_paint_flags(this->getFlags(), this->getHinting(), this->getTex
tAlign(), | 1939 *ptr++ = pack_paint_flags(this->getFlags(), this->getHinting(), this->getTex
tAlign(), |
| 1940 this->getFilterLevel(), flatFlags); | 1940 this->getFilterQuality(), flatFlags); |
| 1941 *ptr++ = pack_4(this->getStrokeCap(), this->getStrokeJoin(), | 1941 *ptr++ = pack_4(this->getStrokeCap(), this->getStrokeJoin(), |
| 1942 this->getStyle(), this->getTextEncoding()); | 1942 this->getStyle(), this->getTextEncoding()); |
| 1943 | 1943 |
| 1944 // now we're done with ptr and the (pre)reserved space. If we need to write | 1944 // now we're done with ptr and the (pre)reserved space. If we need to write |
| 1945 // additional fields, use the buffer directly | 1945 // additional fields, use the buffer directly |
| 1946 if (flatFlags & kHasTypeface_FlatFlag) { | 1946 if (flatFlags & kHasTypeface_FlatFlag) { |
| 1947 buffer.writeTypeface(this->getTypeface()); | 1947 buffer.writeTypeface(this->getTypeface()); |
| 1948 } | 1948 } |
| 1949 if (flatFlags & kHasEffects_FlatFlag) { | 1949 if (flatFlags & kHasEffects_FlatFlag) { |
| 1950 buffer.writeFlattenable(this->getPathEffect()); | 1950 buffer.writeFlattenable(this->getPathEffect()); |
| (...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2250 SkAddFlagToString(str, this->isAutohinted(), "Autohinted", &needSeparato
r); | 2250 SkAddFlagToString(str, this->isAutohinted(), "Autohinted", &needSeparato
r); |
| 2251 SkAddFlagToString(str, this->isVerticalText(), "VerticalText", &needSepa
rator); | 2251 SkAddFlagToString(str, this->isVerticalText(), "VerticalText", &needSepa
rator); |
| 2252 SkAddFlagToString(str, SkToBool(this->getFlags() & SkPaint::kGenA8FromLC
D_Flag), | 2252 SkAddFlagToString(str, SkToBool(this->getFlags() & SkPaint::kGenA8FromLC
D_Flag), |
| 2253 "GenA8FromLCD", &needSeparator); | 2253 "GenA8FromLCD", &needSeparator); |
| 2254 } else { | 2254 } else { |
| 2255 str->append("None"); | 2255 str->append("None"); |
| 2256 } | 2256 } |
| 2257 str->append(")</dd>"); | 2257 str->append(")</dd>"); |
| 2258 | 2258 |
| 2259 str->append("<dt>FilterLevel:</dt><dd>"); | 2259 str->append("<dt>FilterLevel:</dt><dd>"); |
| 2260 static const char* gFilterLevelStrings[] = { "None", "Low", "Medium", "High"
}; | 2260 static const char* gFilterQualityStrings[] = { "None", "Low", "Medium", "Hig
h" }; |
| 2261 str->append(gFilterLevelStrings[this->getFilterLevel()]); | 2261 str->append(gFilterQualityStrings[this->getFilterQuality()]); |
| 2262 str->append("</dd>"); | 2262 str->append("</dd>"); |
| 2263 | 2263 |
| 2264 str->append("<dt>TextAlign:</dt><dd>"); | 2264 str->append("<dt>TextAlign:</dt><dd>"); |
| 2265 static const char* gTextAlignStrings[SkPaint::kAlignCount] = { "Left", "Cent
er", "Right" }; | 2265 static const char* gTextAlignStrings[SkPaint::kAlignCount] = { "Left", "Cent
er", "Right" }; |
| 2266 str->append(gTextAlignStrings[this->getTextAlign()]); | 2266 str->append(gTextAlignStrings[this->getTextAlign()]); |
| 2267 str->append("</dd>"); | 2267 str->append("</dd>"); |
| 2268 | 2268 |
| 2269 str->append("<dt>CapType:</dt><dd>"); | 2269 str->append("<dt>CapType:</dt><dd>"); |
| 2270 static const char* gStrokeCapStrings[SkPaint::kCapCount] = { "Butt", "Round"
, "Square" }; | 2270 static const char* gStrokeCapStrings[SkPaint::kCapCount] = { "Butt", "Round"
, "Square" }; |
| 2271 str->append(gStrokeCapStrings[this->getStrokeCap()]); | 2271 str->append(gStrokeCapStrings[this->getStrokeCap()]); |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2433 } | 2433 } |
| 2434 | 2434 |
| 2435 uint32_t SkPaint::getHash() const { | 2435 uint32_t SkPaint::getHash() const { |
| 2436 // We're going to hash 10 pointers and 7 32-bit values, finishing up with fB
itfields, | 2436 // We're going to hash 10 pointers and 7 32-bit values, finishing up with fB
itfields, |
| 2437 // so fBitfields should be 10 pointers and 6 32-bit values from the start. | 2437 // so fBitfields should be 10 pointers and 6 32-bit values from the start. |
| 2438 SK_COMPILE_ASSERT(offsetof(SkPaint, fBitfields) == 10 * sizeof(void*) + 6 *
sizeof(uint32_t), | 2438 SK_COMPILE_ASSERT(offsetof(SkPaint, fBitfields) == 10 * sizeof(void*) + 6 *
sizeof(uint32_t), |
| 2439 SkPaint_notPackedTightly); | 2439 SkPaint_notPackedTightly); |
| 2440 return SkChecksum::Murmur3(reinterpret_cast<const uint32_t*>(this), | 2440 return SkChecksum::Murmur3(reinterpret_cast<const uint32_t*>(this), |
| 2441 offsetof(SkPaint, fBitfields) + sizeof(fBitfields
)); | 2441 offsetof(SkPaint, fBitfields) + sizeof(fBitfields
)); |
| 2442 } | 2442 } |
| OLD | NEW |