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

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

Issue 933483002: add Method param to drawTextOnPath, supporting SVG spec Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: add guard for android Created 5 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 * Copyright 2008 The Android Open Source Project 2 * Copyright 2008 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 "SkCanvas.h" 8 #include "SkCanvas.h"
9 #include "SkCanvasPriv.h" 9 #include "SkCanvasPriv.h"
10 #include "SkBitmapDevice.h" 10 #include "SkBitmapDevice.h"
(...skipping 2172 matching lines...) Expand 10 before | Expand all | Expand 10 after
2183 while (iter.next()) { 2183 while (iter.next()) {
2184 SkDeviceFilteredPaint dfp(iter.fDevice, looper.paint()); 2184 SkDeviceFilteredPaint dfp(iter.fDevice, looper.paint());
2185 iter.fDevice->drawPosText(iter, text, byteLength, xpos, 1, textOffset, 2185 iter.fDevice->drawPosText(iter, text, byteLength, xpos, 1, textOffset,
2186 dfp.paint()); 2186 dfp.paint());
2187 } 2187 }
2188 2188
2189 LOOPER_END 2189 LOOPER_END
2190 } 2190 }
2191 2191
2192 void SkCanvas::onDrawTextOnPath(const void* text, size_t byteLength, const SkPat h& path, 2192 void SkCanvas::onDrawTextOnPath(const void* text, size_t byteLength, const SkPat h& path,
2193 const SkMatrix* matrix, const SkPaint& paint) { 2193 const SkMatrix* matrix,
2194 SK_SUPPORT_LEGACY_DRAWTEXTONPATH_PARAM
2195 const SkPaint& paint) {
2194 LOOPER_BEGIN(paint, SkDrawFilter::kText_Type, NULL) 2196 LOOPER_BEGIN(paint, SkDrawFilter::kText_Type, NULL)
2195 2197
2196 while (iter.next()) { 2198 while (iter.next()) {
2197 iter.fDevice->drawTextOnPath(iter, text, byteLength, path, 2199 iter.fDevice->drawTextOnPath(iter, text, byteLength, path,
2198 matrix, looper.paint()); 2200 matrix, SK_SUPPORT_LEGACY_DRAWTEXTONPATH_AR G looper.paint());
2199 } 2201 }
2200 2202
2201 LOOPER_END 2203 LOOPER_END
2202 } 2204 }
2203 2205
2204 void SkCanvas::onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, 2206 void SkCanvas::onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y,
2205 const SkPaint& paint) { 2207 const SkPaint& paint) {
2206 2208
2207 if (paint.canComputeFastBounds()) { 2209 if (paint.canComputeFastBounds()) {
2208 SkRect storage; 2210 SkRect storage;
(...skipping 23 matching lines...) Expand all
2232 const SkPaint& paint) { 2234 const SkPaint& paint) {
2233 TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawPosText()"); 2235 TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawPosText()");
2234 this->onDrawPosText(text, byteLength, pos, paint); 2236 this->onDrawPosText(text, byteLength, pos, paint);
2235 } 2237 }
2236 void SkCanvas::drawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], 2238 void SkCanvas::drawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[],
2237 SkScalar constY, const SkPaint& paint) { 2239 SkScalar constY, const SkPaint& paint) {
2238 TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawPosTextH()"); 2240 TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawPosTextH()");
2239 this->onDrawPosTextH(text, byteLength, xpos, constY, paint); 2241 this->onDrawPosTextH(text, byteLength, xpos, constY, paint);
2240 } 2242 }
2241 void SkCanvas::drawTextOnPath(const void* text, size_t byteLength, const SkPath& path, 2243 void SkCanvas::drawTextOnPath(const void* text, size_t byteLength, const SkPath& path,
2242 const SkMatrix* matrix, const SkPaint& paint) { 2244 const SkMatrix* matrix, TextOnPathMethod method,
2245 const SkPaint& paint) {
2246 if (0 == byteLength || path.isEmpty()) {
2247 return;
2248 }
2243 TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawTextOnPath()"); 2249 TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawTextOnPath()");
2244 this->onDrawTextOnPath(text, byteLength, path, matrix, paint); 2250 this->onDrawTextOnPath(text, byteLength, path, matrix,
2251 SK_SUPPORT_LEGACY_DRAWTEXTONPATH_ARG paint);
2245 } 2252 }
2246 void SkCanvas::drawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, 2253 void SkCanvas::drawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y,
2247 const SkPaint& paint) { 2254 const SkPaint& paint) {
2248 TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawTextBlob()"); 2255 TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawTextBlob()");
2249 if (blob) { 2256 if (blob) {
2250 this->onDrawTextBlob(blob, x, y, paint); 2257 this->onDrawTextBlob(blob, x, y, paint);
2251 } 2258 }
2252 } 2259 }
2253 2260
2254 void SkCanvas::onDrawVertices(VertexMode vmode, int vertexCount, 2261 void SkCanvas::onDrawVertices(VertexMode vmode, int vertexCount,
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
2416 path.moveTo(oval.centerX(), oval.centerY()); 2423 path.moveTo(oval.centerX(), oval.centerY());
2417 } 2424 }
2418 path.arcTo(oval, startAngle, sweepAngle, !useCenter); 2425 path.arcTo(oval, startAngle, sweepAngle, !useCenter);
2419 if (useCenter) { 2426 if (useCenter) {
2420 path.close(); 2427 path.close();
2421 } 2428 }
2422 this->drawPath(path, paint); 2429 this->drawPath(path, paint);
2423 } 2430 }
2424 } 2431 }
2425 2432
2426 void SkCanvas::drawTextOnPathHV(const void* text, size_t byteLength, 2433 #ifdef SK_SUPPORT_LEGACY_DRAWTEXTONPATH
2434 void SkCanvas::drawTextOnPathHV(const void* text, size_t length,
2427 const SkPath& path, SkScalar hOffset, 2435 const SkPath& path, SkScalar hOffset,
2428 SkScalar vOffset, const SkPaint& paint) { 2436 SkScalar vOffset, const SkPaint& paint) {
2429 TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawTextOnPathHV()"); 2437 TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawTextOnPathHV()");
2430 SkMatrix matrix; 2438 SkMatrix matrix;
2439
2440 matrix.setTranslate(hOffset, vOffset);
2441 this->drawTextOnPath(text, length, path, &matrix, SkCanvas::kStretch_TextOnP athMethod, paint);
2442 }
2431 2443
2432 matrix.setTranslate(hOffset, vOffset); 2444 void SkCanvas::drawTextOnPath(const void* text, size_t length, const SkPath& pat h,
2433 this->drawTextOnPath(text, byteLength, path, &matrix, paint); 2445 const SkMatrix* matrix, const SkPaint& paint) {
2446 this->drawTextOnPath(text, length, path, matrix, SkCanvas::kStretch_TextOnPa thMethod, paint);
2434 } 2447 }
2448 #endif
2435 2449
2436 /////////////////////////////////////////////////////////////////////////////// 2450 ///////////////////////////////////////////////////////////////////////////////
2437 void SkCanvas::drawPicture(const SkPicture* picture) { 2451 void SkCanvas::drawPicture(const SkPicture* picture) {
2438 TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawPicture()"); 2452 TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawPicture()");
2439 if (picture) { 2453 if (picture) {
2440 this->onDrawPicture(picture, NULL, NULL); 2454 this->onDrawPicture(picture, NULL, NULL);
2441 } 2455 }
2442 } 2456 }
2443 2457
2444 void SkCanvas::drawPicture(const SkPicture* picture, const SkMatrix* matrix, con st SkPaint* paint) { 2458 void SkCanvas::drawPicture(const SkPicture* picture, const SkMatrix* matrix, con st SkPaint* paint) {
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
2564 } 2578 }
2565 2579
2566 if (matrix) { 2580 if (matrix) {
2567 canvas->concat(*matrix); 2581 canvas->concat(*matrix);
2568 } 2582 }
2569 } 2583 }
2570 2584
2571 SkAutoCanvasMatrixPaint::~SkAutoCanvasMatrixPaint() { 2585 SkAutoCanvasMatrixPaint::~SkAutoCanvasMatrixPaint() {
2572 fCanvas->restoreToCount(fSaveCount); 2586 fCanvas->restoreToCount(fSaveCount);
2573 } 2587 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698