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
10namespace gfx {
11
12// Saves the drawing state, and restores the state when going out of scope.
13class ScopedCanvas {
14 public:
15  explicit ScopedCanvas(gfx::Canvas* canvas) : canvas_(canvas) {
16    if (canvas_)
17      canvas_->Save();
18  }
19  ~ScopedCanvas() {
20    if (canvas_)
21      canvas_->Restore();
22  }
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