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