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

Side by Side Diff: tools/debugger/SkDrawCommand.cpp

Issue 2146073003: Creating framework for drawShadowedPicture (Closed) Base URL: https://skia.googlesource.com/skia@master
Patch Set: Made changes to better hide changes from public Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2012 Google Inc. 2 * Copyright 2012 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkDrawCommand.h" 8 #include "SkDrawCommand.h"
9 9
10 #include "SkBlurMaskFilter.h" 10 #include "SkBlurMaskFilter.h"
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 , fVisible(true) { 173 , fVisible(true) {
174 } 174 }
175 175
176 SkDrawCommand::~SkDrawCommand() { 176 SkDrawCommand::~SkDrawCommand() {
177 fInfo.deleteAll(); 177 fInfo.deleteAll();
178 } 178 }
179 179
180 const char* SkDrawCommand::GetCommandString(OpType type) { 180 const char* SkDrawCommand::GetCommandString(OpType type) {
181 switch (type) { 181 switch (type) {
182 case kBeginDrawPicture_OpType: return "BeginDrawPicture"; 182 case kBeginDrawPicture_OpType: return "BeginDrawPicture";
183 case kBeginDrawShadowedPicture_OpType: return "BeginDrawShadowedPicture" ;
183 case kClipPath_OpType: return "ClipPath"; 184 case kClipPath_OpType: return "ClipPath";
184 case kClipRegion_OpType: return "ClipRegion"; 185 case kClipRegion_OpType: return "ClipRegion";
185 case kClipRect_OpType: return "ClipRect"; 186 case kClipRect_OpType: return "ClipRect";
186 case kClipRRect_OpType: return "ClipRRect"; 187 case kClipRRect_OpType: return "ClipRRect";
187 case kConcat_OpType: return "Concat"; 188 case kConcat_OpType: return "Concat";
188 case kDrawAnnotation_OpType: return "DrawAnnotation"; 189 case kDrawAnnotation_OpType: return "DrawAnnotation";
189 case kDrawBitmap_OpType: return "DrawBitmap"; 190 case kDrawBitmap_OpType: return "DrawBitmap";
190 case kDrawBitmapNine_OpType: return "DrawBitmapNine"; 191 case kDrawBitmapNine_OpType: return "DrawBitmapNine";
191 case kDrawBitmapRect_OpType: return "DrawBitmapRect"; 192 case kDrawBitmapRect_OpType: return "DrawBitmapRect";
192 case kDrawClear_OpType: return "DrawClear"; 193 case kDrawClear_OpType: return "DrawClear";
193 case kDrawDRRect_OpType: return "DrawDRRect"; 194 case kDrawDRRect_OpType: return "DrawDRRect";
194 case kDrawImage_OpType: return "DrawImage"; 195 case kDrawImage_OpType: return "DrawImage";
195 case kDrawImageRect_OpType: return "DrawImageRect"; 196 case kDrawImageRect_OpType: return "DrawImageRect";
196 case kDrawOval_OpType: return "DrawOval"; 197 case kDrawOval_OpType: return "DrawOval";
197 case kDrawPaint_OpType: return "DrawPaint"; 198 case kDrawPaint_OpType: return "DrawPaint";
198 case kDrawPatch_OpType: return "DrawPatch"; 199 case kDrawPatch_OpType: return "DrawPatch";
199 case kDrawPath_OpType: return "DrawPath"; 200 case kDrawPath_OpType: return "DrawPath";
200 case kDrawPoints_OpType: return "DrawPoints"; 201 case kDrawPoints_OpType: return "DrawPoints";
201 case kDrawPosText_OpType: return "DrawPosText"; 202 case kDrawPosText_OpType: return "DrawPosText";
202 case kDrawPosTextH_OpType: return "DrawPosTextH"; 203 case kDrawPosTextH_OpType: return "DrawPosTextH";
203 case kDrawRect_OpType: return "DrawRect"; 204 case kDrawRect_OpType: return "DrawRect";
204 case kDrawRRect_OpType: return "DrawRRect"; 205 case kDrawRRect_OpType: return "DrawRRect";
205 case kDrawText_OpType: return "DrawText"; 206 case kDrawText_OpType: return "DrawText";
206 case kDrawTextBlob_OpType: return "DrawTextBlob"; 207 case kDrawTextBlob_OpType: return "DrawTextBlob";
207 case kDrawTextOnPath_OpType: return "DrawTextOnPath"; 208 case kDrawTextOnPath_OpType: return "DrawTextOnPath";
208 case kDrawTextRSXform_OpType: return "DrawTextRSXform"; 209 case kDrawTextRSXform_OpType: return "DrawTextRSXform";
209 case kDrawVertices_OpType: return "DrawVertices"; 210 case kDrawVertices_OpType: return "DrawVertices";
210 case kEndDrawPicture_OpType: return "EndDrawPicture"; 211 case kEndDrawPicture_OpType: return "EndDrawPicture";
212 case kEndDrawShadowedPicture_OpType: return "EndDrawShadowedPicture";
211 case kRestore_OpType: return "Restore"; 213 case kRestore_OpType: return "Restore";
212 case kSave_OpType: return "Save"; 214 case kSave_OpType: return "Save";
213 case kSaveLayer_OpType: return "SaveLayer"; 215 case kSaveLayer_OpType: return "SaveLayer";
214 case kSetMatrix_OpType: return "SetMatrix"; 216 case kSetMatrix_OpType: return "SetMatrix";
215 case kTranslateZ_OpType: return "TranslateZ"; 217 case kTranslateZ_OpType: return "TranslateZ";
216 default: 218 default:
217 SkDebugf("OpType error 0x%08x\n", type); 219 SkDebugf("OpType error 0x%08x\n", type);
218 SkASSERT(0); 220 SkASSERT(0);
219 break; 221 break;
220 } 222 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 INSTALL_FACTORY(DrawTextRSXform); 265 INSTALL_FACTORY(DrawTextRSXform);
264 INSTALL_FACTORY(DrawTextBlob); 266 INSTALL_FACTORY(DrawTextBlob);
265 267
266 INSTALL_FACTORY(DrawRect); 268 INSTALL_FACTORY(DrawRect);
267 INSTALL_FACTORY(DrawRRect); 269 INSTALL_FACTORY(DrawRRect);
268 INSTALL_FACTORY(DrawDRRect); 270 INSTALL_FACTORY(DrawDRRect);
269 INSTALL_FACTORY(DrawPatch); 271 INSTALL_FACTORY(DrawPatch);
270 INSTALL_FACTORY(Save); 272 INSTALL_FACTORY(Save);
271 INSTALL_FACTORY(SaveLayer); 273 INSTALL_FACTORY(SaveLayer);
272 INSTALL_FACTORY(SetMatrix); 274 INSTALL_FACTORY(SetMatrix);
273 275 #ifdef SK_USE_SHADOWS
274 INSTALL_FACTORY(TranslateZ); 276 INSTALL_FACTORY(TranslateZ);
277 #endif
275 } 278 }
276 SkString name = SkString(command[SKDEBUGCANVAS_ATTRIBUTE_COMMAND].asCString( )); 279 SkString name = SkString(command[SKDEBUGCANVAS_ATTRIBUTE_COMMAND].asCString( ));
277 FROM_JSON* factory = factories.find(name); 280 FROM_JSON* factory = factories.find(name);
278 if (factory == nullptr) { 281 if (factory == nullptr) {
279 SkDebugf("no JSON factory for '%s'\n", name.c_str()); 282 SkDebugf("no JSON factory for '%s'\n", name.c_str());
280 return nullptr; 283 return nullptr;
281 } 284 }
282 return (*factory)(command, urlDataManager); 285 return (*factory)(command, urlDataManager);
283 } 286 }
284 287
(...skipping 1199 matching lines...) Expand 10 before | Expand all | Expand 10 after
1484 1487
1485 static void extract_json_matrix(Json::Value& matrix, SkMatrix* result) { 1488 static void extract_json_matrix(Json::Value& matrix, SkMatrix* result) {
1486 SkScalar values[] = { 1489 SkScalar values[] = {
1487 matrix[0][0].asFloat(), matrix[0][1].asFloat(), matrix[0][2].asFloat(), 1490 matrix[0][0].asFloat(), matrix[0][1].asFloat(), matrix[0][2].asFloat(),
1488 matrix[1][0].asFloat(), matrix[1][1].asFloat(), matrix[1][2].asFloat(), 1491 matrix[1][0].asFloat(), matrix[1][1].asFloat(), matrix[1][2].asFloat(),
1489 matrix[2][0].asFloat(), matrix[2][1].asFloat(), matrix[2][2].asFloat() 1492 matrix[2][0].asFloat(), matrix[2][1].asFloat(), matrix[2][2].asFloat()
1490 }; 1493 };
1491 result->set9(values); 1494 result->set9(values);
1492 } 1495 }
1493 1496
1497 #ifdef SK_USE_SHADOWS
1498 // somehow this is only used in shadows...
1494 static void extract_json_scalar(Json::Value& scalar, SkScalar* result) { 1499 static void extract_json_scalar(Json::Value& scalar, SkScalar* result) {
1495 SkScalar value = scalar.asFloat(); 1500 SkScalar value = scalar.asFloat();
1496 *result = value; 1501 *result = value;
1497 } 1502 }
1503 #endif
1498 1504
1499 static void extract_json_path(Json::Value& path, SkPath* result) { 1505 static void extract_json_path(Json::Value& path, SkPath* result) {
1500 const char* fillType = path[SKDEBUGCANVAS_ATTRIBUTE_FILLTYPE].asCString(); 1506 const char* fillType = path[SKDEBUGCANVAS_ATTRIBUTE_FILLTYPE].asCString();
1501 if (!strcmp(fillType, SKDEBUGCANVAS_FILLTYPE_WINDING)) { 1507 if (!strcmp(fillType, SKDEBUGCANVAS_FILLTYPE_WINDING)) {
1502 result->setFillType(SkPath::kWinding_FillType); 1508 result->setFillType(SkPath::kWinding_FillType);
1503 } 1509 }
1504 else if (!strcmp(fillType, SKDEBUGCANVAS_FILLTYPE_EVENODD)) { 1510 else if (!strcmp(fillType, SKDEBUGCANVAS_FILLTYPE_EVENODD)) {
1505 result->setFillType(SkPath::kEvenOdd_FillType); 1511 result->setFillType(SkPath::kEvenOdd_FillType);
1506 } 1512 }
1507 else if (!strcmp(fillType, SKDEBUGCANVAS_FILLTYPE_INVERSEWINDING)) { 1513 else if (!strcmp(fillType, SKDEBUGCANVAS_FILLTYPE_INVERSEWINDING)) {
(...skipping 866 matching lines...) Expand 10 before | Expand all | Expand 10 after
2374 2380
2375 SkEndDrawPictureCommand::SkEndDrawPictureCommand(bool restore) 2381 SkEndDrawPictureCommand::SkEndDrawPictureCommand(bool restore)
2376 : INHERITED(kEndDrawPicture_OpType) , fRestore(restore) { } 2382 : INHERITED(kEndDrawPicture_OpType) , fRestore(restore) { }
2377 2383
2378 void SkEndDrawPictureCommand::execute(SkCanvas* canvas) const { 2384 void SkEndDrawPictureCommand::execute(SkCanvas* canvas) const {
2379 if (fRestore) { 2385 if (fRestore) {
2380 canvas->restore(); 2386 canvas->restore();
2381 } 2387 }
2382 } 2388 }
2383 2389
2390 SkBeginDrawShadowedPictureCommand::SkBeginDrawShadowedPictureCommand(const SkPic ture* picture,
2391 const SkMat rix* matrix,
2392 const SkPai nt* paint)
2393 : INHERITED(kBeginDrawShadowedPicture_OpType)
2394 , fPicture(SkRef(picture)) {
2395
2396 SkString* str = new SkString;
2397 str->appendf("SkPicture: L: %f T: %f R: %f B: %f",
2398 picture->cullRect().fLeft, picture->cullRect().fTop,
2399 picture->cullRect().fRight, picture->cullRect().fBottom);
2400 fInfo.push(str);
2401
2402 if (matrix) {
2403 fMatrix.set(*matrix);
2404 fInfo.push(SkObjectParser::MatrixToString(*matrix));
2405 }
2406
2407 if (paint) {
2408 fPaint.set(*paint);
2409 fInfo.push(SkObjectParser::PaintToString(*paint));
2410 }
2411 }
2412
2413 void SkBeginDrawShadowedPictureCommand::execute(SkCanvas* canvas) const {
2414 if (fPaint.isValid()) {
2415 SkRect bounds = fPicture->cullRect();
2416 if (fMatrix.isValid()) {
2417 fMatrix.get()->mapRect(&bounds);
2418 }
2419 canvas->saveLayer(&bounds, fPaint.get());
2420 }
2421
2422 if (fMatrix.isValid()) {
2423 if (!fPaint.isValid()) {
2424 canvas->save();
2425 }
2426 canvas->concat(*fMatrix.get());
2427 }
2428 }
2429
2430 bool SkBeginDrawShadowedPictureCommand::render(SkCanvas* canvas) const {
2431 canvas->clear(0xFFFFFFFF);
2432 canvas->save();
2433
2434 xlate_and_scale_to_bounds(canvas, fPicture->cullRect());
2435
2436 canvas->drawPicture(fPicture.get());
2437
2438 canvas->restore();
2439
2440 return true;
2441 }
2442
2443 SkEndDrawShadowedPictureCommand::SkEndDrawShadowedPictureCommand(bool restore)
2444 : INHERITED(kEndDrawShadowedPicture_OpType) , fRestore(restore) { }
2445
2446 void SkEndDrawShadowedPictureCommand::execute(SkCanvas* canvas) const {
2447 if (fRestore) {
2448 canvas->restore();
2449 }
2450 }
2451
2384 SkDrawPointsCommand::SkDrawPointsCommand(SkCanvas::PointMode mode, size_t count, 2452 SkDrawPointsCommand::SkDrawPointsCommand(SkCanvas::PointMode mode, size_t count,
2385 const SkPoint pts[], const SkPaint& pai nt) 2453 const SkPoint pts[], const SkPaint& pai nt)
2386 : INHERITED(kDrawPoints_OpType) { 2454 : INHERITED(kDrawPoints_OpType) {
2387 fMode = mode; 2455 fMode = mode;
2388 fCount = count; 2456 fCount = count;
2389 fPts = new SkPoint[count]; 2457 fPts = new SkPoint[count];
2390 memcpy(fPts, pts, count * sizeof(SkPoint)); 2458 memcpy(fPts, pts, count * sizeof(SkPoint));
2391 fPaint = paint; 2459 fPaint = paint;
2392 2460
2393 fInfo.push(SkObjectParser::PointsToString(pts, count)); 2461 fInfo.push(SkObjectParser::PointsToString(pts, count));
(...skipping 916 matching lines...) Expand 10 before | Expand all | Expand 10 after
3310 return new SkSetMatrixCommand(matrix); 3378 return new SkSetMatrixCommand(matrix);
3311 } 3379 }
3312 3380
3313 SkTranslateZCommand::SkTranslateZCommand(SkScalar z) 3381 SkTranslateZCommand::SkTranslateZCommand(SkScalar z)
3314 : INHERITED(kTranslateZ_OpType) { 3382 : INHERITED(kTranslateZ_OpType) {
3315 fZTranslate = z; 3383 fZTranslate = z;
3316 fInfo.push(SkObjectParser::ScalarToString(fZTranslate, "drawDepthTranslation ")); 3384 fInfo.push(SkObjectParser::ScalarToString(fZTranslate, "drawDepthTranslation "));
3317 } 3385 }
3318 3386
3319 void SkTranslateZCommand::execute(SkCanvas* canvas) const { 3387 void SkTranslateZCommand::execute(SkCanvas* canvas) const {
3388 #ifdef SK_USE_SHADOWS
3320 canvas->translateZ(fZTranslate); 3389 canvas->translateZ(fZTranslate);
3390 #endif
3321 } 3391 }
3322 3392
3323 Json::Value SkTranslateZCommand::toJSON(UrlDataManager& urlDataManager) const { 3393 Json::Value SkTranslateZCommand::toJSON(UrlDataManager& urlDataManager) const {
3324 Json::Value result = INHERITED::toJSON(urlDataManager); 3394 Json::Value result = INHERITED::toJSON(urlDataManager);
3325 result[SKDEBUGCANVAS_ATTRIBUTE_DRAWDEPTHTRANS] = MakeJsonScalar(fZTranslate) ; 3395 result[SKDEBUGCANVAS_ATTRIBUTE_DRAWDEPTHTRANS] = MakeJsonScalar(fZTranslate) ;
3326 return result; 3396 return result;
3327 } 3397 }
3328 3398
3329 SkTranslateZCommand* SkTranslateZCommand::fromJSON(Json::Value& command, 3399 SkTranslateZCommand* SkTranslateZCommand::fromJSON(Json::Value& command,
3330 UrlDataManager& urlDataManager) { 3400 UrlDataManager& urlDataManager) {
3331 SkScalar z; 3401 SkScalar z;
3402 #ifdef SK_USE_SHADOWS
3332 extract_json_scalar(command[SKDEBUGCANVAS_ATTRIBUTE_DRAWDEPTHTRANS], &z); 3403 extract_json_scalar(command[SKDEBUGCANVAS_ATTRIBUTE_DRAWDEPTHTRANS], &z);
3404 #else
3405 z = 0;
3406 #endif
3333 return new SkTranslateZCommand(z); 3407 return new SkTranslateZCommand(z);
3334 } 3408 }
OLDNEW
« tools/debugger/SkDebugCanvas.cpp ('K') | « tools/debugger/SkDrawCommand.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698