=================================
Context Managers for CoreGraphics
=================================

The CoreGraphics bindings for PyObjC introduce a couple of context manager
for use with the ``with`` statement. These are simple wrappers around the
basic CoreGraphics/Quartz API's that make using the API more convenient and
allow you to write easier to understand code.

Note that you'll have to use ``from __future__ import with_statement`` to
use the ``with``-statement in Python 2.5.

* ``CGSavedGState(context)``

  This wraps a block of code between ``CGContextSaveGState`` and
  ``CGContextRestoreGState``.

  Usage::

      with CGSavedGState(context):
         # Change context and use changed context
         pass

      # Context is restored to before the with-statement at this point.

* ``CGTransparencyLayer(context, info, rect=None)``

  This wraps a block of code between ``CGContextBeginTransparencyLayer``
  (or ``CGContextBeginTransparencyLayerWithRect`` if ``rect`` is not ``None``)
  and ``CGContextEndTransparencyLayer``.

  Usage::

      with CGTransparancyLayer(context, None):
         pass

  Or::

      with CGTransparancyLayer(context, None, myRect):
         pass

* ``CGContextPage``

 This wraps a block of code between calls to ``CGContextBeginPage`` and
 ``CGContextEndPage``).

 Usage::

      with CGContextPage(context [, mediaBox]):
         pass

  __all__ = ('CGSavedGState', 'CGTransparencyLayer',  'CGContextPage')
