14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file. 44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#ifndef UI_GFX_SCOPED_CANVAS_H_ 64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#define UI_GFX_SCOPED_CANVAS_H_ 74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "ui/gfx/canvas.h" 94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace gfx { 114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Saves the drawing state, and restores the state when going out of scope. 134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class ScopedCanvas { 144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public: 154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) explicit ScopedCanvas(gfx::Canvas* canvas) : canvas_(canvas) { 164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (canvas_) 174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) canvas_->Save(); 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ~ScopedCanvas() { 204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (canvas_) 214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) canvas_->Restore(); 224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) void SetCanvas(gfx::Canvas* canvas) { 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (canvas_) 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) canvas_->Restore(); 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) canvas_ = canvas; 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) canvas_->Save(); 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private: 314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) gfx::Canvas* canvas_; 324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ScopedCanvas); 344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}; 354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} // namespace gfx 374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif // UI_GFX_SCOPED_CANVAS_H_ 39