blob: 30acdc462121950b73b73acb17dd90c3129f1192 [file] [log] [blame]
Cary Clark5081eed2018-01-22 07:55:48 -05001#Topic Automatic_Canvas_Restore
2
3#Class SkAutoCanvasRestore
4
Cary Clark61313f32018-10-08 14:57:48 -04005#Code
6#Populate
7##
8
Cary Clark186d08f2018-04-03 08:43:27 -04009Stack helper class calls SkCanvas::restoreToCount when SkAutoCanvasRestore
Cary Clark5081eed2018-01-22 07:55:48 -050010goes out of scope. Use this to guarantee that the canvas is restored to a known
11state.
12
Cary Clark5081eed2018-01-22 07:55:48 -050013#Method SkAutoCanvasRestore(SkCanvas* canvas, bool doSave)
14
Cary Clark77b3f3a2018-11-07 14:59:03 -050015#Line # restores Canvas when out of scope ##
Cary Clark09d80c02018-10-31 12:14:03 -040016#Populate
Cary Clark5081eed2018-01-22 07:55:48 -050017
18#Example
19#Height 128
20 SkPaint p;
21 p.setAntiAlias(true);
22 p.setTextSize(64);
23 for (SkScalar sx : { -1, 1 } ) {
24 for (SkScalar sy : { -1, 1 } ) {
25 SkAutoCanvasRestore autoRestore(canvas, true);
26 SkMatrix m = SkMatrix::MakeAll(sx, 1, 96, 0, sy, 64, 0, 0, 1);
27 canvas->concat(m);
28 canvas->drawString("R", 0, 0, p);
29 }
30 }
31##
32
33#SeeAlso SkCanvas::save SkCanvas::restore
34
35##
36
37#Method ~SkAutoCanvasRestore()
38
Cary Clarkab2621d2018-01-30 10:08:57 -050039#Line # restores Canvas to saved state ##
Cary Clark09d80c02018-10-31 12:14:03 -040040#Populate
Cary Clark5081eed2018-01-22 07:55:48 -050041
42#NoExample
43##
44
45#SeeAlso SkCanvas::save SkCanvas::restore
46
47##
48
49#Method void restore()
Cary Clark78de7512018-02-07 07:27:09 -050050#In Member_Function
Cary Clarkab2621d2018-01-30 10:08:57 -050051#Line # restores Canvas to saved state ##
Cary Clark09d80c02018-10-31 12:14:03 -040052#Populate
Cary Clark5081eed2018-01-22 07:55:48 -050053
54#Example
55for (bool callRestore : { false, true } ) {
56 for (bool saveCanvas : {false, true} ) {
57 SkAutoCanvasRestore autoRestore(canvas, saveCanvas);
58 if (!saveCanvas) {
59 canvas->save();
60 }
61 SkDebugf("saveCanvas: %s before restore: %d\n",
62 saveCanvas ? "true" : "false", canvas->getSaveCount());
63 if (callRestore) autoRestore.restore();
64 SkDebugf("saveCanvas: %s after restore: %d\n",
65 saveCanvas ? "true" : "false", canvas->getSaveCount());
66 }
67}
68SkDebugf("final count: %d\n", canvas->getSaveCount());
69#StdOut
70saveCanvas: false before restore: 2
71saveCanvas: false after restore: 2
72saveCanvas: true before restore: 2
73saveCanvas: true after restore: 2
74saveCanvas: false before restore: 2
75saveCanvas: false after restore: 1
76saveCanvas: true before restore: 2
77saveCanvas: true after restore: 1
78final count: 1
79##
80##
81
82#SeeAlso SkCanvas::save SkCanvas::restore
83
84##
85
86#Class SkAutoCanvasRestore ##
87
88#Topic Automatic_Canvas_Restore ##