SkNWayCanvas.cpp revision 74b461961607fa57a150a9282c410ef0cab38764
1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc. 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */ 86c924ad46c89955e78e071c792ef00df9910b42freed@android.com#include "SkNWayCanvas.h" 96c924ad46c89955e78e071c792ef00df9910b42freed@android.com 106c924ad46c89955e78e071c792ef00df9910b42freed@android.comSkNWayCanvas::SkNWayCanvas() {} 116c924ad46c89955e78e071c792ef00df9910b42freed@android.com 126c924ad46c89955e78e071c792ef00df9910b42freed@android.comSkNWayCanvas::~SkNWayCanvas() { 136c924ad46c89955e78e071c792ef00df9910b42freed@android.com this->removeAll(); 146c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 156c924ad46c89955e78e071c792ef00df9910b42freed@android.com 166c924ad46c89955e78e071c792ef00df9910b42freed@android.comvoid SkNWayCanvas::addCanvas(SkCanvas* canvas) { 176c924ad46c89955e78e071c792ef00df9910b42freed@android.com if (canvas) { 186c924ad46c89955e78e071c792ef00df9910b42freed@android.com canvas->ref(); 196c924ad46c89955e78e071c792ef00df9910b42freed@android.com *fList.append() = canvas; 206c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 216c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 226c924ad46c89955e78e071c792ef00df9910b42freed@android.com 236c924ad46c89955e78e071c792ef00df9910b42freed@android.comvoid SkNWayCanvas::removeCanvas(SkCanvas* canvas) { 246c924ad46c89955e78e071c792ef00df9910b42freed@android.com int index = fList.find(canvas); 256c924ad46c89955e78e071c792ef00df9910b42freed@android.com if (index >= 0) { 266c924ad46c89955e78e071c792ef00df9910b42freed@android.com canvas->unref(); 276c924ad46c89955e78e071c792ef00df9910b42freed@android.com fList.removeShuffle(index); 286c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 296c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 306c924ad46c89955e78e071c792ef00df9910b42freed@android.com 316c924ad46c89955e78e071c792ef00df9910b42freed@android.comvoid SkNWayCanvas::removeAll() { 326c924ad46c89955e78e071c792ef00df9910b42freed@android.com fList.unrefAll(); 336c924ad46c89955e78e071c792ef00df9910b42freed@android.com fList.reset(); 346c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 356c924ad46c89955e78e071c792ef00df9910b42freed@android.com 366c924ad46c89955e78e071c792ef00df9910b42freed@android.com/////////////////////////////////////////////////////////////////////////// 376c924ad46c89955e78e071c792ef00df9910b42freed@android.com// These are forwarded to the N canvases we're referencing 386c924ad46c89955e78e071c792ef00df9910b42freed@android.com 396c924ad46c89955e78e071c792ef00df9910b42freed@android.comclass SkNWayCanvas::Iter { 406c924ad46c89955e78e071c792ef00df9910b42freed@android.compublic: 416c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter(const SkTDArray<SkCanvas*>& list) : fList(list) { 426c924ad46c89955e78e071c792ef00df9910b42freed@android.com fIndex = 0; 436c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 446c924ad46c89955e78e071c792ef00df9910b42freed@android.com bool next() { 456c924ad46c89955e78e071c792ef00df9910b42freed@android.com if (fIndex < fList.count()) { 466c924ad46c89955e78e071c792ef00df9910b42freed@android.com fCanvas = fList[fIndex++]; 476c924ad46c89955e78e071c792ef00df9910b42freed@android.com return true; 486c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 496c924ad46c89955e78e071c792ef00df9910b42freed@android.com return false; 506c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 516c924ad46c89955e78e071c792ef00df9910b42freed@android.com SkCanvas* operator->() { return fCanvas; } 5274b461961607fa57a150a9282c410ef0cab38764vandebo@chromium.org 536c924ad46c89955e78e071c792ef00df9910b42freed@android.comprivate: 546c924ad46c89955e78e071c792ef00df9910b42freed@android.com const SkTDArray<SkCanvas*>& fList; 556c924ad46c89955e78e071c792ef00df9910b42freed@android.com int fIndex; 566c924ad46c89955e78e071c792ef00df9910b42freed@android.com SkCanvas* fCanvas; 576c924ad46c89955e78e071c792ef00df9910b42freed@android.com}; 586c924ad46c89955e78e071c792ef00df9910b42freed@android.com 596c924ad46c89955e78e071c792ef00df9910b42freed@android.comint SkNWayCanvas::save(SaveFlags flags) { 606c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 616c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 626c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->save(flags); 636c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 646c924ad46c89955e78e071c792ef00df9910b42freed@android.com return this->INHERITED::save(flags); 656c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 666c924ad46c89955e78e071c792ef00df9910b42freed@android.com 676c924ad46c89955e78e071c792ef00df9910b42freed@android.comint SkNWayCanvas::saveLayer(const SkRect* bounds, const SkPaint* paint, 686c924ad46c89955e78e071c792ef00df9910b42freed@android.com SaveFlags flags) { 696c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 706c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 716c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->saveLayer(bounds, paint, flags); 726c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 736c924ad46c89955e78e071c792ef00df9910b42freed@android.com return this->INHERITED::saveLayer(bounds, paint, flags); 746c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 756c924ad46c89955e78e071c792ef00df9910b42freed@android.com 766c924ad46c89955e78e071c792ef00df9910b42freed@android.comvoid SkNWayCanvas::restore() { 776c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 786c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 796c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->restore(); 806c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 816c924ad46c89955e78e071c792ef00df9910b42freed@android.com this->INHERITED::restore(); 826c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 836c924ad46c89955e78e071c792ef00df9910b42freed@android.com 846c924ad46c89955e78e071c792ef00df9910b42freed@android.combool SkNWayCanvas::translate(SkScalar dx, SkScalar dy) { 856c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 866c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 876c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->translate(dx, dy); 886c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 896c924ad46c89955e78e071c792ef00df9910b42freed@android.com return this->INHERITED::translate(dx, dy); 906c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 916c924ad46c89955e78e071c792ef00df9910b42freed@android.com 926c924ad46c89955e78e071c792ef00df9910b42freed@android.combool SkNWayCanvas::scale(SkScalar sx, SkScalar sy) { 936c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 946c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 956c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->scale(sx, sy); 966c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 976c924ad46c89955e78e071c792ef00df9910b42freed@android.com return this->INHERITED::scale(sx, sy); 986c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 996c924ad46c89955e78e071c792ef00df9910b42freed@android.com 1006c924ad46c89955e78e071c792ef00df9910b42freed@android.combool SkNWayCanvas::rotate(SkScalar degrees) { 1016c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 1026c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 1036c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->rotate(degrees); 1046c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 1056c924ad46c89955e78e071c792ef00df9910b42freed@android.com return this->INHERITED::rotate(degrees); 1066c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 1076c924ad46c89955e78e071c792ef00df9910b42freed@android.com 1086c924ad46c89955e78e071c792ef00df9910b42freed@android.combool SkNWayCanvas::skew(SkScalar sx, SkScalar sy) { 1096c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 1106c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 1116c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->skew(sx, sy); 1126c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 1136c924ad46c89955e78e071c792ef00df9910b42freed@android.com return this->INHERITED::skew(sx, sy); 1146c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 1156c924ad46c89955e78e071c792ef00df9910b42freed@android.com 1166c924ad46c89955e78e071c792ef00df9910b42freed@android.combool SkNWayCanvas::concat(const SkMatrix& matrix) { 1176c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 1186c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 1196c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->concat(matrix); 1206c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 1216c924ad46c89955e78e071c792ef00df9910b42freed@android.com return this->INHERITED::concat(matrix); 1226c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 1236c924ad46c89955e78e071c792ef00df9910b42freed@android.com 1246c924ad46c89955e78e071c792ef00df9910b42freed@android.comvoid SkNWayCanvas::setMatrix(const SkMatrix& matrix) { 1256c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 1266c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 1276c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->setMatrix(matrix); 1286c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 1296c924ad46c89955e78e071c792ef00df9910b42freed@android.com this->INHERITED::setMatrix(matrix); 1306c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 1316c924ad46c89955e78e071c792ef00df9910b42freed@android.com 132071eef918d70b6ca8334bc1241d1ea6923e828d5reed@google.combool SkNWayCanvas::clipRect(const SkRect& rect, SkRegion::Op op, bool doAA) { 1336c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 1346c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 135071eef918d70b6ca8334bc1241d1ea6923e828d5reed@google.com iter->clipRect(rect, op, doAA); 1366c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 137071eef918d70b6ca8334bc1241d1ea6923e828d5reed@google.com return this->INHERITED::clipRect(rect, op, doAA); 1386c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 1396c924ad46c89955e78e071c792ef00df9910b42freed@android.com 140071eef918d70b6ca8334bc1241d1ea6923e828d5reed@google.combool SkNWayCanvas::clipPath(const SkPath& path, SkRegion::Op op, bool doAA) { 1416c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 1426c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 143071eef918d70b6ca8334bc1241d1ea6923e828d5reed@google.com iter->clipPath(path, op, doAA); 1446c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 145071eef918d70b6ca8334bc1241d1ea6923e828d5reed@google.com return this->INHERITED::clipPath(path, op, doAA); 1466c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 1476c924ad46c89955e78e071c792ef00df9910b42freed@android.com 1486c924ad46c89955e78e071c792ef00df9910b42freed@android.combool SkNWayCanvas::clipRegion(const SkRegion& deviceRgn, SkRegion::Op op) { 1496c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 1506c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 1516c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->clipRegion(deviceRgn, op); 1526c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 1536c924ad46c89955e78e071c792ef00df9910b42freed@android.com return this->INHERITED::clipRegion(deviceRgn, op); 1546c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 1556c924ad46c89955e78e071c792ef00df9910b42freed@android.com 1566c924ad46c89955e78e071c792ef00df9910b42freed@android.comvoid SkNWayCanvas::drawPaint(const SkPaint& paint) { 1576c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 1586c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 1596c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->drawPaint(paint); 1606c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 1616c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 1626c924ad46c89955e78e071c792ef00df9910b42freed@android.com 1636c924ad46c89955e78e071c792ef00df9910b42freed@android.comvoid SkNWayCanvas::drawPoints(PointMode mode, size_t count, const SkPoint pts[], 1646c924ad46c89955e78e071c792ef00df9910b42freed@android.com const SkPaint& paint) { 1656c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 1666c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 1676c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->drawPoints(mode, count, pts, paint); 1686c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 1696c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 1706c924ad46c89955e78e071c792ef00df9910b42freed@android.com 1716c924ad46c89955e78e071c792ef00df9910b42freed@android.comvoid SkNWayCanvas::drawRect(const SkRect& rect, const SkPaint& paint) { 1726c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 1736c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 1746c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->drawRect(rect, paint); 1756c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 1766c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 1776c924ad46c89955e78e071c792ef00df9910b42freed@android.com 1786c924ad46c89955e78e071c792ef00df9910b42freed@android.comvoid SkNWayCanvas::drawPath(const SkPath& path, const SkPaint& paint) { 1796c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 1806c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 1816c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->drawPath(path, paint); 1826c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 1836c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 1846c924ad46c89955e78e071c792ef00df9910b42freed@android.com 1856c924ad46c89955e78e071c792ef00df9910b42freed@android.comvoid SkNWayCanvas::drawBitmap(const SkBitmap& bitmap, SkScalar x, SkScalar y, 1866c924ad46c89955e78e071c792ef00df9910b42freed@android.com const SkPaint* paint) { 1876c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 1886c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 1896c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->drawBitmap(bitmap, x, y, paint); 1906c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 1916c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 1926c924ad46c89955e78e071c792ef00df9910b42freed@android.com 1936c924ad46c89955e78e071c792ef00df9910b42freed@android.comvoid SkNWayCanvas::drawBitmapRect(const SkBitmap& bitmap, const SkIRect* src, 1946c924ad46c89955e78e071c792ef00df9910b42freed@android.com const SkRect& dst, const SkPaint* paint) { 1956c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 1966c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 1976c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->drawBitmapRect(bitmap, src, dst, paint); 1986c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 1996c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 2006c924ad46c89955e78e071c792ef00df9910b42freed@android.com 2016c924ad46c89955e78e071c792ef00df9910b42freed@android.comvoid SkNWayCanvas::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m, 2026c924ad46c89955e78e071c792ef00df9910b42freed@android.com const SkPaint* paint) { 2036c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 2046c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 2056c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->drawBitmapMatrix(bitmap, m, paint); 2066c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 2076c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 2086c924ad46c89955e78e071c792ef00df9910b42freed@android.com 2096c924ad46c89955e78e071c792ef00df9910b42freed@android.comvoid SkNWayCanvas::drawSprite(const SkBitmap& bitmap, int x, int y, 2106c924ad46c89955e78e071c792ef00df9910b42freed@android.com const SkPaint* paint) { 2116c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 2126c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 2136c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->drawSprite(bitmap, x, y, paint); 2146c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 2156c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 2166c924ad46c89955e78e071c792ef00df9910b42freed@android.com 2176c924ad46c89955e78e071c792ef00df9910b42freed@android.comvoid SkNWayCanvas::drawText(const void* text, size_t byteLength, SkScalar x, 2186c924ad46c89955e78e071c792ef00df9910b42freed@android.com SkScalar y, const SkPaint& paint) { 2196c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 2206c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 2216c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->drawText(text, byteLength, x, y, paint); 2226c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 2236c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 2246c924ad46c89955e78e071c792ef00df9910b42freed@android.com 2256c924ad46c89955e78e071c792ef00df9910b42freed@android.comvoid SkNWayCanvas::drawPosText(const void* text, size_t byteLength, 2266c924ad46c89955e78e071c792ef00df9910b42freed@android.com const SkPoint pos[], const SkPaint& paint) { 2276c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 2286c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 2296c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->drawPosText(text, byteLength, pos, paint); 2306c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 2316c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 2326c924ad46c89955e78e071c792ef00df9910b42freed@android.com 2336c924ad46c89955e78e071c792ef00df9910b42freed@android.comvoid SkNWayCanvas::drawPosTextH(const void* text, size_t byteLength, 2346c924ad46c89955e78e071c792ef00df9910b42freed@android.com const SkScalar xpos[], SkScalar constY, 2356c924ad46c89955e78e071c792ef00df9910b42freed@android.com const SkPaint& paint) { 2366c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 2376c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 2386c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->drawPosTextH(text, byteLength, xpos, constY, paint); 2396c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 2406c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 2416c924ad46c89955e78e071c792ef00df9910b42freed@android.com 2426c924ad46c89955e78e071c792ef00df9910b42freed@android.comvoid SkNWayCanvas::drawTextOnPath(const void* text, size_t byteLength, 2436c924ad46c89955e78e071c792ef00df9910b42freed@android.com const SkPath& path, const SkMatrix* matrix, 2446c924ad46c89955e78e071c792ef00df9910b42freed@android.com const SkPaint& paint) { 2456c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 2466c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 2476c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->drawTextOnPath(text, byteLength, path, matrix, paint); 2486c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 2496c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 2506c924ad46c89955e78e071c792ef00df9910b42freed@android.com 2516c924ad46c89955e78e071c792ef00df9910b42freed@android.comvoid SkNWayCanvas::drawPicture(SkPicture& picture) { 2526c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 2536c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 2546c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->drawPicture(picture); 2556c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 2566c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 2576c924ad46c89955e78e071c792ef00df9910b42freed@android.com 2586c924ad46c89955e78e071c792ef00df9910b42freed@android.comvoid SkNWayCanvas::drawVertices(VertexMode vmode, int vertexCount, 2596c924ad46c89955e78e071c792ef00df9910b42freed@android.com const SkPoint vertices[], const SkPoint texs[], 2606c924ad46c89955e78e071c792ef00df9910b42freed@android.com const SkColor colors[], SkXfermode* xmode, 2616c924ad46c89955e78e071c792ef00df9910b42freed@android.com const uint16_t indices[], int indexCount, 2626c924ad46c89955e78e071c792ef00df9910b42freed@android.com const SkPaint& paint) { 2636c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 2646c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 2656c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->drawVertices(vmode, vertexCount, vertices, texs, colors, xmode, 2666c924ad46c89955e78e071c792ef00df9910b42freed@android.com indices, indexCount, paint); 2676c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 2686c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 2696c924ad46c89955e78e071c792ef00df9910b42freed@android.com 2706c924ad46c89955e78e071c792ef00df9910b42freed@android.comSkBounder* SkNWayCanvas::setBounder(SkBounder* bounder) { 2716c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 2726c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 2736c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->setBounder(bounder); 2746c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 2756c924ad46c89955e78e071c792ef00df9910b42freed@android.com return this->INHERITED::setBounder(bounder); 2766c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 2776c924ad46c89955e78e071c792ef00df9910b42freed@android.com 2786c924ad46c89955e78e071c792ef00df9910b42freed@android.comSkDrawFilter* SkNWayCanvas::setDrawFilter(SkDrawFilter* filter) { 2796c924ad46c89955e78e071c792ef00df9910b42freed@android.com Iter iter(fList); 2806c924ad46c89955e78e071c792ef00df9910b42freed@android.com while (iter.next()) { 2816c924ad46c89955e78e071c792ef00df9910b42freed@android.com iter->setDrawFilter(filter); 2826c924ad46c89955e78e071c792ef00df9910b42freed@android.com } 2836c924ad46c89955e78e071c792ef00df9910b42freed@android.com return this->INHERITED::setDrawFilter(filter); 2846c924ad46c89955e78e071c792ef00df9910b42freed@android.com} 2856c924ad46c89955e78e071c792ef00df9910b42freed@android.com 2866c924ad46c89955e78e071c792ef00df9910b42freed@android.com 287