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

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

Issue 1261483002: mixed text blobs really draws LCD (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 4 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 | « gm/mixedtextblobs.cpp ('k') | no next file » | 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 * 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 1225 matching lines...) Expand 10 before | Expand all | Expand 10 after
1236 SkRect bounds; 1236 SkRect bounds;
1237 m.mapRect(&bounds, typeface->getBounds()); 1237 m.mapRect(&bounds, typeface->getBounds());
1238 return bounds; 1238 return bounds;
1239 } 1239 }
1240 1240
1241 static void add_flattenable(SkDescriptor* desc, uint32_t tag, 1241 static void add_flattenable(SkDescriptor* desc, uint32_t tag,
1242 SkWriteBuffer* buffer) { 1242 SkWriteBuffer* buffer) {
1243 buffer->writeToMemory(desc->addEntry(tag, buffer->bytesWritten(), NULL)); 1243 buffer->writeToMemory(desc->addEntry(tag, buffer->bytesWritten(), NULL));
1244 } 1244 }
1245 1245
1246 static SkMask::Format computeMaskFormat(const SkPaint& paint) { 1246 static SkMask::Format compute_mask_format(const SkPaint& paint) {
1247 uint32_t flags = paint.getFlags(); 1247 uint32_t flags = paint.getFlags();
1248 1248
1249 // Antialiasing being disabled trumps all other settings. 1249 // Antialiasing being disabled trumps all other settings.
1250 if (!(flags & SkPaint::kAntiAlias_Flag)) { 1250 if (!(flags & SkPaint::kAntiAlias_Flag)) {
1251 return SkMask::kBW_Format; 1251 return SkMask::kBW_Format;
1252 } 1252 }
1253 1253
1254 if (flags & SkPaint::kLCDRenderText_Flag) { 1254 if (flags & SkPaint::kLCDRenderText_Flag) {
1255 return SkMask::kLCD16_Format; 1255 return SkMask::kLCD16_Format;
1256 } 1256 }
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
1398 1398
1399 if (style == SkPaint::kStrokeAndFill_Style) { 1399 if (style == SkPaint::kStrokeAndFill_Style) {
1400 flags |= SkScalerContext::kFrameAndFill_Flag; 1400 flags |= SkScalerContext::kFrameAndFill_Flag;
1401 } 1401 }
1402 } else { 1402 } else {
1403 rec->fFrameWidth = 0; 1403 rec->fFrameWidth = 0;
1404 rec->fMiterLimit = 0; 1404 rec->fMiterLimit = 0;
1405 rec->fStrokeJoin = 0; 1405 rec->fStrokeJoin = 0;
1406 } 1406 }
1407 1407
1408 rec->fMaskFormat = SkToU8(computeMaskFormat(paint)); 1408 rec->fMaskFormat = SkToU8(compute_mask_format(paint));
1409 1409
1410 if (SkMask::kLCD16_Format == rec->fMaskFormat) { 1410 if (SkMask::kLCD16_Format == rec->fMaskFormat) {
1411 if (too_big_for_lcd(*rec, checkPost2x2)) { 1411 if (too_big_for_lcd(*rec, checkPost2x2)) {
1412 rec->fMaskFormat = SkMask::kA8_Format; 1412 rec->fMaskFormat = SkMask::kA8_Format;
1413 flags |= SkScalerContext::kGenA8FromLCD_Flag; 1413 flags |= SkScalerContext::kGenA8FromLCD_Flag;
1414 } else { 1414 } else {
1415 SkPixelGeometry geometry = surfaceProps 1415 SkPixelGeometry geometry = surfaceProps
1416 ? surfaceProps->pixelGeometry() 1416 ? surfaceProps->pixelGeometry()
1417 : SkSurfacePropsDefaultPixelGeometry(); 1417 : SkSurfacePropsDefaultPixelGeometry();
1418 switch (geometry) { 1418 switch (geometry) {
(...skipping 998 matching lines...) Expand 10 before | Expand all | Expand 10 after
2417 } 2417 }
2418 2418
2419 uint32_t SkPaint::getHash() const { 2419 uint32_t SkPaint::getHash() const {
2420 // We're going to hash 10 pointers and 7 32-bit values, finishing up with fB itfields, 2420 // We're going to hash 10 pointers and 7 32-bit values, finishing up with fB itfields,
2421 // so fBitfields should be 10 pointers and 6 32-bit values from the start. 2421 // so fBitfields should be 10 pointers and 6 32-bit values from the start.
2422 SK_COMPILE_ASSERT(offsetof(SkPaint, fBitfields) == 10 * sizeof(void*) + 6 * sizeof(uint32_t), 2422 SK_COMPILE_ASSERT(offsetof(SkPaint, fBitfields) == 10 * sizeof(void*) + 6 * sizeof(uint32_t),
2423 SkPaint_notPackedTightly); 2423 SkPaint_notPackedTightly);
2424 return SkChecksum::Murmur3(reinterpret_cast<const uint32_t*>(this), 2424 return SkChecksum::Murmur3(reinterpret_cast<const uint32_t*>(this),
2425 offsetof(SkPaint, fBitfields) + sizeof(fBitfields )); 2425 offsetof(SkPaint, fBitfields) + sizeof(fBitfields ));
2426 } 2426 }
OLDNEW
« no previous file with comments | « gm/mixedtextblobs.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698