// vi:ft=cpp
/*
 * (c) 2010 Alexander Warg <warg@os.inf.tu-dresden.de>
 *     economic rights: Technische Universität Dresden (Germany)
 *
 * This file is part of TUD:OS and distributed under the terms of the
 * GNU General Public License 2.
 * Please see the COPYING-GPL-2 file for details.
 */
#pragma once

#include <l4/mag-gfx/canvas>

namespace Mag_gfx {

class Clip_guard
{
private:
  Canvas *_c;
  Rect _o;

  Clip_guard(Clip_guard const &);
  void operator = (Clip_guard const &);

public:
  Clip_guard() : _c(0), _o() {}

  Clip_guard(Canvas *canvas, Rect const &n)
  : _c(canvas), _o(_c->clip())
  { _c->set_clipping(_o & n); }

  void init(Canvas *c, Rect const &n)
  {
    _c = c;
    _o = c->clip();
    _c->set_clipping(_o & n);
  }

  ~Clip_guard() { _c->set_clipping(_o); }

};

}
