• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#Topic Automatic_Canvas_Restore
2
3#Class SkAutoCanvasRestore
4
5#Code
6#Populate
7##
8
9Stack helper class calls SkCanvas::restoreToCount when SkAutoCanvasRestore
10goes out of scope. Use this to guarantee that the canvas is restored to a known
11state.
12
13#Method SkAutoCanvasRestore(SkCanvas* canvas, bool doSave)
14
15#Line # restores Canvas when out of scope ##
16#Populate
17
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
39#Line # restores Canvas to saved state ##
40#Populate
41
42#NoExample
43##
44
45#SeeAlso SkCanvas::save SkCanvas::restore
46
47##
48
49#Method void restore()
50#In Member_Function
51#Line # restores Canvas to saved state ##
52#Populate
53
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 ##
89