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

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

Issue 152073003: Adding code to calculate Underline Thickness from Font Metrics, this will be useful when Skia is us… (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fixing comments for Underline Patch Created 6 years, 10 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
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 1278 matching lines...) Expand 10 before | Expand all | Expand 10 after
1289 if (scale) { 1289 if (scale) {
1290 metrics->fTop = SkScalarMul(metrics->fTop, scale); 1290 metrics->fTop = SkScalarMul(metrics->fTop, scale);
1291 metrics->fAscent = SkScalarMul(metrics->fAscent, scale); 1291 metrics->fAscent = SkScalarMul(metrics->fAscent, scale);
1292 metrics->fDescent = SkScalarMul(metrics->fDescent, scale); 1292 metrics->fDescent = SkScalarMul(metrics->fDescent, scale);
1293 metrics->fBottom = SkScalarMul(metrics->fBottom, scale); 1293 metrics->fBottom = SkScalarMul(metrics->fBottom, scale);
1294 metrics->fLeading = SkScalarMul(metrics->fLeading, scale); 1294 metrics->fLeading = SkScalarMul(metrics->fLeading, scale);
1295 metrics->fAvgCharWidth = SkScalarMul(metrics->fAvgCharWidth, scale); 1295 metrics->fAvgCharWidth = SkScalarMul(metrics->fAvgCharWidth, scale);
1296 metrics->fXMin = SkScalarMul(metrics->fXMin, scale); 1296 metrics->fXMin = SkScalarMul(metrics->fXMin, scale);
1297 metrics->fXMax = SkScalarMul(metrics->fXMax, scale); 1297 metrics->fXMax = SkScalarMul(metrics->fXMax, scale);
1298 metrics->fXHeight = SkScalarMul(metrics->fXHeight, scale); 1298 metrics->fXHeight = SkScalarMul(metrics->fXHeight, scale);
1299 metrics->fUnderlineThickness = SkScalarMul(metrics->fUnderlineThickness, scale);
1300 metrics->fUnderlinePosition = SkScalarMul(metrics->fUnderlinePosition, s cale);
1299 } 1301 }
1300 return metrics->fDescent - metrics->fAscent + metrics->fLeading; 1302 return metrics->fDescent - metrics->fAscent + metrics->fLeading;
1301 } 1303 }
1302 1304
1303 /////////////////////////////////////////////////////////////////////////////// 1305 ///////////////////////////////////////////////////////////////////////////////
1304 1306
1305 static void set_bounds(const SkGlyph& g, SkRect* bounds, SkScalar scale) { 1307 static void set_bounds(const SkGlyph& g, SkRect* bounds, SkScalar scale) {
1306 bounds->set(g.fLeft * scale, 1308 bounds->set(g.fLeft * scale,
1307 g.fTop * scale, 1309 g.fTop * scale,
1308 (g.fLeft + g.fWidth) * scale, 1310 (g.fLeft + g.fWidth) * scale,
(...skipping 941 matching lines...) Expand 10 before | Expand all | Expand 10 after
2250 this->getMaskFilter()->computeFastBounds(*storage, storage); 2252 this->getMaskFilter()->computeFastBounds(*storage, storage);
2251 } 2253 }
2252 2254
2253 if (this->getImageFilter()) { 2255 if (this->getImageFilter()) {
2254 this->getImageFilter()->computeFastBounds(*storage, storage); 2256 this->getImageFilter()->computeFastBounds(*storage, storage);
2255 } 2257 }
2256 2258
2257 return *storage; 2259 return *storage;
2258 } 2260 }
2259 2261
2262 bool SkPaint::FontMetrics::hasUnderlineThickness(SkScalar* thickness) const {
2263 if (SkToBool(fFlags & kUnderlineThinknessIsValid_Flag))
2264 {
2265 *thickness = fUnderlineThickness;
2266 return true;
2267 }
2268 *thickness = 0;
2269 return false;
2270 }
2271
2272 bool SkPaint::FontMetrics::hasUnderlinePosition(SkScalar* thickness) const {
2273 if (SkToBool(fFlags & kUnderlinePositionIsValid_Flag))
2274 {
2275 *thickness = fUnderlinePosition;
2276 return true;
2277 }
2278 *thickness = 0;
2279 return false;
2280 }
2281
2260 #ifdef SK_DEVELOPER 2282 #ifdef SK_DEVELOPER
2261 void SkPaint::toString(SkString* str) const { 2283 void SkPaint::toString(SkString* str) const {
2262 str->append("<dl><dt>SkPaint:</dt><dd><dl>"); 2284 str->append("<dl><dt>SkPaint:</dt><dd><dl>");
2263 2285
2264 SkTypeface* typeface = this->getTypeface(); 2286 SkTypeface* typeface = this->getTypeface();
2265 if (NULL != typeface) { 2287 if (NULL != typeface) {
2266 SkDynamicMemoryWStream ostream; 2288 SkDynamicMemoryWStream ostream;
2267 typeface->serialize(&ostream); 2289 typeface->serialize(&ostream);
2268 SkAutoTUnref<SkData> data(ostream.copyToData()); 2290 SkAutoTUnref<SkData> data(ostream.copyToData());
2269 2291
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
2543 case SkXfermode::kPlus_Mode: 2565 case SkXfermode::kPlus_Mode:
2544 return 0 == this->getAlpha(); 2566 return 0 == this->getAlpha();
2545 case SkXfermode::kDst_Mode: 2567 case SkXfermode::kDst_Mode:
2546 return true; 2568 return true;
2547 default: 2569 default:
2548 break; 2570 break;
2549 } 2571 }
2550 } 2572 }
2551 return false; 2573 return false;
2552 } 2574 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698