| #Topic Automatic_Canvas_Restore | |
| #Class SkAutoCanvasRestore | |
| #Code | |
| #Populate | |
| ## | |
| Stack helper class calls SkCanvas::restoreToCount when SkAutoCanvasRestore | |
| goes out of scope. Use this to guarantee that the canvas is restored to a known | |
| state. | |
| #Method SkAutoCanvasRestore(SkCanvas* canvas, bool doSave) | |
| #Line # restores Canvas when out of scope ## | |
| #Populate | |
| #Example | |
| #Height 128 | |
| SkPaint p; | |
| SkFont font(nullptr, 64); | |
| for (SkScalar sx : { -1, 1 } ) { | |
| for (SkScalar sy : { -1, 1 } ) { | |
| SkAutoCanvasRestore autoRestore(canvas, true); | |
| SkMatrix m = SkMatrix::MakeAll(sx, 1, 96, 0, sy, 64, 0, 0, 1); | |
| canvas->concat(m); | |
| canvas->drawString("R", 0, 0, font, p); | |
| } | |
| } | |
| ## | |
| #SeeAlso SkCanvas::save SkCanvas::restore | |
| ## | |
| #Method ~SkAutoCanvasRestore() | |
| #Line # restores Canvas to saved state ## | |
| #Populate | |
| #NoExample | |
| ## | |
| #SeeAlso SkCanvas::save SkCanvas::restore | |
| ## | |
| #Method void restore() | |
| #In Member_Function | |
| #Line # restores Canvas to saved state ## | |
| #Populate | |
| #Example | |
| for (bool callRestore : { false, true } ) { | |
| for (bool saveCanvas : {false, true} ) { | |
| SkAutoCanvasRestore autoRestore(canvas, saveCanvas); | |
| if (!saveCanvas) { | |
| canvas->save(); | |
| } | |
| SkDebugf("saveCanvas: %s before restore: %d\n", | |
| saveCanvas ? "true" : "false", canvas->getSaveCount()); | |
| if (callRestore) autoRestore.restore(); | |
| SkDebugf("saveCanvas: %s after restore: %d\n", | |
| saveCanvas ? "true" : "false", canvas->getSaveCount()); | |
| } | |
| } | |
| SkDebugf("final count: %d\n", canvas->getSaveCount()); | |
| #StdOut | |
| saveCanvas: false before restore: 2 | |
| saveCanvas: false after restore: 2 | |
| saveCanvas: true before restore: 2 | |
| saveCanvas: true after restore: 2 | |
| saveCanvas: false before restore: 2 | |
| saveCanvas: false after restore: 1 | |
| saveCanvas: true before restore: 2 | |
| saveCanvas: true after restore: 1 | |
| final count: 1 | |
| ## | |
| ## | |
| #SeeAlso SkCanvas::save SkCanvas::restore | |
| ## | |
| #Class SkAutoCanvasRestore ## | |
| #Topic Automatic_Canvas_Restore ## |