• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef UI_GFX_SCOPED_CANVAS_H_
6 #define UI_GFX_SCOPED_CANVAS_H_
7 
8 #include "ui/gfx/canvas.h"
9 
10 namespace gfx {
11 
12 // Saves the drawing state, and restores the state when going out of scope.
13 class ScopedCanvas {
14  public:
ScopedCanvas(gfx::Canvas * canvas)15   explicit ScopedCanvas(gfx::Canvas* canvas) : canvas_(canvas) {
16     if (canvas_)
17       canvas_->Save();
18   }
~ScopedCanvas()19   ~ScopedCanvas() {
20     if (canvas_)
21       canvas_->Restore();
22   }
SetCanvas(gfx::Canvas * canvas)23   void SetCanvas(gfx::Canvas* canvas) {
24     if (canvas_)
25       canvas_->Restore();
26     canvas_ = canvas;
27     canvas_->Save();
28   }
29 
30  private:
31   gfx::Canvas* canvas_;
32 
33   DISALLOW_COPY_AND_ASSIGN(ScopedCanvas);
34 };
35 
36 }  // namespace gfx
37 
38 #endif  // UI_GFX_SCOPED_CANVAS_H_
39