1902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 2902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com/* 3902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * Copyright 2012 Google Inc. 4902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * 5902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * Use of this source code is governed by a BSD-style license that can be 6902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * found in the LICENSE file. 7902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 8902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 9902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 10902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include "SkDrawCommand.h" 11902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include "SkObjectParser.h" 129bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips#include "SkPicture.h" 13b7425173f96e93b090787e2386ba5f022b6c2869fmalita#include "SkTextBlob.h" 14b7425173f96e93b090787e2386ba5f022b6c2869fmalita 15902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com// TODO(chudy): Refactor into non subclass model. 16902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 179bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillipsSkDrawCommand::SkDrawCommand(OpType type) 189bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : fOpType(type) 190a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com , fVisible(true) { 200a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com} 210a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com 22902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comSkDrawCommand::~SkDrawCommand() { 2397cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com fInfo.deleteAll(); 24902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 25902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 269bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillipsconst char* SkDrawCommand::GetCommandString(OpType type) { 27902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com switch (type) { 289bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kBeginCommentGroup_OpType: return "BeginCommentGroup"; 29160ebb2bfa0794d72d31a786793b13413289863dfmalita case kBeginDrawPicture_OpType: return "BeginDrawPicture"; 309bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kClipPath_OpType: return "ClipPath"; 319bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kClipRegion_OpType: return "ClipRegion"; 329bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kClipRect_OpType: return "ClipRect"; 339bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kClipRRect_OpType: return "ClipRRect"; 349bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kComment_OpType: return "Comment"; 359bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kConcat_OpType: return "Concat"; 369bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kDrawBitmap_OpType: return "DrawBitmap"; 379bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kDrawBitmapNine_OpType: return "DrawBitmapNine"; 389bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kDrawBitmapRect_OpType: return "DrawBitmapRect"; 399bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kDrawClear_OpType: return "DrawClear"; 409bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kDrawDRRect_OpType: return "DrawDRRect"; 419bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kDrawOval_OpType: return "DrawOval"; 429bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kDrawPaint_OpType: return "DrawPaint"; 439bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kDrawPatch_OpType: return "DrawPatch"; 449bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kDrawPath_OpType: return "DrawPath"; 459bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kDrawPoints_OpType: return "DrawPoints"; 469bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kDrawPosText_OpType: return "DrawPosText"; 479bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kDrawPosTextH_OpType: return "DrawPosTextH"; 489bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kDrawRect_OpType: return "DrawRect"; 499bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kDrawRRect_OpType: return "DrawRRect"; 509bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kDrawSprite_OpType: return "DrawSprite"; 519bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kDrawText_OpType: return "DrawText"; 529bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kDrawTextBlob_OpType: return "DrawTextBlob"; 539bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kDrawTextOnPath_OpType: return "DrawTextOnPath"; 549bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kDrawVertices_OpType: return "DrawVertices"; 559bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kEndCommentGroup_OpType: return "EndCommentGroup"; 56160ebb2bfa0794d72d31a786793b13413289863dfmalita case kEndDrawPicture_OpType: return "EndDrawPicture"; 579bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kRestore_OpType: return "Restore"; 589bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kSave_OpType: return "Save"; 599bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kSaveLayer_OpType: return "SaveLayer"; 609bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips case kSetMatrix_OpType: return "SetMatrix"; 61902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com default: 629bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips SkDebugf("OpType error 0x%08x\n", type); 63902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkASSERT(0); 64902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com break; 65902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 66902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkDEBUGFAIL("DrawType UNUSED\n"); 67902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com return NULL; 68902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 69902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 708c89c528f31dff25bce74aabe28abe23a772cb1efmalitaSkString SkDrawCommand::toString() const { 719bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips return SkString(GetCommandString(fOpType)); 72902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 73902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 749bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillipsSkClearCommand::SkClearCommand(SkColor color) : INHERITED(kDrawClear_OpType) { 7524bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fColor = color; 7624bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fInfo.push(SkObjectParser::CustomTextToString("No Parameters")); 77902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 78902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 798c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkClearCommand::execute(SkCanvas* canvas) const { 8024bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com canvas->clear(fColor); 81902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 82902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 836ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.comnamespace { 846ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 856ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.comvoid xlate_and_scale_to_bounds(SkCanvas* canvas, const SkRect& bounds) { 866ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com const SkISize& size = canvas->getDeviceSize(); 876ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 886ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com static const SkScalar kInsetFrac = 0.9f; // Leave a border around object 896ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 906ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->translate(size.fWidth/2.0f, size.fHeight/2.0f); 916ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com if (bounds.width() > bounds.height()) { 926ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->scale(SkDoubleToScalar((kInsetFrac*size.fWidth)/bounds.width()), 936ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com SkDoubleToScalar((kInsetFrac*size.fHeight)/bounds.width())); 946ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com } else { 956ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->scale(SkDoubleToScalar((kInsetFrac*size.fWidth)/bounds.height()), 966ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com SkDoubleToScalar((kInsetFrac*size.fHeight)/bounds.height())); 976ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com } 986ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->translate(-bounds.centerX(), -bounds.centerY()); 996ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com} 100a009083bd10353b91903cab84362b0e744d3b3b7skia.committer@gmail.com 1016ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 1026ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.comvoid render_path(SkCanvas* canvas, const SkPath& path) { 1036ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->clear(0xFFFFFFFF); 1046ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->save(); 1056ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 1066ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com const SkRect& bounds = path.getBounds(); 1076ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 1086ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com xlate_and_scale_to_bounds(canvas, bounds); 1096ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 1106ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com SkPaint p; 1116ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com p.setColor(SK_ColorBLACK); 1126ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com p.setStyle(SkPaint::kStroke_Style); 1136ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 1146ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->drawPath(path, p); 1156ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->restore(); 1166ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com} 1176ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 1186ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.comvoid render_bitmap(SkCanvas* canvas, const SkBitmap& input, const SkRect* srcRect = NULL) { 1196ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com const SkISize& size = canvas->getDeviceSize(); 1206ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 1216ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com SkScalar xScale = SkIntToScalar(size.fWidth-2) / input.width(); 1226ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com SkScalar yScale = SkIntToScalar(size.fHeight-2) / input.height(); 1236ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 1246ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com if (input.width() > input.height()) { 1256ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com yScale *= input.height() / (float) input.width(); 1266ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com } else { 1276ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com xScale *= input.width() / (float) input.height(); 1286ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com } 1296ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 1306ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com SkRect dst = SkRect::MakeXYWH(SK_Scalar1, SK_Scalar1, 1316ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com xScale * input.width(), 1326ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com yScale * input.height()); 133a009083bd10353b91903cab84362b0e744d3b3b7skia.committer@gmail.com 1346ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->clear(0xFFFFFFFF); 1356ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->drawBitmapRect(input, NULL, dst); 1366ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 13749f085dddff10473b6ebf832a974288300224e60bsalomon if (srcRect) { 1386ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com SkRect r = SkRect::MakeLTRB(srcRect->fLeft * xScale + SK_Scalar1, 1396ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com srcRect->fTop * yScale + SK_Scalar1, 1406ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com srcRect->fRight * xScale + SK_Scalar1, 1416ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com srcRect->fBottom * yScale + SK_Scalar1); 1426ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com SkPaint p; 1436ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com p.setColor(SK_ColorRED); 1446ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com p.setStyle(SkPaint::kStroke_Style); 1456ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 1466ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->drawRect(r, p); 1476ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com } 1486ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com} 1496ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 1506ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.comvoid render_rrect(SkCanvas* canvas, const SkRRect& rrect) { 1516ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->clear(0xFFFFFFFF); 1526ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->save(); 1536ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 1546ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com const SkRect& bounds = rrect.getBounds(); 1556ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 1566ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com xlate_and_scale_to_bounds(canvas, bounds); 1576ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 1586ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com SkPaint p; 1596ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com p.setColor(SK_ColorBLACK); 1606ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com p.setStyle(SkPaint::kStroke_Style); 1616ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 1626ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->drawRRect(rrect, p); 1636ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->restore(); 1646ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com} 165a009083bd10353b91903cab84362b0e744d3b3b7skia.committer@gmail.com 1663d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.orgvoid render_drrect(SkCanvas* canvas, const SkRRect& outer, const SkRRect& inner) { 1673d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org canvas->clear(0xFFFFFFFF); 1683d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org canvas->save(); 1693d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org 1703d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org const SkRect& bounds = outer.getBounds(); 1713d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org 1723d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org xlate_and_scale_to_bounds(canvas, bounds); 1733d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org 1743d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org SkPaint p; 1753d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org p.setColor(SK_ColorBLACK); 1763d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org p.setStyle(SkPaint::kStroke_Style); 1773d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org 1783d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org canvas->drawDRRect(outer, inner, p); 1793d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org canvas->restore(); 1803d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org} 1813d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org 1826ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com}; 1836ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 1846ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 18557f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.orgSkClipPathCommand::SkClipPathCommand(const SkPath& path, SkRegion::Op op, bool doAA) 1869bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kClipPath_OpType) { 18791217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fPath = path; 18891217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fOp = op; 18991217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fDoAA = doAA; 190902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 19191217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fInfo.push(SkObjectParser::PathToString(path)); 19291217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fInfo.push(SkObjectParser::RegionOpToString(op)); 19391217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fInfo.push(SkObjectParser::BoolToString(doAA)); 194902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 195902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 1968c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkClipPathCommand::execute(SkCanvas* canvas) const { 19791217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com canvas->clipPath(fPath, fOp, fDoAA); 198902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 199902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 2007a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgbool SkClipPathCommand::render(SkCanvas* canvas) const { 2016ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com render_path(canvas, fPath); 2026ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com return true; 2036dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com} 2046dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 205db35dab49e0e6bf16ccad5052bf6e6826daad27dskia.committer@gmail.comSkClipRegionCommand::SkClipRegionCommand(const SkRegion& region, SkRegion::Op op) 2069bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kClipRegion_OpType) { 20724bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fRegion = region; 20824bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fOp = op; 209902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 21024bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fInfo.push(SkObjectParser::RegionToString(region)); 21124bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fInfo.push(SkObjectParser::RegionOpToString(op)); 212902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 213902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 2148c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkClipRegionCommand::execute(SkCanvas* canvas) const { 21524bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com canvas->clipRegion(fRegion, fOp); 216902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 217902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 21857f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.orgSkClipRectCommand::SkClipRectCommand(const SkRect& rect, SkRegion::Op op, bool doAA) 2199bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kClipRect_OpType) { 220a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fRect = rect; 221a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fOp = op; 222a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fDoAA = doAA; 223902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 224a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fInfo.push(SkObjectParser::RectToString(rect)); 225a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fInfo.push(SkObjectParser::RegionOpToString(op)); 226a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fInfo.push(SkObjectParser::BoolToString(doAA)); 227902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 228902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 2298c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkClipRectCommand::execute(SkCanvas* canvas) const { 230a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com canvas->clipRect(fRect, fOp, fDoAA); 231902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 232902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 233db35dab49e0e6bf16ccad5052bf6e6826daad27dskia.committer@gmail.comSkClipRRectCommand::SkClipRRectCommand(const SkRRect& rrect, SkRegion::Op op, bool doAA) 2349bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kClipRRect_OpType) { 235a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fRRect = rrect; 236a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fOp = op; 237a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fDoAA = doAA; 23867baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com 239a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fInfo.push(SkObjectParser::RRectToString(rrect)); 240a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fInfo.push(SkObjectParser::RegionOpToString(op)); 241a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fInfo.push(SkObjectParser::BoolToString(doAA)); 24267baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com} 24367baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com 2448c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkClipRRectCommand::execute(SkCanvas* canvas) const { 245a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com canvas->clipRRect(fRRect, fOp, fDoAA); 24667baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com} 24767baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com 2487a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgbool SkClipRRectCommand::render(SkCanvas* canvas) const { 2496ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com render_rrect(canvas, fRRect); 2506ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com return true; 2516ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com} 2526ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 25357f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.orgSkConcatCommand::SkConcatCommand(const SkMatrix& matrix) 2549bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kConcat_OpType) { 25524bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fMatrix = matrix; 256902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 25724bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fInfo.push(SkObjectParser::MatrixToString(matrix)); 258902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 259902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 2608c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkConcatCommand::execute(SkCanvas* canvas) const { 26124bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com canvas->concat(fMatrix); 262902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 263902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 2647a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgSkDrawBitmapCommand::SkDrawBitmapCommand(const SkBitmap& bitmap, SkScalar left, SkScalar top, 265b3f319fbb01c74e757846d9fcfbf1da174c0cb17robertphillips const SkPaint* paint) 2669bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kDrawBitmap_OpType) { 26724bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fBitmap = bitmap; 26824bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fLeft = left; 26924bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fTop = top; 27049f085dddff10473b6ebf832a974288300224e60bsalomon if (paint) { 27124bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fPaint = *paint; 27224bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fPaintPtr = &fPaint; 27324bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com } else { 27424bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fPaintPtr = NULL; 27524bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com } 276902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 27724bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fInfo.push(SkObjectParser::BitmapToString(bitmap)); 27824bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fInfo.push(SkObjectParser::ScalarToString(left, "SkScalar left: ")); 27924bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fInfo.push(SkObjectParser::ScalarToString(top, "SkScalar top: ")); 28049f085dddff10473b6ebf832a974288300224e60bsalomon if (paint) { 28124bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fInfo.push(SkObjectParser::PaintToString(*paint)); 282b83b6b4f7690fe929d8d6b1a3d2b7ed562b95ba6robertphillips@google.com } 283902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 284902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 2858c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkDrawBitmapCommand::execute(SkCanvas* canvas) const { 28624bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com canvas->drawBitmap(fBitmap, fLeft, fTop, fPaintPtr); 287902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 288902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 2897a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgbool SkDrawBitmapCommand::render(SkCanvas* canvas) const { 2906ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com render_bitmap(canvas, fBitmap); 2916ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com return true; 29253ec73d1e663c781cf44def060b5e8f669709fdcrobertphillips@google.com} 29353ec73d1e663c781cf44def060b5e8f669709fdcrobertphillips@google.com 2947a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgSkDrawBitmapNineCommand::SkDrawBitmapNineCommand(const SkBitmap& bitmap, const SkIRect& center, 295db35dab49e0e6bf16ccad5052bf6e6826daad27dskia.committer@gmail.com const SkRect& dst, const SkPaint* paint) 2969bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kDrawBitmapNine_OpType) { 29724bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fBitmap = bitmap; 29824bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fCenter = center; 29924bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fDst = dst; 30049f085dddff10473b6ebf832a974288300224e60bsalomon if (paint) { 30124bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fPaint = *paint; 30224bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fPaintPtr = &fPaint; 30324bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com } else { 30424bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fPaintPtr = NULL; 30524bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com } 306902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 30724bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fInfo.push(SkObjectParser::BitmapToString(bitmap)); 30824bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fInfo.push(SkObjectParser::IRectToString(center)); 30924bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fInfo.push(SkObjectParser::RectToString(dst, "Dst: ")); 31049f085dddff10473b6ebf832a974288300224e60bsalomon if (paint) { 31124bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fInfo.push(SkObjectParser::PaintToString(*paint)); 312b83b6b4f7690fe929d8d6b1a3d2b7ed562b95ba6robertphillips@google.com } 313902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 314902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 3158c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkDrawBitmapNineCommand::execute(SkCanvas* canvas) const { 31624bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com canvas->drawBitmapNine(fBitmap, fCenter, fDst, fPaintPtr); 317902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 318902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 3197a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgbool SkDrawBitmapNineCommand::render(SkCanvas* canvas) const { 3206ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com render_bitmap(canvas, fBitmap); 3216ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com return true; 32253ec73d1e663c781cf44def060b5e8f669709fdcrobertphillips@google.com} 32353ec73d1e663c781cf44def060b5e8f669709fdcrobertphillips@google.com 3247a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgSkDrawBitmapRectCommand::SkDrawBitmapRectCommand(const SkBitmap& bitmap, const SkRect* src, 325eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org const SkRect& dst, const SkPaint* paint, 326db35dab49e0e6bf16ccad5052bf6e6826daad27dskia.committer@gmail.com SkCanvas::DrawBitmapRectFlags flags) 3279bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kDrawBitmapRect_OpType) { 32891217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fBitmap = bitmap; 32949f085dddff10473b6ebf832a974288300224e60bsalomon if (src) { 33091217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fSrc = *src; 33191217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com } else { 33291217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fSrc.setEmpty(); 33391217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com } 33491217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fDst = dst; 33591217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com 33649f085dddff10473b6ebf832a974288300224e60bsalomon if (paint) { 33791217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fPaint = *paint; 33891217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fPaintPtr = &fPaint; 3393b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com } else { 34091217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fPaintPtr = NULL; 3413b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com } 342eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org fFlags = flags; 343eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org 34491217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fInfo.push(SkObjectParser::BitmapToString(bitmap)); 34549f085dddff10473b6ebf832a974288300224e60bsalomon if (src) { 34691217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fInfo.push(SkObjectParser::RectToString(*src, "Src: ")); 347b83b6b4f7690fe929d8d6b1a3d2b7ed562b95ba6robertphillips@google.com } 34891217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fInfo.push(SkObjectParser::RectToString(dst, "Dst: ")); 34949f085dddff10473b6ebf832a974288300224e60bsalomon if (paint) { 35091217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fInfo.push(SkObjectParser::PaintToString(*paint)); 351b83b6b4f7690fe929d8d6b1a3d2b7ed562b95ba6robertphillips@google.com } 352eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org fInfo.push(SkObjectParser::IntToString(fFlags, "Flags: ")); 353902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 354902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 3558c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkDrawBitmapRectCommand::execute(SkCanvas* canvas) const { 356eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org canvas->drawBitmapRectToRect(fBitmap, this->srcRect(), fDst, fPaintPtr, fFlags); 357902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 358902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 3597a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgbool SkDrawBitmapRectCommand::render(SkCanvas* canvas) const { 3606ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com render_bitmap(canvas, fBitmap, this->srcRect()); 3616ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com return true; 36253ec73d1e663c781cf44def060b5e8f669709fdcrobertphillips@google.com} 36353ec73d1e663c781cf44def060b5e8f669709fdcrobertphillips@google.com 3647a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgSkBeginCommentGroupCommand::SkBeginCommentGroupCommand(const char* description) 3659bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kBeginCommentGroup_OpType) 3660a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com , fDescription(description) { 3670a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com SkString* temp = new SkString; 3680a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com temp->appendf("Description: %s", description); 3690a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com fInfo.push(temp); 3700a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com} 3710a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com 3727a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgSkCommentCommand::SkCommentCommand(const char* kywd, const char* value) 3739bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kComment_OpType) 3740a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com , fKywd(kywd) 3750a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com , fValue(value) { 3760a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com SkString* temp = new SkString; 3770a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com temp->appendf("%s: %s", kywd, value); 3780a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com fInfo.push(temp); 3790a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com} 3800a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com 381db35dab49e0e6bf16ccad5052bf6e6826daad27dskia.committer@gmail.comSkEndCommentGroupCommand::SkEndCommentGroupCommand() 3829bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kEndCommentGroup_OpType) { 3830a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com} 3840a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com 38557f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.orgSkDrawOvalCommand::SkDrawOvalCommand(const SkRect& oval, const SkPaint& paint) 3869bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kDrawOval_OpType) { 387a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fOval = oval; 388a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fPaint = paint; 38967baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com 390a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fInfo.push(SkObjectParser::RectToString(oval)); 391a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fInfo.push(SkObjectParser::PaintToString(paint)); 39267baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com} 39367baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com 3948c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkDrawOvalCommand::execute(SkCanvas* canvas) const { 395a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com canvas->drawOval(fOval, fPaint); 39667baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com} 39767baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com 3987a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgbool SkDrawOvalCommand::render(SkCanvas* canvas) const { 3996ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->clear(0xFFFFFFFF); 4006ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->save(); 4016ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 4026ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com xlate_and_scale_to_bounds(canvas, fOval); 4036ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 4046ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com SkPaint p; 4056ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com p.setColor(SK_ColorBLACK); 4066ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com p.setStyle(SkPaint::kStroke_Style); 4076ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 4086ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->drawOval(fOval, p); 4096ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->restore(); 4106ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 4116ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com return true; 4126ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com} 4136ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 41457f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.orgSkDrawPaintCommand::SkDrawPaintCommand(const SkPaint& paint) 4159bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kDrawPaint_OpType) { 416a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fPaint = paint; 417902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 418a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fInfo.push(SkObjectParser::PaintToString(paint)); 419902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 420902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 4218c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkDrawPaintCommand::execute(SkCanvas* canvas) const { 422a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com canvas->drawPaint(fPaint); 423902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 424902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 4257a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgbool SkDrawPaintCommand::render(SkCanvas* canvas) const { 4266ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->clear(0xFFFFFFFF); 4276ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->drawPaint(fPaint); 4286ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com return true; 4296ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com} 4306ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 43157f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.orgSkDrawPathCommand::SkDrawPathCommand(const SkPath& path, const SkPaint& paint) 4329bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kDrawPath_OpType) { 43391217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fPath = path; 43491217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fPaint = paint; 435902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 43691217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fInfo.push(SkObjectParser::PathToString(path)); 43791217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fInfo.push(SkObjectParser::PaintToString(paint)); 438902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 439902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 4408c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkDrawPathCommand::execute(SkCanvas* canvas) const { 44191217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com canvas->drawPath(fPath, fPaint); 442902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 443902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 4447a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgbool SkDrawPathCommand::render(SkCanvas* canvas) const { 4456ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com render_path(canvas, fPath); 4466ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com return true; 4476dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com} 4486dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 449160ebb2bfa0794d72d31a786793b13413289863dfmalitaSkBeginDrawPictureCommand::SkBeginDrawPictureCommand(const SkPicture* picture, 450160ebb2bfa0794d72d31a786793b13413289863dfmalita const SkMatrix* matrix, 451160ebb2bfa0794d72d31a786793b13413289863dfmalita const SkPaint* paint) 452160ebb2bfa0794d72d31a786793b13413289863dfmalita : INHERITED(kBeginDrawPicture_OpType) 453160ebb2bfa0794d72d31a786793b13413289863dfmalita , fPicture(SkRef(picture)) { 454b3f319fbb01c74e757846d9fcfbf1da174c0cb17robertphillips 455160ebb2bfa0794d72d31a786793b13413289863dfmalita SkString* str = new SkString; 456160ebb2bfa0794d72d31a786793b13413289863dfmalita str->appendf("SkPicture: L: %f T: %f R: %f B: %f", 457160ebb2bfa0794d72d31a786793b13413289863dfmalita picture->cullRect().fLeft, picture->cullRect().fTop, 458160ebb2bfa0794d72d31a786793b13413289863dfmalita picture->cullRect().fRight, picture->cullRect().fBottom); 459160ebb2bfa0794d72d31a786793b13413289863dfmalita fInfo.push(str); 460b3f319fbb01c74e757846d9fcfbf1da174c0cb17robertphillips 46149f085dddff10473b6ebf832a974288300224e60bsalomon if (matrix) { 462160ebb2bfa0794d72d31a786793b13413289863dfmalita fMatrix.set(*matrix); 463b3f319fbb01c74e757846d9fcfbf1da174c0cb17robertphillips fInfo.push(SkObjectParser::MatrixToString(*matrix)); 464b3f319fbb01c74e757846d9fcfbf1da174c0cb17robertphillips } 465160ebb2bfa0794d72d31a786793b13413289863dfmalita 46649f085dddff10473b6ebf832a974288300224e60bsalomon if (paint) { 467160ebb2bfa0794d72d31a786793b13413289863dfmalita fPaint.set(*paint); 468b3f319fbb01c74e757846d9fcfbf1da174c0cb17robertphillips fInfo.push(SkObjectParser::PaintToString(*paint)); 469b3f319fbb01c74e757846d9fcfbf1da174c0cb17robertphillips } 470160ebb2bfa0794d72d31a786793b13413289863dfmalita 471902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 472902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 473160ebb2bfa0794d72d31a786793b13413289863dfmalitavoid SkBeginDrawPictureCommand::execute(SkCanvas* canvas) const { 474160ebb2bfa0794d72d31a786793b13413289863dfmalita if (fPaint.isValid()) { 475160ebb2bfa0794d72d31a786793b13413289863dfmalita SkRect bounds = fPicture->cullRect(); 476160ebb2bfa0794d72d31a786793b13413289863dfmalita if (fMatrix.isValid()) { 477160ebb2bfa0794d72d31a786793b13413289863dfmalita fMatrix.get()->mapRect(&bounds); 478160ebb2bfa0794d72d31a786793b13413289863dfmalita } 479160ebb2bfa0794d72d31a786793b13413289863dfmalita canvas->saveLayer(&bounds, fPaint.get()); 480160ebb2bfa0794d72d31a786793b13413289863dfmalita } 481160ebb2bfa0794d72d31a786793b13413289863dfmalita 482160ebb2bfa0794d72d31a786793b13413289863dfmalita if (fMatrix.isValid()) { 483160ebb2bfa0794d72d31a786793b13413289863dfmalita if (!fPaint.isValid()) { 484160ebb2bfa0794d72d31a786793b13413289863dfmalita canvas->save(); 485160ebb2bfa0794d72d31a786793b13413289863dfmalita } 486160ebb2bfa0794d72d31a786793b13413289863dfmalita canvas->concat(*fMatrix.get()); 487160ebb2bfa0794d72d31a786793b13413289863dfmalita } 488902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 489902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 490160ebb2bfa0794d72d31a786793b13413289863dfmalitabool SkBeginDrawPictureCommand::render(SkCanvas* canvas) const { 491e898e9c65eb2f10e53c459349b174551b3957545commit-bot@chromium.org canvas->clear(0xFFFFFFFF); 492e898e9c65eb2f10e53c459349b174551b3957545commit-bot@chromium.org canvas->save(); 493e898e9c65eb2f10e53c459349b174551b3957545commit-bot@chromium.org 494a8d7f0b13cd4c6d773fcf055fe17db75d260fa05robertphillips xlate_and_scale_to_bounds(canvas, fPicture->cullRect()); 495e898e9c65eb2f10e53c459349b174551b3957545commit-bot@chromium.org 4969b14f26d0f3a974f3dd626c8354e1db1cfcd322frobertphillips canvas->drawPicture(fPicture.get()); 497e898e9c65eb2f10e53c459349b174551b3957545commit-bot@chromium.org 498e898e9c65eb2f10e53c459349b174551b3957545commit-bot@chromium.org canvas->restore(); 499e898e9c65eb2f10e53c459349b174551b3957545commit-bot@chromium.org 500e898e9c65eb2f10e53c459349b174551b3957545commit-bot@chromium.org return true; 501e898e9c65eb2f10e53c459349b174551b3957545commit-bot@chromium.org} 502e898e9c65eb2f10e53c459349b174551b3957545commit-bot@chromium.org 503160ebb2bfa0794d72d31a786793b13413289863dfmalitaSkEndDrawPictureCommand::SkEndDrawPictureCommand(bool restore) 504160ebb2bfa0794d72d31a786793b13413289863dfmalita : INHERITED(kEndDrawPicture_OpType) , fRestore(restore) { } 505160ebb2bfa0794d72d31a786793b13413289863dfmalita 506160ebb2bfa0794d72d31a786793b13413289863dfmalitavoid SkEndDrawPictureCommand::execute(SkCanvas* canvas) const { 507160ebb2bfa0794d72d31a786793b13413289863dfmalita if (fRestore) { 508160ebb2bfa0794d72d31a786793b13413289863dfmalita canvas->restore(); 509160ebb2bfa0794d72d31a786793b13413289863dfmalita } 510160ebb2bfa0794d72d31a786793b13413289863dfmalita} 511160ebb2bfa0794d72d31a786793b13413289863dfmalita 5127a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgSkDrawPointsCommand::SkDrawPointsCommand(SkCanvas::PointMode mode, size_t count, 51357f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org const SkPoint pts[], const SkPaint& paint) 5149bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kDrawPoints_OpType) { 515a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fMode = mode; 516a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fCount = count; 517a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fPts = new SkPoint[count]; 518a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com memcpy(fPts, pts, count * sizeof(SkPoint)); 519a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fPaint = paint; 520902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 521a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fInfo.push(SkObjectParser::PointsToString(pts, count)); 522a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fInfo.push(SkObjectParser::ScalarToString(SkIntToScalar((unsigned int)count), 523a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com "Points: ")); 524a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fInfo.push(SkObjectParser::PointModeToString(mode)); 525a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fInfo.push(SkObjectParser::PaintToString(paint)); 526902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 527902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 5288c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkDrawPointsCommand::execute(SkCanvas* canvas) const { 529a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com canvas->drawPoints(fMode, fCount, fPts, fPaint); 530902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 531902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 5327a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgbool SkDrawPointsCommand::render(SkCanvas* canvas) const { 5336ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->clear(0xFFFFFFFF); 5346ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->save(); 5356ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 5366ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com SkRect bounds; 5376ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 5386ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com bounds.setEmpty(); 5396ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com for (unsigned int i = 0; i < fCount; ++i) { 5406ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com bounds.growToInclude(fPts[i].fX, fPts[i].fY); 5416ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com } 542a009083bd10353b91903cab84362b0e744d3b3b7skia.committer@gmail.com 5436ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com xlate_and_scale_to_bounds(canvas, bounds); 5446ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 5456ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com SkPaint p; 5466ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com p.setColor(SK_ColorBLACK); 5476ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com p.setStyle(SkPaint::kStroke_Style); 5486ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 5496ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->drawPoints(fMode, fCount, fPts, p); 5506ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com canvas->restore(); 5516ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 5526ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com return true; 5536ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com} 5546ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 5557a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgSkDrawPosTextCommand::SkDrawPosTextCommand(const void* text, size_t byteLength, 55657f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org const SkPoint pos[], const SkPaint& paint) 5579bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kDrawPosText_OpType) { 558a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com size_t numPts = paint.countText(text, byteLength); 559a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com 560a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fText = new char[byteLength]; 561a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com memcpy(fText, text, byteLength); 562a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fByteLength = byteLength; 563a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com 564a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fPos = new SkPoint[numPts]; 565a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com memcpy(fPos, pos, numPts * sizeof(SkPoint)); 566a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com 567a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fPaint = paint; 568a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com 569a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fInfo.push(SkObjectParser::TextToString(text, byteLength, paint.getTextEncoding())); 570902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com // TODO(chudy): Test that this works. 571a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fInfo.push(SkObjectParser::PointsToString(pos, 1)); 572a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fInfo.push(SkObjectParser::PaintToString(paint)); 573902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 574902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 5758c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkDrawPosTextCommand::execute(SkCanvas* canvas) const { 576a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com canvas->drawPosText(fText, fByteLength, fPos, fPaint); 577902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 578902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 579902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 5807a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgSkDrawPosTextHCommand::SkDrawPosTextHCommand(const void* text, size_t byteLength, 5817a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org const SkScalar xpos[], SkScalar constY, 58257f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org const SkPaint& paint) 5839bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kDrawPosTextH_OpType) { 584a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com size_t numPts = paint.countText(text, byteLength); 585a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com 586a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fText = new char[byteLength]; 587a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com memcpy(fText, text, byteLength); 58891217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fByteLength = byteLength; 589a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com 590a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com fXpos = new SkScalar[numPts]; 591a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com memcpy(fXpos, xpos, numPts * sizeof(SkScalar)); 592a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com 59391217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fConstY = constY; 59491217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fPaint = paint; 595902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 59691217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fInfo.push(SkObjectParser::TextToString(text, byteLength, paint.getTextEncoding())); 59791217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fInfo.push(SkObjectParser::ScalarToString(xpos[0], "XPOS: ")); 59891217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fInfo.push(SkObjectParser::ScalarToString(constY, "SkScalar constY: ")); 59991217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fInfo.push(SkObjectParser::PaintToString(paint)); 600902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 601902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 6028c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkDrawPosTextHCommand::execute(SkCanvas* canvas) const { 60391217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com canvas->drawPosTextH(fText, fByteLength, fXpos, fConstY, fPaint); 604902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 605902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 606b7425173f96e93b090787e2386ba5f022b6c2869fmalitaSkDrawTextBlobCommand::SkDrawTextBlobCommand(const SkTextBlob* blob, SkScalar x, SkScalar y, 607b7425173f96e93b090787e2386ba5f022b6c2869fmalita const SkPaint& paint) 6089bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kDrawTextBlob_OpType) 609b7425173f96e93b090787e2386ba5f022b6c2869fmalita , fBlob(blob) 610b7425173f96e93b090787e2386ba5f022b6c2869fmalita , fXPos(x) 611b7425173f96e93b090787e2386ba5f022b6c2869fmalita , fYPos(y) 612b7425173f96e93b090787e2386ba5f022b6c2869fmalita , fPaint(paint) { 613b7425173f96e93b090787e2386ba5f022b6c2869fmalita 614b7425173f96e93b090787e2386ba5f022b6c2869fmalita blob->ref(); 615b7425173f96e93b090787e2386ba5f022b6c2869fmalita 616b7425173f96e93b090787e2386ba5f022b6c2869fmalita // FIXME: push blob info 617b7425173f96e93b090787e2386ba5f022b6c2869fmalita fInfo.push(SkObjectParser::ScalarToString(x, "XPOS: ")); 618ff3106c214a302ed11471521d86ca004b1d1297dfmalita fInfo.push(SkObjectParser::ScalarToString(y, "YPOS: ")); 619ff3106c214a302ed11471521d86ca004b1d1297dfmalita fInfo.push(SkObjectParser::RectToString(fBlob->bounds(), "Bounds: ")); 620b7425173f96e93b090787e2386ba5f022b6c2869fmalita fInfo.push(SkObjectParser::PaintToString(paint)); 621b7425173f96e93b090787e2386ba5f022b6c2869fmalita} 622b7425173f96e93b090787e2386ba5f022b6c2869fmalita 6238c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkDrawTextBlobCommand::execute(SkCanvas* canvas) const { 624b7425173f96e93b090787e2386ba5f022b6c2869fmalita canvas->drawTextBlob(fBlob, fXPos, fYPos, fPaint); 625b7425173f96e93b090787e2386ba5f022b6c2869fmalita} 626b7425173f96e93b090787e2386ba5f022b6c2869fmalita 6275577387f25e8321799de71e163f05bd8ef53a40ffmalitabool SkDrawTextBlobCommand::render(SkCanvas* canvas) const { 6285577387f25e8321799de71e163f05bd8ef53a40ffmalita canvas->clear(SK_ColorWHITE); 6295577387f25e8321799de71e163f05bd8ef53a40ffmalita canvas->save(); 6305577387f25e8321799de71e163f05bd8ef53a40ffmalita 6315577387f25e8321799de71e163f05bd8ef53a40ffmalita SkRect bounds = fBlob->bounds().makeOffset(fXPos, fYPos); 6325577387f25e8321799de71e163f05bd8ef53a40ffmalita xlate_and_scale_to_bounds(canvas, bounds); 6335577387f25e8321799de71e163f05bd8ef53a40ffmalita 6345577387f25e8321799de71e163f05bd8ef53a40ffmalita canvas->drawTextBlob(fBlob.get(), fXPos, fYPos, fPaint); 6355577387f25e8321799de71e163f05bd8ef53a40ffmalita 6365577387f25e8321799de71e163f05bd8ef53a40ffmalita canvas->restore(); 6375577387f25e8321799de71e163f05bd8ef53a40ffmalita 6385577387f25e8321799de71e163f05bd8ef53a40ffmalita return true; 6395577387f25e8321799de71e163f05bd8ef53a40ffmalita} 6405577387f25e8321799de71e163f05bd8ef53a40ffmalita 6419bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillipsSkDrawPatchCommand::SkDrawPatchCommand(const SkPoint cubics[12], const SkColor colors[4], 6429bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips const SkPoint texCoords[4], SkXfermode* xfermode, 6439bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips const SkPaint& paint) 6449bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kDrawPatch_OpType) { 6459bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips memcpy(fCubics, cubics, sizeof(fCubics)); 6469bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips memcpy(fColors, colors, sizeof(fColors)); 6479bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips memcpy(fTexCoords, texCoords, sizeof(fTexCoords)); 6489bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips fXfermode.reset(xfermode); 6499bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips fPaint = paint; 6509bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips 6519bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips fInfo.push(SkObjectParser::PaintToString(paint)); 6529bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips} 6539bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips 6549bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillipsvoid SkDrawPatchCommand::execute(SkCanvas* canvas) const { 6559bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips canvas->drawPatch(fCubics, fColors, fTexCoords, fXfermode, fPaint); 6569bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips} 6579bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips 65857f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.orgSkDrawRectCommand::SkDrawRectCommand(const SkRect& rect, const SkPaint& paint) 6599bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kDrawRect_OpType) { 66091217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fRect = rect; 66191217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fPaint = paint; 662902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 66391217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fInfo.push(SkObjectParser::RectToString(rect)); 66491217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com fInfo.push(SkObjectParser::PaintToString(paint)); 665902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 666902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 6678c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkDrawRectCommand::execute(SkCanvas* canvas) const { 66891217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com canvas->drawRect(fRect, fPaint); 669902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 670902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 67157f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.orgSkDrawRRectCommand::SkDrawRRectCommand(const SkRRect& rrect, const SkPaint& paint) 6729bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kDrawRRect_OpType) { 6730df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fRRect = rrect; 6740df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fPaint = paint; 67567baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com 6760df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fInfo.push(SkObjectParser::RRectToString(rrect)); 6770df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fInfo.push(SkObjectParser::PaintToString(paint)); 67867baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com} 67967baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com 6808c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkDrawRRectCommand::execute(SkCanvas* canvas) const { 681febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com canvas->drawRRect(fRRect, fPaint); 68267baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com} 68367baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com 6847a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgbool SkDrawRRectCommand::render(SkCanvas* canvas) const { 6856ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com render_rrect(canvas, fRRect); 6866ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com return true; 6876ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com} 6886ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 68990667ba5eb88f5cb715f71add583a1c87efbe6a7skia.committer@gmail.comSkDrawDRRectCommand::SkDrawDRRectCommand(const SkRRect& outer, 6903d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org const SkRRect& inner, 69157f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org const SkPaint& paint) 6929bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kDrawDRRect_OpType) { 6933d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org fOuter = outer; 6943d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org fInner = inner; 6953d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org fPaint = paint; 6963d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org 6973d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org fInfo.push(SkObjectParser::RRectToString(outer)); 6983d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org fInfo.push(SkObjectParser::RRectToString(inner)); 6993d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org fInfo.push(SkObjectParser::PaintToString(paint)); 7003d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org} 7013d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org 7028c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkDrawDRRectCommand::execute(SkCanvas* canvas) const { 7033d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org canvas->drawDRRect(fOuter, fInner, fPaint); 7043d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org} 7053d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org 7063d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.orgbool SkDrawDRRectCommand::render(SkCanvas* canvas) const { 7073d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org render_drrect(canvas, fOuter, fInner); 7083d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org return true; 7093d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org} 7103d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org 7117a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgSkDrawSpriteCommand::SkDrawSpriteCommand(const SkBitmap& bitmap, int left, int top, 71257f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org const SkPaint* paint) 7139bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kDrawSprite_OpType) { 7140df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fBitmap = bitmap; 7150df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fLeft = left; 7160df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fTop = top; 71749f085dddff10473b6ebf832a974288300224e60bsalomon if (paint) { 7180df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fPaint = *paint; 7190df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fPaintPtr = &fPaint; 7200df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com } else { 7210df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fPaintPtr = NULL; 7220df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com } 723902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 7240df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fInfo.push(SkObjectParser::BitmapToString(bitmap)); 7250df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fInfo.push(SkObjectParser::IntToString(left, "Left: ")); 7260df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fInfo.push(SkObjectParser::IntToString(top, "Top: ")); 72749f085dddff10473b6ebf832a974288300224e60bsalomon if (paint) { 7280df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fInfo.push(SkObjectParser::PaintToString(*paint)); 7290df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com } 730902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 731902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 7328c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkDrawSpriteCommand::execute(SkCanvas* canvas) const { 7330df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com canvas->drawSprite(fBitmap, fLeft, fTop, fPaintPtr); 734902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 735902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 7367a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgbool SkDrawSpriteCommand::render(SkCanvas* canvas) const { 7376ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com render_bitmap(canvas, fBitmap); 7386ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com return true; 73953ec73d1e663c781cf44def060b5e8f669709fdcrobertphillips@google.com} 74053ec73d1e663c781cf44def060b5e8f669709fdcrobertphillips@google.com 7417a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgSkDrawTextCommand::SkDrawTextCommand(const void* text, size_t byteLength, SkScalar x, SkScalar y, 74257f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org const SkPaint& paint) 7439bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kDrawText_OpType) { 7440df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fText = new char[byteLength]; 7450df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com memcpy(fText, text, byteLength); 7460df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fByteLength = byteLength; 7470df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fX = x; 7480df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fY = y; 7490df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fPaint = paint; 750902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 7510df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fInfo.push(SkObjectParser::TextToString(text, byteLength, paint.getTextEncoding())); 7520df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fInfo.push(SkObjectParser::ScalarToString(x, "SkScalar x: ")); 7530df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fInfo.push(SkObjectParser::ScalarToString(y, "SkScalar y: ")); 7540df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fInfo.push(SkObjectParser::PaintToString(paint)); 755902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 756902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 7578c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkDrawTextCommand::execute(SkCanvas* canvas) const { 7580df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com canvas->drawText(fText, fByteLength, fX, fY, fPaint); 759902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 760902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 7617a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgSkDrawTextOnPathCommand::SkDrawTextOnPathCommand(const void* text, size_t byteLength, 7627a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org const SkPath& path, const SkMatrix* matrix, 76357f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org const SkPaint& paint) 7649bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kDrawTextOnPath_OpType) { 7650df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fText = new char[byteLength]; 7660df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com memcpy(fText, text, byteLength); 7670df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fByteLength = byteLength; 7680df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fPath = path; 76949f085dddff10473b6ebf832a974288300224e60bsalomon if (matrix) { 7700df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fMatrix = *matrix; 7710df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com } else { 7720df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fMatrix.setIdentity(); 7730df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com } 7740df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fPaint = paint; 775902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 7760df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fInfo.push(SkObjectParser::TextToString(text, byteLength, paint.getTextEncoding())); 7770df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fInfo.push(SkObjectParser::PathToString(path)); 77849f085dddff10473b6ebf832a974288300224e60bsalomon if (matrix) { 7790df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fInfo.push(SkObjectParser::MatrixToString(*matrix)); 7800df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com } 7810df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fInfo.push(SkObjectParser::PaintToString(paint)); 782902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 783902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 7848c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkDrawTextOnPathCommand::execute(SkCanvas* canvas) const { 7850df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com canvas->drawTextOnPath(fText, fByteLength, fPath, 7860df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fMatrix.isIdentity() ? NULL : &fMatrix, 7870df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fPaint); 788902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 789902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 7907a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgSkDrawVerticesCommand::SkDrawVerticesCommand(SkCanvas::VertexMode vmode, int vertexCount, 7917a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org const SkPoint vertices[], const SkPoint texs[], 7927a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org const SkColor colors[], SkXfermode* xfermode, 7937a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org const uint16_t indices[], int indexCount, 79457f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org const SkPaint& paint) 7959bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kDrawVertices_OpType) { 7960df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fVmode = vmode; 7970df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com 7980df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fVertexCount = vertexCount; 7990df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com 8000df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fVertices = new SkPoint[vertexCount]; 8010df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com memcpy(fVertices, vertices, vertexCount * sizeof(SkPoint)); 8020df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com 80349f085dddff10473b6ebf832a974288300224e60bsalomon if (texs) { 8040df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fTexs = new SkPoint[vertexCount]; 8050df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com memcpy(fTexs, texs, vertexCount * sizeof(SkPoint)); 8060df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com } else { 8070df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fTexs = NULL; 8080df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com } 8090df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com 81049f085dddff10473b6ebf832a974288300224e60bsalomon if (colors) { 8110df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fColors = new SkColor[vertexCount]; 8120df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com memcpy(fColors, colors, vertexCount * sizeof(SkColor)); 8130df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com } else { 8140df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fColors = NULL; 8150df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com } 8160df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com 8170df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fXfermode = xfermode; 81849f085dddff10473b6ebf832a974288300224e60bsalomon if (fXfermode) { 8190df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fXfermode->ref(); 8200df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com } 8210df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com 8220df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com if (indexCount > 0) { 8230df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fIndices = new uint16_t[indexCount]; 8240df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com memcpy(fIndices, indices, indexCount * sizeof(uint16_t)); 8250df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com } else { 8260df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fIndices = NULL; 8270df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com } 8280df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com 8290df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fIndexCount = indexCount; 8300df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fPaint = paint; 8310df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com 832902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com // TODO(chudy) 8330df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fInfo.push(SkObjectParser::CustomTextToString("To be implemented.")); 8340df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fInfo.push(SkObjectParser::PaintToString(paint)); 8350df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com} 8360df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com 8377a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgSkDrawVerticesCommand::~SkDrawVerticesCommand() { 8380df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com delete [] fVertices; 8390df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com delete [] fTexs; 8400df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com delete [] fColors; 8410df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com SkSafeUnref(fXfermode); 8420df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com delete [] fIndices; 843902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 844902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 8458c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkDrawVerticesCommand::execute(SkCanvas* canvas) const { 8460df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com canvas->drawVertices(fVmode, fVertexCount, fVertices, 8470df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fTexs, fColors, fXfermode, fIndices, 8480df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fIndexCount, fPaint); 849902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 850902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 85157f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.orgSkRestoreCommand::SkRestoreCommand() 8529bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kRestore_OpType) { 85324bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fInfo.push(SkObjectParser::CustomTextToString("No Parameters")); 854902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 855902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 8568c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkRestoreCommand::execute(SkCanvas* canvas) const { 857902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com canvas->restore(); 858902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 859902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 8605f6102d07982043542343ff0a6c67b1319ac9fc7Florin MalitaSkSaveCommand::SkSaveCommand() 8619bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kSave_OpType) { 862902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 863902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 8648c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkSaveCommand::execute(SkCanvas* canvas) const { 8655f6102d07982043542343ff0a6c67b1319ac9fc7Florin Malita canvas->save(); 866902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 867902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 8687a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgSkSaveLayerCommand::SkSaveLayerCommand(const SkRect* bounds, const SkPaint* paint, 86957f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org SkCanvas::SaveFlags flags) 8709bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kSaveLayer_OpType) { 87149f085dddff10473b6ebf832a974288300224e60bsalomon if (bounds) { 87224bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fBounds = *bounds; 87324bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com } else { 87424bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fBounds.setEmpty(); 87524bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com } 87624bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com 87749f085dddff10473b6ebf832a974288300224e60bsalomon if (paint) { 87824bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fPaint = *paint; 87924bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fPaintPtr = &fPaint; 88024bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com } else { 88124bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fPaintPtr = NULL; 88224bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com } 88324bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fFlags = flags; 884902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 88549f085dddff10473b6ebf832a974288300224e60bsalomon if (bounds) { 88624bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fInfo.push(SkObjectParser::RectToString(*bounds, "Bounds: ")); 88724bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com } 88849f085dddff10473b6ebf832a974288300224e60bsalomon if (paint) { 88924bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fInfo.push(SkObjectParser::PaintToString(*paint)); 89024bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com } 89124bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fInfo.push(SkObjectParser::SaveFlagsToString(flags)); 892902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 893902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 8948c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkSaveLayerCommand::execute(SkCanvas* canvas) const { 8957e32851d5473d14db5c396f5877e3dfcb7b19f6dskia.committer@gmail.com canvas->saveLayer(fBounds.isEmpty() ? NULL : &fBounds, 89624bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fPaintPtr, 89724bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com fFlags); 898902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 899902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 9008c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkSaveLayerCommand::vizExecute(SkCanvas* canvas) const { 9011643b2c9bc5adb4324bb459bb7811f58bc7c2d62commit-bot@chromium.org canvas->save(); 9021643b2c9bc5adb4324bb459bb7811f58bc7c2d62commit-bot@chromium.org} 9031643b2c9bc5adb4324bb459bb7811f58bc7c2d62commit-bot@chromium.org 90457f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.orgSkSetMatrixCommand::SkSetMatrixCommand(const SkMatrix& matrix) 9059bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips : INHERITED(kSetMatrix_OpType) { 90670171683e6977af7472f0f465bd81852d0644dddrobertphillips fUserMatrix.reset(); 9070df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fMatrix = matrix; 908902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 9090df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com fInfo.push(SkObjectParser::MatrixToString(matrix)); 910902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 911902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 91270171683e6977af7472f0f465bd81852d0644dddrobertphillipsvoid SkSetMatrixCommand::setUserMatrix(const SkMatrix& userMatrix) { 91370171683e6977af7472f0f465bd81852d0644dddrobertphillips fUserMatrix = userMatrix; 91470171683e6977af7472f0f465bd81852d0644dddrobertphillips} 91570171683e6977af7472f0f465bd81852d0644dddrobertphillips 9168c89c528f31dff25bce74aabe28abe23a772cb1efmalitavoid SkSetMatrixCommand::execute(SkCanvas* canvas) const { 91770171683e6977af7472f0f465bd81852d0644dddrobertphillips SkMatrix temp = SkMatrix::Concat(fUserMatrix, fMatrix); 91870171683e6977af7472f0f465bd81852d0644dddrobertphillips canvas->setMatrix(temp); 919902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com} 920902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 921