# This file was automatically generated by SWIG (http://www.swig.org).
# Version 4.0.2
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.

from sys import version_info as _swig_python_version_info
if _swig_python_version_info < (2, 7, 0):
    raise RuntimeError("Python 2.7 or later required")

# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _cairo
else:
    import _cairo

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "thisown":
            self.this.own(value)
        elif name == "this":
            set(self, name, value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


CAIRO_VERSION_STRING = _cairo.CAIRO_VERSION_STRING

def cairo_version():
    return _cairo.cairo_version()

def cairo_version_string():
    return _cairo.cairo_version_string()
CAIRO_STATUS_SUCCESS = _cairo.CAIRO_STATUS_SUCCESS
CAIRO_STATUS_NO_MEMORY = _cairo.CAIRO_STATUS_NO_MEMORY
CAIRO_STATUS_INVALID_RESTORE = _cairo.CAIRO_STATUS_INVALID_RESTORE
CAIRO_STATUS_INVALID_POP_GROUP = _cairo.CAIRO_STATUS_INVALID_POP_GROUP
CAIRO_STATUS_NO_CURRENT_POINT = _cairo.CAIRO_STATUS_NO_CURRENT_POINT
CAIRO_STATUS_INVALID_MATRIX = _cairo.CAIRO_STATUS_INVALID_MATRIX
CAIRO_STATUS_INVALID_STATUS = _cairo.CAIRO_STATUS_INVALID_STATUS
CAIRO_STATUS_NULL_POINTER = _cairo.CAIRO_STATUS_NULL_POINTER
CAIRO_STATUS_INVALID_STRING = _cairo.CAIRO_STATUS_INVALID_STRING
CAIRO_STATUS_INVALID_PATH_DATA = _cairo.CAIRO_STATUS_INVALID_PATH_DATA
CAIRO_STATUS_READ_ERROR = _cairo.CAIRO_STATUS_READ_ERROR
CAIRO_STATUS_WRITE_ERROR = _cairo.CAIRO_STATUS_WRITE_ERROR
CAIRO_STATUS_SURFACE_FINISHED = _cairo.CAIRO_STATUS_SURFACE_FINISHED
CAIRO_STATUS_SURFACE_TYPE_MISMATCH = _cairo.CAIRO_STATUS_SURFACE_TYPE_MISMATCH
CAIRO_STATUS_PATTERN_TYPE_MISMATCH = _cairo.CAIRO_STATUS_PATTERN_TYPE_MISMATCH
CAIRO_STATUS_INVALID_CONTENT = _cairo.CAIRO_STATUS_INVALID_CONTENT
CAIRO_STATUS_INVALID_FORMAT = _cairo.CAIRO_STATUS_INVALID_FORMAT
CAIRO_STATUS_INVALID_VISUAL = _cairo.CAIRO_STATUS_INVALID_VISUAL
CAIRO_STATUS_FILE_NOT_FOUND = _cairo.CAIRO_STATUS_FILE_NOT_FOUND
CAIRO_STATUS_INVALID_DASH = _cairo.CAIRO_STATUS_INVALID_DASH
CAIRO_STATUS_INVALID_DSC_COMMENT = _cairo.CAIRO_STATUS_INVALID_DSC_COMMENT
CAIRO_STATUS_INVALID_INDEX = _cairo.CAIRO_STATUS_INVALID_INDEX
CAIRO_STATUS_CLIP_NOT_REPRESENTABLE = _cairo.CAIRO_STATUS_CLIP_NOT_REPRESENTABLE
CAIRO_STATUS_TEMP_FILE_ERROR = _cairo.CAIRO_STATUS_TEMP_FILE_ERROR
CAIRO_STATUS_INVALID_STRIDE = _cairo.CAIRO_STATUS_INVALID_STRIDE
CAIRO_STATUS_FONT_TYPE_MISMATCH = _cairo.CAIRO_STATUS_FONT_TYPE_MISMATCH
CAIRO_STATUS_USER_FONT_IMMUTABLE = _cairo.CAIRO_STATUS_USER_FONT_IMMUTABLE
CAIRO_STATUS_USER_FONT_ERROR = _cairo.CAIRO_STATUS_USER_FONT_ERROR
CAIRO_STATUS_NEGATIVE_COUNT = _cairo.CAIRO_STATUS_NEGATIVE_COUNT
CAIRO_STATUS_INVALID_CLUSTERS = _cairo.CAIRO_STATUS_INVALID_CLUSTERS
CAIRO_STATUS_INVALID_SLANT = _cairo.CAIRO_STATUS_INVALID_SLANT
CAIRO_STATUS_INVALID_WEIGHT = _cairo.CAIRO_STATUS_INVALID_WEIGHT
CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED = _cairo.CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED
CAIRO_STATUS_DEVICE_TYPE_MISMATCH = _cairo.CAIRO_STATUS_DEVICE_TYPE_MISMATCH
CAIRO_STATUS_DEVICE_ERROR = _cairo.CAIRO_STATUS_DEVICE_ERROR
CAIRO_STATUS_INVALID_MESH_CONSTRUCTION = _cairo.CAIRO_STATUS_INVALID_MESH_CONSTRUCTION
CAIRO_STATUS_DEVICE_FINISHED = _cairo.CAIRO_STATUS_DEVICE_FINISHED
CAIRO_STATUS_JBIG2_GLOBAL_MISSING = _cairo.CAIRO_STATUS_JBIG2_GLOBAL_MISSING
CAIRO_STATUS_PNG_ERROR = _cairo.CAIRO_STATUS_PNG_ERROR
CAIRO_STATUS_FREETYPE_ERROR = _cairo.CAIRO_STATUS_FREETYPE_ERROR
CAIRO_STATUS_WIN32_GDI_ERROR = _cairo.CAIRO_STATUS_WIN32_GDI_ERROR
CAIRO_STATUS_TAG_ERROR = _cairo.CAIRO_STATUS_TAG_ERROR
CAIRO_CONTENT_COLOR = _cairo.CAIRO_CONTENT_COLOR
CAIRO_CONTENT_ALPHA = _cairo.CAIRO_CONTENT_ALPHA
CAIRO_CONTENT_COLOR_ALPHA = _cairo.CAIRO_CONTENT_COLOR_ALPHA
CAIRO_FORMAT_INVALID = _cairo.CAIRO_FORMAT_INVALID
CAIRO_FORMAT_ARGB32 = _cairo.CAIRO_FORMAT_ARGB32
CAIRO_FORMAT_RGB24 = _cairo.CAIRO_FORMAT_RGB24
CAIRO_FORMAT_A8 = _cairo.CAIRO_FORMAT_A8
CAIRO_FORMAT_A1 = _cairo.CAIRO_FORMAT_A1
CAIRO_FORMAT_RGB16_565 = _cairo.CAIRO_FORMAT_RGB16_565
CAIRO_FORMAT_RGB30 = _cairo.CAIRO_FORMAT_RGB30
CAIRO_FORMAT_RGB96F = _cairo.CAIRO_FORMAT_RGB96F
CAIRO_FORMAT_RGBA128F = _cairo.CAIRO_FORMAT_RGBA128F

def cairo_create(target):
    return _cairo.cairo_create(target)

def cairo_reference(cr):
    return _cairo.cairo_reference(cr)

def cairo_destroy(cr):
    return _cairo.cairo_destroy(cr)

def cairo_get_reference_count(cr):
    return _cairo.cairo_get_reference_count(cr)

def cairo_save(cr):
    return _cairo.cairo_save(cr)

def cairo_restore(cr):
    return _cairo.cairo_restore(cr)

def cairo_push_group(cr):
    return _cairo.cairo_push_group(cr)

def cairo_push_group_with_content(cr, content):
    return _cairo.cairo_push_group_with_content(cr, content)

def cairo_pop_group(cr):
    return _cairo.cairo_pop_group(cr)

def cairo_pop_group_to_source(cr):
    return _cairo.cairo_pop_group_to_source(cr)
CAIRO_OPERATOR_CLEAR = _cairo.CAIRO_OPERATOR_CLEAR
CAIRO_OPERATOR_SOURCE = _cairo.CAIRO_OPERATOR_SOURCE
CAIRO_OPERATOR_OVER = _cairo.CAIRO_OPERATOR_OVER
CAIRO_OPERATOR_IN = _cairo.CAIRO_OPERATOR_IN
CAIRO_OPERATOR_OUT = _cairo.CAIRO_OPERATOR_OUT
CAIRO_OPERATOR_ATOP = _cairo.CAIRO_OPERATOR_ATOP
CAIRO_OPERATOR_DEST = _cairo.CAIRO_OPERATOR_DEST
CAIRO_OPERATOR_DEST_OVER = _cairo.CAIRO_OPERATOR_DEST_OVER
CAIRO_OPERATOR_DEST_IN = _cairo.CAIRO_OPERATOR_DEST_IN
CAIRO_OPERATOR_DEST_OUT = _cairo.CAIRO_OPERATOR_DEST_OUT
CAIRO_OPERATOR_DEST_ATOP = _cairo.CAIRO_OPERATOR_DEST_ATOP
CAIRO_OPERATOR_XOR = _cairo.CAIRO_OPERATOR_XOR
CAIRO_OPERATOR_ADD = _cairo.CAIRO_OPERATOR_ADD
CAIRO_OPERATOR_SATURATE = _cairo.CAIRO_OPERATOR_SATURATE
CAIRO_OPERATOR_MULTIPLY = _cairo.CAIRO_OPERATOR_MULTIPLY
CAIRO_OPERATOR_SCREEN = _cairo.CAIRO_OPERATOR_SCREEN
CAIRO_OPERATOR_OVERLAY = _cairo.CAIRO_OPERATOR_OVERLAY
CAIRO_OPERATOR_DARKEN = _cairo.CAIRO_OPERATOR_DARKEN
CAIRO_OPERATOR_LIGHTEN = _cairo.CAIRO_OPERATOR_LIGHTEN
CAIRO_OPERATOR_COLOR_DODGE = _cairo.CAIRO_OPERATOR_COLOR_DODGE
CAIRO_OPERATOR_COLOR_BURN = _cairo.CAIRO_OPERATOR_COLOR_BURN
CAIRO_OPERATOR_HARD_LIGHT = _cairo.CAIRO_OPERATOR_HARD_LIGHT
CAIRO_OPERATOR_SOFT_LIGHT = _cairo.CAIRO_OPERATOR_SOFT_LIGHT
CAIRO_OPERATOR_DIFFERENCE = _cairo.CAIRO_OPERATOR_DIFFERENCE
CAIRO_OPERATOR_EXCLUSION = _cairo.CAIRO_OPERATOR_EXCLUSION
CAIRO_OPERATOR_HSL_HUE = _cairo.CAIRO_OPERATOR_HSL_HUE
CAIRO_OPERATOR_HSL_SATURATION = _cairo.CAIRO_OPERATOR_HSL_SATURATION
CAIRO_OPERATOR_HSL_COLOR = _cairo.CAIRO_OPERATOR_HSL_COLOR
CAIRO_OPERATOR_HSL_LUMINOSITY = _cairo.CAIRO_OPERATOR_HSL_LUMINOSITY

def cairo_set_operator(cr, op):
    return _cairo.cairo_set_operator(cr, op)

def cairo_set_source(cr, source):
    return _cairo.cairo_set_source(cr, source)

def cairo_set_source_rgb(cr, red, green, blue):
    return _cairo.cairo_set_source_rgb(cr, red, green, blue)

def cairo_set_source_rgba(cr, red, green, blue, alpha):
    return _cairo.cairo_set_source_rgba(cr, red, green, blue, alpha)

def cairo_set_source_surface(cr, surface, x, y):
    return _cairo.cairo_set_source_surface(cr, surface, x, y)

def cairo_set_tolerance(cr, tolerance):
    return _cairo.cairo_set_tolerance(cr, tolerance)
CAIRO_ANTIALIAS_DEFAULT = _cairo.CAIRO_ANTIALIAS_DEFAULT
CAIRO_ANTIALIAS_NONE = _cairo.CAIRO_ANTIALIAS_NONE
CAIRO_ANTIALIAS_GRAY = _cairo.CAIRO_ANTIALIAS_GRAY
CAIRO_ANTIALIAS_SUBPIXEL = _cairo.CAIRO_ANTIALIAS_SUBPIXEL
CAIRO_ANTIALIAS_FAST = _cairo.CAIRO_ANTIALIAS_FAST
CAIRO_ANTIALIAS_GOOD = _cairo.CAIRO_ANTIALIAS_GOOD
CAIRO_ANTIALIAS_BEST = _cairo.CAIRO_ANTIALIAS_BEST

def cairo_set_antialias(cr, antialias):
    return _cairo.cairo_set_antialias(cr, antialias)
CAIRO_FILL_RULE_WINDING = _cairo.CAIRO_FILL_RULE_WINDING
CAIRO_FILL_RULE_EVEN_ODD = _cairo.CAIRO_FILL_RULE_EVEN_ODD

def cairo_set_fill_rule(cr, fill_rule):
    return _cairo.cairo_set_fill_rule(cr, fill_rule)

def cairo_set_line_width(cr, width):
    return _cairo.cairo_set_line_width(cr, width)
CAIRO_LINE_CAP_BUTT = _cairo.CAIRO_LINE_CAP_BUTT
CAIRO_LINE_CAP_ROUND = _cairo.CAIRO_LINE_CAP_ROUND
CAIRO_LINE_CAP_SQUARE = _cairo.CAIRO_LINE_CAP_SQUARE

def cairo_set_line_cap(cr, line_cap):
    return _cairo.cairo_set_line_cap(cr, line_cap)
CAIRO_LINE_JOIN_MITER = _cairo.CAIRO_LINE_JOIN_MITER
CAIRO_LINE_JOIN_ROUND = _cairo.CAIRO_LINE_JOIN_ROUND
CAIRO_LINE_JOIN_BEVEL = _cairo.CAIRO_LINE_JOIN_BEVEL

def cairo_set_line_join(cr, line_join):
    return _cairo.cairo_set_line_join(cr, line_join)

def cairo_set_dash(cr, dashes, offset):
    return _cairo.cairo_set_dash(cr, dashes, offset)

def cairo_set_miter_limit(cr, limit):
    return _cairo.cairo_set_miter_limit(cr, limit)

def cairo_translate(cr, tx, ty):
    return _cairo.cairo_translate(cr, tx, ty)

def cairo_scale(cr, sx, sy):
    return _cairo.cairo_scale(cr, sx, sy)

def cairo_rotate(cr, angle):
    return _cairo.cairo_rotate(cr, angle)

def cairo_transform(cr, matrix):
    return _cairo.cairo_transform(cr, matrix)

def cairo_set_matrix(cr, matrix):
    return _cairo.cairo_set_matrix(cr, matrix)

def cairo_identity_matrix(cr):
    return _cairo.cairo_identity_matrix(cr)

def cairo_user_to_device(cr, x, y):
    return _cairo.cairo_user_to_device(cr, x, y)

def cairo_user_to_device_distance(cr, dx, dy):
    return _cairo.cairo_user_to_device_distance(cr, dx, dy)

def cairo_device_to_user(cr, x, y):
    return _cairo.cairo_device_to_user(cr, x, y)

def cairo_device_to_user_distance(cr, dx, dy):
    return _cairo.cairo_device_to_user_distance(cr, dx, dy)

def cairo_new_path(cr):
    return _cairo.cairo_new_path(cr)

def cairo_move_to(cr, x, y):
    return _cairo.cairo_move_to(cr, x, y)

def cairo_new_sub_path(cr):
    return _cairo.cairo_new_sub_path(cr)

def cairo_line_to(cr, x, y):
    return _cairo.cairo_line_to(cr, x, y)

def cairo_curve_to(cr, x1, y1, x2, y2, x3, y3):
    return _cairo.cairo_curve_to(cr, x1, y1, x2, y2, x3, y3)

def cairo_arc(cr, xc, yc, radius, angle1, angle2):
    return _cairo.cairo_arc(cr, xc, yc, radius, angle1, angle2)

def cairo_arc_negative(cr, xc, yc, radius, angle1, angle2):
    return _cairo.cairo_arc_negative(cr, xc, yc, radius, angle1, angle2)

def cairo_rel_move_to(cr, dx, dy):
    return _cairo.cairo_rel_move_to(cr, dx, dy)

def cairo_rel_line_to(cr, dx, dy):
    return _cairo.cairo_rel_line_to(cr, dx, dy)

def cairo_rel_curve_to(cr, dx1, dy1, dx2, dy2, dx3, dy3):
    return _cairo.cairo_rel_curve_to(cr, dx1, dy1, dx2, dy2, dx3, dy3)

def cairo_rectangle(cr, x, y, width, height):
    return _cairo.cairo_rectangle(cr, x, y, width, height)

def cairo_close_path(cr):
    return _cairo.cairo_close_path(cr)

def cairo_path_extents(cr, x1, y1, x2, y2):
    return _cairo.cairo_path_extents(cr, x1, y1, x2, y2)

def cairo_paint(cr):
    return _cairo.cairo_paint(cr)

def cairo_paint_with_alpha(cr, alpha):
    return _cairo.cairo_paint_with_alpha(cr, alpha)

def cairo_mask(cr, pattern):
    return _cairo.cairo_mask(cr, pattern)

def cairo_mask_surface(cr, surface, surface_x, surface_y):
    return _cairo.cairo_mask_surface(cr, surface, surface_x, surface_y)

def cairo_stroke(cr):
    return _cairo.cairo_stroke(cr)

def cairo_stroke_preserve(cr):
    return _cairo.cairo_stroke_preserve(cr)

def cairo_fill(cr):
    return _cairo.cairo_fill(cr)

def cairo_fill_preserve(cr):
    return _cairo.cairo_fill_preserve(cr)

def cairo_copy_page(cr):
    return _cairo.cairo_copy_page(cr)

def cairo_show_page(cr):
    return _cairo.cairo_show_page(cr)

def cairo_in_stroke(cr, x, y):
    return _cairo.cairo_in_stroke(cr, x, y)

def cairo_in_fill(cr, x, y):
    return _cairo.cairo_in_fill(cr, x, y)

def cairo_in_clip(cr, x, y):
    return _cairo.cairo_in_clip(cr, x, y)

def cairo_stroke_extents(cr, x1, y1, x2, y2):
    return _cairo.cairo_stroke_extents(cr, x1, y1, x2, y2)

def cairo_fill_extents(cr, x1, y1, x2, y2):
    return _cairo.cairo_fill_extents(cr, x1, y1, x2, y2)

def cairo_reset_clip(cr):
    return _cairo.cairo_reset_clip(cr)

def cairo_clip(cr):
    return _cairo.cairo_clip(cr)

def cairo_clip_preserve(cr):
    return _cairo.cairo_clip_preserve(cr)

def cairo_clip_extents(cr, x1, y1, x2, y2):
    return _cairo.cairo_clip_extents(cr, x1, y1, x2, y2)
CAIRO_TAG_DEST = _cairo.CAIRO_TAG_DEST
CAIRO_TAG_LINK = _cairo.CAIRO_TAG_LINK

def cairo_tag_begin(cr, tag_name, attributes):
    return _cairo.cairo_tag_begin(cr, tag_name, attributes)

def cairo_tag_end(cr, tag_name):
    return _cairo.cairo_tag_end(cr, tag_name)
class cairo_glyph_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    index = property(_cairo.cairo_glyph_t_index_get, _cairo.cairo_glyph_t_index_set)
    x = property(_cairo.cairo_glyph_t_x_get, _cairo.cairo_glyph_t_x_set)
    y = property(_cairo.cairo_glyph_t_y_get, _cairo.cairo_glyph_t_y_set)

    def __init__(self):
        _cairo.cairo_glyph_t_swiginit(self, _cairo.new_cairo_glyph_t())
    __swig_destroy__ = _cairo.delete_cairo_glyph_t

# Register cairo_glyph_t in _cairo:
_cairo.cairo_glyph_t_swigregister(cairo_glyph_t)


def cairo_glyph_allocate(num_glyphs):
    return _cairo.cairo_glyph_allocate(num_glyphs)

def cairo_glyph_free(glyphs):
    return _cairo.cairo_glyph_free(glyphs)
class cairo_text_cluster_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    num_bytes = property(_cairo.cairo_text_cluster_t_num_bytes_get, _cairo.cairo_text_cluster_t_num_bytes_set)
    num_glyphs = property(_cairo.cairo_text_cluster_t_num_glyphs_get, _cairo.cairo_text_cluster_t_num_glyphs_set)

    def __init__(self):
        _cairo.cairo_text_cluster_t_swiginit(self, _cairo.new_cairo_text_cluster_t())
    __swig_destroy__ = _cairo.delete_cairo_text_cluster_t

# Register cairo_text_cluster_t in _cairo:
_cairo.cairo_text_cluster_t_swigregister(cairo_text_cluster_t)


def cairo_text_cluster_allocate(num_clusters):
    return _cairo.cairo_text_cluster_allocate(num_clusters)

def cairo_text_cluster_free(clusters):
    return _cairo.cairo_text_cluster_free(clusters)
CAIRO_TEXT_CLUSTER_FLAG_BACKWARD = _cairo.CAIRO_TEXT_CLUSTER_FLAG_BACKWARD
class cairo_text_extents_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    x_bearing = property(_cairo.cairo_text_extents_t_x_bearing_get, _cairo.cairo_text_extents_t_x_bearing_set)
    y_bearing = property(_cairo.cairo_text_extents_t_y_bearing_get, _cairo.cairo_text_extents_t_y_bearing_set)
    width = property(_cairo.cairo_text_extents_t_width_get, _cairo.cairo_text_extents_t_width_set)
    height = property(_cairo.cairo_text_extents_t_height_get, _cairo.cairo_text_extents_t_height_set)
    x_advance = property(_cairo.cairo_text_extents_t_x_advance_get, _cairo.cairo_text_extents_t_x_advance_set)
    y_advance = property(_cairo.cairo_text_extents_t_y_advance_get, _cairo.cairo_text_extents_t_y_advance_set)

    def __init__(self):
        _cairo.cairo_text_extents_t_swiginit(self, _cairo.new_cairo_text_extents_t())
    __swig_destroy__ = _cairo.delete_cairo_text_extents_t

# Register cairo_text_extents_t in _cairo:
_cairo.cairo_text_extents_t_swigregister(cairo_text_extents_t)

class cairo_font_extents_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    ascent = property(_cairo.cairo_font_extents_t_ascent_get, _cairo.cairo_font_extents_t_ascent_set)
    descent = property(_cairo.cairo_font_extents_t_descent_get, _cairo.cairo_font_extents_t_descent_set)
    height = property(_cairo.cairo_font_extents_t_height_get, _cairo.cairo_font_extents_t_height_set)
    max_x_advance = property(_cairo.cairo_font_extents_t_max_x_advance_get, _cairo.cairo_font_extents_t_max_x_advance_set)
    max_y_advance = property(_cairo.cairo_font_extents_t_max_y_advance_get, _cairo.cairo_font_extents_t_max_y_advance_set)

    def __init__(self):
        _cairo.cairo_font_extents_t_swiginit(self, _cairo.new_cairo_font_extents_t())
    __swig_destroy__ = _cairo.delete_cairo_font_extents_t

# Register cairo_font_extents_t in _cairo:
_cairo.cairo_font_extents_t_swigregister(cairo_font_extents_t)

CAIRO_FONT_SLANT_NORMAL = _cairo.CAIRO_FONT_SLANT_NORMAL
CAIRO_FONT_SLANT_ITALIC = _cairo.CAIRO_FONT_SLANT_ITALIC
CAIRO_FONT_SLANT_OBLIQUE = _cairo.CAIRO_FONT_SLANT_OBLIQUE
CAIRO_FONT_WEIGHT_NORMAL = _cairo.CAIRO_FONT_WEIGHT_NORMAL
CAIRO_FONT_WEIGHT_BOLD = _cairo.CAIRO_FONT_WEIGHT_BOLD
CAIRO_SUBPIXEL_ORDER_DEFAULT = _cairo.CAIRO_SUBPIXEL_ORDER_DEFAULT
CAIRO_SUBPIXEL_ORDER_RGB = _cairo.CAIRO_SUBPIXEL_ORDER_RGB
CAIRO_SUBPIXEL_ORDER_BGR = _cairo.CAIRO_SUBPIXEL_ORDER_BGR
CAIRO_SUBPIXEL_ORDER_VRGB = _cairo.CAIRO_SUBPIXEL_ORDER_VRGB
CAIRO_SUBPIXEL_ORDER_VBGR = _cairo.CAIRO_SUBPIXEL_ORDER_VBGR
CAIRO_HINT_STYLE_DEFAULT = _cairo.CAIRO_HINT_STYLE_DEFAULT
CAIRO_HINT_STYLE_NONE = _cairo.CAIRO_HINT_STYLE_NONE
CAIRO_HINT_STYLE_SLIGHT = _cairo.CAIRO_HINT_STYLE_SLIGHT
CAIRO_HINT_STYLE_MEDIUM = _cairo.CAIRO_HINT_STYLE_MEDIUM
CAIRO_HINT_STYLE_FULL = _cairo.CAIRO_HINT_STYLE_FULL
CAIRO_HINT_METRICS_DEFAULT = _cairo.CAIRO_HINT_METRICS_DEFAULT
CAIRO_HINT_METRICS_OFF = _cairo.CAIRO_HINT_METRICS_OFF
CAIRO_HINT_METRICS_ON = _cairo.CAIRO_HINT_METRICS_ON

def cairo_font_options_create():
    return _cairo.cairo_font_options_create()

def cairo_font_options_copy(original):
    return _cairo.cairo_font_options_copy(original)

def cairo_font_options_destroy(options):
    return _cairo.cairo_font_options_destroy(options)

def cairo_font_options_status(options):
    return _cairo.cairo_font_options_status(options)

def cairo_font_options_merge(options, other):
    return _cairo.cairo_font_options_merge(options, other)

def cairo_font_options_equal(options, other):
    return _cairo.cairo_font_options_equal(options, other)

def cairo_font_options_hash(options):
    return _cairo.cairo_font_options_hash(options)

def cairo_font_options_set_antialias(options, antialias):
    return _cairo.cairo_font_options_set_antialias(options, antialias)

def cairo_font_options_get_antialias(options):
    return _cairo.cairo_font_options_get_antialias(options)

def cairo_font_options_set_subpixel_order(options, subpixel_order):
    return _cairo.cairo_font_options_set_subpixel_order(options, subpixel_order)

def cairo_font_options_get_subpixel_order(options):
    return _cairo.cairo_font_options_get_subpixel_order(options)

def cairo_font_options_set_hint_style(options, hint_style):
    return _cairo.cairo_font_options_set_hint_style(options, hint_style)

def cairo_font_options_get_hint_style(options):
    return _cairo.cairo_font_options_get_hint_style(options)

def cairo_font_options_set_hint_metrics(options, hint_metrics):
    return _cairo.cairo_font_options_set_hint_metrics(options, hint_metrics)

def cairo_font_options_get_hint_metrics(options):
    return _cairo.cairo_font_options_get_hint_metrics(options)

def cairo_font_options_get_variations(options):
    return _cairo.cairo_font_options_get_variations(options)

def cairo_font_options_set_variations(options, variations):
    return _cairo.cairo_font_options_set_variations(options, variations)

def cairo_select_font_face(cr, family, slant, weight):
    return _cairo.cairo_select_font_face(cr, family, slant, weight)

def cairo_set_font_size(cr, size):
    return _cairo.cairo_set_font_size(cr, size)

def cairo_set_font_matrix(cr, matrix):
    return _cairo.cairo_set_font_matrix(cr, matrix)

def cairo_get_font_matrix(cr, matrix):
    return _cairo.cairo_get_font_matrix(cr, matrix)

def cairo_set_font_options(cr, options):
    return _cairo.cairo_set_font_options(cr, options)

def cairo_get_font_options(cr, options):
    return _cairo.cairo_get_font_options(cr, options)

def cairo_set_font_face(cr, font_face):
    return _cairo.cairo_set_font_face(cr, font_face)

def cairo_get_font_face(cr):
    return _cairo.cairo_get_font_face(cr)

def cairo_set_scaled_font(cr, scaled_font):
    return _cairo.cairo_set_scaled_font(cr, scaled_font)

def cairo_get_scaled_font(cr):
    return _cairo.cairo_get_scaled_font(cr)

def cairo_show_text(cr, utf8):
    return _cairo.cairo_show_text(cr, utf8)

def cairo_show_glyphs(cr, glyphs, num_glyphs):
    return _cairo.cairo_show_glyphs(cr, glyphs, num_glyphs)

def cairo_show_text_glyphs(cr, utf8, utf8_len, glyphs, num_glyphs, clusters, num_clusters, cluster_flags):
    return _cairo.cairo_show_text_glyphs(cr, utf8, utf8_len, glyphs, num_glyphs, clusters, num_clusters, cluster_flags)

def cairo_text_path(cr, utf8):
    return _cairo.cairo_text_path(cr, utf8)

def cairo_glyph_path(cr, glyphs, num_glyphs):
    return _cairo.cairo_glyph_path(cr, glyphs, num_glyphs)

def cairo_text_extents(cr, utf8):
    return _cairo.cairo_text_extents(cr, utf8)

def cairo_glyph_extents(cr, glyphs, num_glyphs):
    return _cairo.cairo_glyph_extents(cr, glyphs, num_glyphs)

def cairo_font_extents(cr, extents):
    return _cairo.cairo_font_extents(cr, extents)

def cairo_font_face_reference(font_face):
    return _cairo.cairo_font_face_reference(font_face)

def cairo_font_face_destroy(font_face):
    return _cairo.cairo_font_face_destroy(font_face)

def cairo_font_face_get_reference_count(font_face):
    return _cairo.cairo_font_face_get_reference_count(font_face)

def cairo_font_face_status(font_face):
    return _cairo.cairo_font_face_status(font_face)
CAIRO_FONT_TYPE_TOY = _cairo.CAIRO_FONT_TYPE_TOY
CAIRO_FONT_TYPE_FT = _cairo.CAIRO_FONT_TYPE_FT
CAIRO_FONT_TYPE_WIN32 = _cairo.CAIRO_FONT_TYPE_WIN32
CAIRO_FONT_TYPE_QUARTZ = _cairo.CAIRO_FONT_TYPE_QUARTZ
CAIRO_FONT_TYPE_USER = _cairo.CAIRO_FONT_TYPE_USER

def cairo_font_face_get_type(font_face):
    return _cairo.cairo_font_face_get_type(font_face)

def cairo_scaled_font_create(font_face, font_matrix, ctm, options):
    return _cairo.cairo_scaled_font_create(font_face, font_matrix, ctm, options)

def cairo_scaled_font_reference(scaled_font):
    return _cairo.cairo_scaled_font_reference(scaled_font)

def cairo_scaled_font_destroy(scaled_font):
    return _cairo.cairo_scaled_font_destroy(scaled_font)

def cairo_scaled_font_get_reference_count(scaled_font):
    return _cairo.cairo_scaled_font_get_reference_count(scaled_font)

def cairo_scaled_font_status(scaled_font):
    return _cairo.cairo_scaled_font_status(scaled_font)

def cairo_scaled_font_get_type(scaled_font):
    return _cairo.cairo_scaled_font_get_type(scaled_font)

def cairo_scaled_font_extents(scaled_font, extents):
    return _cairo.cairo_scaled_font_extents(scaled_font, extents)

def cairo_scaled_font_text_extents(scaled_font, utf8):
    return _cairo.cairo_scaled_font_text_extents(scaled_font, utf8)

def cairo_scaled_font_glyph_extents(scaled_font, glyphs, num_glyphs):
    return _cairo.cairo_scaled_font_glyph_extents(scaled_font, glyphs, num_glyphs)

def cairo_scaled_font_text_to_glyphs(scaled_font, x, y, utf8, utf8_len, glyphs, num_glyphs, clusters, num_clusters, cluster_flags):
    return _cairo.cairo_scaled_font_text_to_glyphs(scaled_font, x, y, utf8, utf8_len, glyphs, num_glyphs, clusters, num_clusters, cluster_flags)

def cairo_scaled_font_get_font_face(scaled_font):
    return _cairo.cairo_scaled_font_get_font_face(scaled_font)

def cairo_scaled_font_get_font_matrix(scaled_font, font_matrix):
    return _cairo.cairo_scaled_font_get_font_matrix(scaled_font, font_matrix)

def cairo_scaled_font_get_ctm(scaled_font, ctm):
    return _cairo.cairo_scaled_font_get_ctm(scaled_font, ctm)

def cairo_scaled_font_get_scale_matrix(scaled_font, scale_matrix):
    return _cairo.cairo_scaled_font_get_scale_matrix(scaled_font, scale_matrix)

def cairo_scaled_font_get_font_options(scaled_font, options):
    return _cairo.cairo_scaled_font_get_font_options(scaled_font, options)

def cairo_toy_font_face_create(family, slant, weight):
    return _cairo.cairo_toy_font_face_create(family, slant, weight)

def cairo_toy_font_face_get_family(font_face):
    return _cairo.cairo_toy_font_face_get_family(font_face)

def cairo_toy_font_face_get_slant(font_face):
    return _cairo.cairo_toy_font_face_get_slant(font_face)

def cairo_toy_font_face_get_weight(font_face):
    return _cairo.cairo_toy_font_face_get_weight(font_face)

def cairo_get_operator(cr):
    return _cairo.cairo_get_operator(cr)

def cairo_get_source(cr):
    return _cairo.cairo_get_source(cr)

def cairo_get_tolerance(cr):
    return _cairo.cairo_get_tolerance(cr)

def cairo_get_antialias(cr):
    return _cairo.cairo_get_antialias(cr)

def cairo_has_current_point(cr):
    return _cairo.cairo_has_current_point(cr)

def cairo_get_current_point(cr, x, y):
    return _cairo.cairo_get_current_point(cr, x, y)

def cairo_get_fill_rule(cr):
    return _cairo.cairo_get_fill_rule(cr)

def cairo_get_line_width(cr):
    return _cairo.cairo_get_line_width(cr)

def cairo_get_line_cap(cr):
    return _cairo.cairo_get_line_cap(cr)

def cairo_get_line_join(cr):
    return _cairo.cairo_get_line_join(cr)

def cairo_get_miter_limit(cr):
    return _cairo.cairo_get_miter_limit(cr)

def cairo_get_dash_count(cr):
    return _cairo.cairo_get_dash_count(cr)

def cairo_get_dash(cr, dashes, offset):
    return _cairo.cairo_get_dash(cr, dashes, offset)

def cairo_get_matrix(cr, matrix):
    return _cairo.cairo_get_matrix(cr, matrix)

def cairo_get_target(cr):
    return _cairo.cairo_get_target(cr)

def cairo_get_group_target(cr):
    return _cairo.cairo_get_group_target(cr)
CAIRO_PATH_MOVE_TO = _cairo.CAIRO_PATH_MOVE_TO
CAIRO_PATH_LINE_TO = _cairo.CAIRO_PATH_LINE_TO
CAIRO_PATH_CURVE_TO = _cairo.CAIRO_PATH_CURVE_TO
CAIRO_PATH_CLOSE_PATH = _cairo.CAIRO_PATH_CLOSE_PATH
class _cairo_path_data_t(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self):
        _cairo._cairo_path_data_t_swiginit(self, _cairo.new__cairo_path_data_t())
    __swig_destroy__ = _cairo.delete__cairo_path_data_t

# Register _cairo_path_data_t in _cairo:
_cairo._cairo_path_data_t_swigregister(_cairo_path_data_t)


def cairo_copy_path(cr):
    return _cairo.cairo_copy_path(cr)

def cairo_copy_path_flat(cr):
    return _cairo.cairo_copy_path_flat(cr)

def cairo_append_path(cr, path):
    return _cairo.cairo_append_path(cr, path)

def cairo_path_destroy(path):
    return _cairo.cairo_path_destroy(path)

def cairo_status(cr):
    return _cairo.cairo_status(cr)

def cairo_status_to_string(status):
    return _cairo.cairo_status_to_string(status)

def cairo_surface_create_similar(other, content, width, height):
    return _cairo.cairo_surface_create_similar(other, content, width, height)

def cairo_surface_create_similar_image(other, format, width, height):
    return _cairo.cairo_surface_create_similar_image(other, format, width, height)

def cairo_surface_map_to_image(surface, extents):
    return _cairo.cairo_surface_map_to_image(surface, extents)

def cairo_surface_unmap_image(surface, image):
    return _cairo.cairo_surface_unmap_image(surface, image)

def cairo_surface_create_for_rectangle(target, x, y, width, height):
    return _cairo.cairo_surface_create_for_rectangle(target, x, y, width, height)
CAIRO_SURFACE_OBSERVER_NORMAL = _cairo.CAIRO_SURFACE_OBSERVER_NORMAL
CAIRO_SURFACE_OBSERVER_RECORD_OPERATIONS = _cairo.CAIRO_SURFACE_OBSERVER_RECORD_OPERATIONS

def cairo_surface_create_observer(target, mode):
    return _cairo.cairo_surface_create_observer(target, mode)

def cairo_surface_observer_add_paint_callback(abstract_surface, func, data):
    return _cairo.cairo_surface_observer_add_paint_callback(abstract_surface, func, data)

def cairo_surface_observer_add_mask_callback(abstract_surface, func, data):
    return _cairo.cairo_surface_observer_add_mask_callback(abstract_surface, func, data)

def cairo_surface_observer_add_fill_callback(abstract_surface, func, data):
    return _cairo.cairo_surface_observer_add_fill_callback(abstract_surface, func, data)

def cairo_surface_observer_add_stroke_callback(abstract_surface, func, data):
    return _cairo.cairo_surface_observer_add_stroke_callback(abstract_surface, func, data)

def cairo_surface_observer_add_glyphs_callback(abstract_surface, func, data):
    return _cairo.cairo_surface_observer_add_glyphs_callback(abstract_surface, func, data)

def cairo_surface_observer_add_flush_callback(abstract_surface, func, data):
    return _cairo.cairo_surface_observer_add_flush_callback(abstract_surface, func, data)

def cairo_surface_observer_add_finish_callback(abstract_surface, func, data):
    return _cairo.cairo_surface_observer_add_finish_callback(abstract_surface, func, data)

def cairo_surface_observer_print(surface, write_func, closure):
    return _cairo.cairo_surface_observer_print(surface, write_func, closure)

def cairo_surface_observer_elapsed(surface):
    return _cairo.cairo_surface_observer_elapsed(surface)

def cairo_device_observer_print(device, write_func, closure):
    return _cairo.cairo_device_observer_print(device, write_func, closure)

def cairo_device_observer_elapsed(device):
    return _cairo.cairo_device_observer_elapsed(device)

def cairo_device_observer_paint_elapsed(device):
    return _cairo.cairo_device_observer_paint_elapsed(device)

def cairo_device_observer_mask_elapsed(device):
    return _cairo.cairo_device_observer_mask_elapsed(device)

def cairo_device_observer_fill_elapsed(device):
    return _cairo.cairo_device_observer_fill_elapsed(device)

def cairo_device_observer_stroke_elapsed(device):
    return _cairo.cairo_device_observer_stroke_elapsed(device)

def cairo_device_observer_glyphs_elapsed(device):
    return _cairo.cairo_device_observer_glyphs_elapsed(device)

def cairo_surface_reference(surface):
    return _cairo.cairo_surface_reference(surface)

def cairo_surface_finish(surface):
    return _cairo.cairo_surface_finish(surface)

def cairo_surface_destroy(surface):
    return _cairo.cairo_surface_destroy(surface)

def cairo_surface_get_device(surface):
    return _cairo.cairo_surface_get_device(surface)

def cairo_surface_get_reference_count(surface):
    return _cairo.cairo_surface_get_reference_count(surface)

def cairo_surface_status(surface):
    return _cairo.cairo_surface_status(surface)
CAIRO_SURFACE_TYPE_IMAGE = _cairo.CAIRO_SURFACE_TYPE_IMAGE
CAIRO_SURFACE_TYPE_PDF = _cairo.CAIRO_SURFACE_TYPE_PDF
CAIRO_SURFACE_TYPE_PS = _cairo.CAIRO_SURFACE_TYPE_PS
CAIRO_SURFACE_TYPE_XLIB = _cairo.CAIRO_SURFACE_TYPE_XLIB
CAIRO_SURFACE_TYPE_XCB = _cairo.CAIRO_SURFACE_TYPE_XCB
CAIRO_SURFACE_TYPE_GLITZ = _cairo.CAIRO_SURFACE_TYPE_GLITZ
CAIRO_SURFACE_TYPE_QUARTZ = _cairo.CAIRO_SURFACE_TYPE_QUARTZ
CAIRO_SURFACE_TYPE_WIN32 = _cairo.CAIRO_SURFACE_TYPE_WIN32
CAIRO_SURFACE_TYPE_BEOS = _cairo.CAIRO_SURFACE_TYPE_BEOS
CAIRO_SURFACE_TYPE_DIRECTFB = _cairo.CAIRO_SURFACE_TYPE_DIRECTFB
CAIRO_SURFACE_TYPE_SVG = _cairo.CAIRO_SURFACE_TYPE_SVG
CAIRO_SURFACE_TYPE_OS2 = _cairo.CAIRO_SURFACE_TYPE_OS2
CAIRO_SURFACE_TYPE_WIN32_PRINTING = _cairo.CAIRO_SURFACE_TYPE_WIN32_PRINTING
CAIRO_SURFACE_TYPE_QUARTZ_IMAGE = _cairo.CAIRO_SURFACE_TYPE_QUARTZ_IMAGE
CAIRO_SURFACE_TYPE_QT = _cairo.CAIRO_SURFACE_TYPE_QT
CAIRO_SURFACE_TYPE_RECORDING = _cairo.CAIRO_SURFACE_TYPE_RECORDING
CAIRO_SURFACE_TYPE_VG = _cairo.CAIRO_SURFACE_TYPE_VG
CAIRO_SURFACE_TYPE_GL = _cairo.CAIRO_SURFACE_TYPE_GL
CAIRO_SURFACE_TYPE_DRM = _cairo.CAIRO_SURFACE_TYPE_DRM
CAIRO_SURFACE_TYPE_TEE = _cairo.CAIRO_SURFACE_TYPE_TEE
CAIRO_SURFACE_TYPE_XML = _cairo.CAIRO_SURFACE_TYPE_XML
CAIRO_SURFACE_TYPE_SKIA = _cairo.CAIRO_SURFACE_TYPE_SKIA
CAIRO_SURFACE_TYPE_SUBSURFACE = _cairo.CAIRO_SURFACE_TYPE_SUBSURFACE
CAIRO_SURFACE_TYPE_COGL = _cairo.CAIRO_SURFACE_TYPE_COGL

def cairo_surface_get_type(surface):
    return _cairo.cairo_surface_get_type(surface)

def cairo_surface_get_content(surface):
    return _cairo.cairo_surface_get_content(surface)

def cairo_surface_write_to_png(surface, filename):
    return _cairo.cairo_surface_write_to_png(surface, filename)
CAIRO_MIME_TYPE_JPEG = _cairo.CAIRO_MIME_TYPE_JPEG
CAIRO_MIME_TYPE_PNG = _cairo.CAIRO_MIME_TYPE_PNG
CAIRO_MIME_TYPE_JP2 = _cairo.CAIRO_MIME_TYPE_JP2
CAIRO_MIME_TYPE_URI = _cairo.CAIRO_MIME_TYPE_URI
CAIRO_MIME_TYPE_UNIQUE_ID = _cairo.CAIRO_MIME_TYPE_UNIQUE_ID
CAIRO_MIME_TYPE_JBIG2 = _cairo.CAIRO_MIME_TYPE_JBIG2
CAIRO_MIME_TYPE_JBIG2_GLOBAL = _cairo.CAIRO_MIME_TYPE_JBIG2_GLOBAL
CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID = _cairo.CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID
CAIRO_MIME_TYPE_CCITT_FAX = _cairo.CAIRO_MIME_TYPE_CCITT_FAX
CAIRO_MIME_TYPE_CCITT_FAX_PARAMS = _cairo.CAIRO_MIME_TYPE_CCITT_FAX_PARAMS
CAIRO_MIME_TYPE_EPS = _cairo.CAIRO_MIME_TYPE_EPS
CAIRO_MIME_TYPE_EPS_PARAMS = _cairo.CAIRO_MIME_TYPE_EPS_PARAMS

def cairo_surface_supports_mime_type(surface, mime_type):
    return _cairo.cairo_surface_supports_mime_type(surface, mime_type)

def cairo_surface_get_font_options(surface, options):
    return _cairo.cairo_surface_get_font_options(surface, options)

def cairo_surface_flush(surface):
    return _cairo.cairo_surface_flush(surface)

def cairo_surface_mark_dirty(surface):
    return _cairo.cairo_surface_mark_dirty(surface)

def cairo_surface_mark_dirty_rectangle(surface, x, y, width, height):
    return _cairo.cairo_surface_mark_dirty_rectangle(surface, x, y, width, height)

def cairo_surface_set_device_scale(surface, x_scale, y_scale):
    return _cairo.cairo_surface_set_device_scale(surface, x_scale, y_scale)

def cairo_surface_get_device_scale(surface, x_scale, y_scale):
    return _cairo.cairo_surface_get_device_scale(surface, x_scale, y_scale)

def cairo_surface_set_device_offset(surface, x_offset, y_offset):
    return _cairo.cairo_surface_set_device_offset(surface, x_offset, y_offset)

def cairo_surface_get_device_offset(surface, x_offset, y_offset):
    return _cairo.cairo_surface_get_device_offset(surface, x_offset, y_offset)

def cairo_surface_set_fallback_resolution(surface, x_pixels_per_inch, y_pixels_per_inch):
    return _cairo.cairo_surface_set_fallback_resolution(surface, x_pixels_per_inch, y_pixels_per_inch)

def cairo_surface_get_fallback_resolution(surface, x_pixels_per_inch, y_pixels_per_inch):
    return _cairo.cairo_surface_get_fallback_resolution(surface, x_pixels_per_inch, y_pixels_per_inch)

def cairo_surface_copy_page(surface):
    return _cairo.cairo_surface_copy_page(surface)

def cairo_surface_show_page(surface):
    return _cairo.cairo_surface_show_page(surface)

def cairo_surface_has_show_text_glyphs(surface):
    return _cairo.cairo_surface_has_show_text_glyphs(surface)

def cairo_image_surface_create(format, width, height):
    return _cairo.cairo_image_surface_create(format, width, height)

def cairo_format_stride_for_width(format, width):
    return _cairo.cairo_format_stride_for_width(format, width)

def cairo_image_surface_get_format(surface):
    return _cairo.cairo_image_surface_get_format(surface)

def cairo_image_surface_get_width(surface):
    return _cairo.cairo_image_surface_get_width(surface)

def cairo_image_surface_get_height(surface):
    return _cairo.cairo_image_surface_get_height(surface)

def cairo_image_surface_get_stride(surface):
    return _cairo.cairo_image_surface_get_stride(surface)

def cairo_image_surface_create_from_png(filename):
    return _cairo.cairo_image_surface_create_from_png(filename)

def cairo_recording_surface_create(content, extents):
    return _cairo.cairo_recording_surface_create(content, extents)

def cairo_recording_surface_ink_extents(surface, x0, y0, width, height):
    return _cairo.cairo_recording_surface_ink_extents(surface, x0, y0, width, height)

def cairo_recording_surface_get_extents(surface, extents):
    return _cairo.cairo_recording_surface_get_extents(surface, extents)

def cairo_pattern_create_raster_source(user_data, content, width, height):
    return _cairo.cairo_pattern_create_raster_source(user_data, content, width, height)

def cairo_raster_source_pattern_set_callback_data(pattern, data):
    return _cairo.cairo_raster_source_pattern_set_callback_data(pattern, data)

def cairo_raster_source_pattern_get_callback_data(pattern):
    return _cairo.cairo_raster_source_pattern_get_callback_data(pattern)

def cairo_raster_source_pattern_set_acquire(pattern, acquire, release):
    return _cairo.cairo_raster_source_pattern_set_acquire(pattern, acquire, release)

def cairo_raster_source_pattern_get_acquire(pattern, acquire, release):
    return _cairo.cairo_raster_source_pattern_get_acquire(pattern, acquire, release)

def cairo_raster_source_pattern_set_snapshot(pattern, snapshot):
    return _cairo.cairo_raster_source_pattern_set_snapshot(pattern, snapshot)

def cairo_raster_source_pattern_get_snapshot(pattern):
    return _cairo.cairo_raster_source_pattern_get_snapshot(pattern)

def cairo_raster_source_pattern_set_copy(pattern, copy):
    return _cairo.cairo_raster_source_pattern_set_copy(pattern, copy)

def cairo_raster_source_pattern_get_copy(pattern):
    return _cairo.cairo_raster_source_pattern_get_copy(pattern)

def cairo_raster_source_pattern_set_finish(pattern, finish):
    return _cairo.cairo_raster_source_pattern_set_finish(pattern, finish)

def cairo_raster_source_pattern_get_finish(pattern):
    return _cairo.cairo_raster_source_pattern_get_finish(pattern)

def cairo_pattern_create_rgb(red, green, blue):
    return _cairo.cairo_pattern_create_rgb(red, green, blue)

def cairo_pattern_create_rgba(red, green, blue, alpha):
    return _cairo.cairo_pattern_create_rgba(red, green, blue, alpha)

def cairo_pattern_create_for_surface(surface):
    return _cairo.cairo_pattern_create_for_surface(surface)

def cairo_pattern_create_linear(x0, y0, x1, y1):
    return _cairo.cairo_pattern_create_linear(x0, y0, x1, y1)

def cairo_pattern_create_radial(cx0, cy0, radius0, cx1, cy1, radius1):
    return _cairo.cairo_pattern_create_radial(cx0, cy0, radius0, cx1, cy1, radius1)

def cairo_pattern_create_mesh():
    return _cairo.cairo_pattern_create_mesh()

def cairo_pattern_reference(pattern):
    return _cairo.cairo_pattern_reference(pattern)

def cairo_pattern_destroy(pattern):
    return _cairo.cairo_pattern_destroy(pattern)

def cairo_pattern_get_reference_count(pattern):
    return _cairo.cairo_pattern_get_reference_count(pattern)

def cairo_pattern_status(pattern):
    return _cairo.cairo_pattern_status(pattern)
CAIRO_PATTERN_TYPE_SOLID = _cairo.CAIRO_PATTERN_TYPE_SOLID
CAIRO_PATTERN_TYPE_SURFACE = _cairo.CAIRO_PATTERN_TYPE_SURFACE
CAIRO_PATTERN_TYPE_LINEAR = _cairo.CAIRO_PATTERN_TYPE_LINEAR
CAIRO_PATTERN_TYPE_RADIAL = _cairo.CAIRO_PATTERN_TYPE_RADIAL
CAIRO_PATTERN_TYPE_MESH = _cairo.CAIRO_PATTERN_TYPE_MESH
CAIRO_PATTERN_TYPE_RASTER_SOURCE = _cairo.CAIRO_PATTERN_TYPE_RASTER_SOURCE

def cairo_pattern_get_type(pattern):
    return _cairo.cairo_pattern_get_type(pattern)

def cairo_pattern_add_color_stop_rgb(pattern, offset, red, green, blue):
    return _cairo.cairo_pattern_add_color_stop_rgb(pattern, offset, red, green, blue)

def cairo_pattern_add_color_stop_rgba(pattern, offset, red, green, blue, alpha):
    return _cairo.cairo_pattern_add_color_stop_rgba(pattern, offset, red, green, blue, alpha)

def cairo_mesh_pattern_begin_patch(pattern):
    return _cairo.cairo_mesh_pattern_begin_patch(pattern)

def cairo_mesh_pattern_end_patch(pattern):
    return _cairo.cairo_mesh_pattern_end_patch(pattern)

def cairo_mesh_pattern_curve_to(pattern, x1, y1, x2, y2, x3, y3):
    return _cairo.cairo_mesh_pattern_curve_to(pattern, x1, y1, x2, y2, x3, y3)

def cairo_mesh_pattern_line_to(pattern, x, y):
    return _cairo.cairo_mesh_pattern_line_to(pattern, x, y)

def cairo_mesh_pattern_move_to(pattern, x, y):
    return _cairo.cairo_mesh_pattern_move_to(pattern, x, y)

def cairo_mesh_pattern_set_control_point(pattern, point_num, x, y):
    return _cairo.cairo_mesh_pattern_set_control_point(pattern, point_num, x, y)

def cairo_mesh_pattern_set_corner_color_rgb(pattern, corner_num, red, green, blue):
    return _cairo.cairo_mesh_pattern_set_corner_color_rgb(pattern, corner_num, red, green, blue)

def cairo_mesh_pattern_set_corner_color_rgba(pattern, corner_num, red, green, blue, alpha):
    return _cairo.cairo_mesh_pattern_set_corner_color_rgba(pattern, corner_num, red, green, blue, alpha)

def cairo_pattern_set_matrix(pattern, matrix):
    return _cairo.cairo_pattern_set_matrix(pattern, matrix)

def cairo_pattern_get_matrix(pattern, matrix):
    return _cairo.cairo_pattern_get_matrix(pattern, matrix)
CAIRO_EXTEND_NONE = _cairo.CAIRO_EXTEND_NONE
CAIRO_EXTEND_REPEAT = _cairo.CAIRO_EXTEND_REPEAT
CAIRO_EXTEND_REFLECT = _cairo.CAIRO_EXTEND_REFLECT
CAIRO_EXTEND_PAD = _cairo.CAIRO_EXTEND_PAD

def cairo_pattern_set_extend(pattern, extend):
    return _cairo.cairo_pattern_set_extend(pattern, extend)

def cairo_pattern_get_extend(pattern):
    return _cairo.cairo_pattern_get_extend(pattern)
CAIRO_FILTER_FAST = _cairo.CAIRO_FILTER_FAST
CAIRO_FILTER_GOOD = _cairo.CAIRO_FILTER_GOOD
CAIRO_FILTER_BEST = _cairo.CAIRO_FILTER_BEST
CAIRO_FILTER_NEAREST = _cairo.CAIRO_FILTER_NEAREST
CAIRO_FILTER_BILINEAR = _cairo.CAIRO_FILTER_BILINEAR
CAIRO_FILTER_GAUSSIAN = _cairo.CAIRO_FILTER_GAUSSIAN

def cairo_pattern_set_filter(pattern, filter):
    return _cairo.cairo_pattern_set_filter(pattern, filter)

def cairo_pattern_get_filter(pattern):
    return _cairo.cairo_pattern_get_filter(pattern)

def cairo_pattern_get_rgba(pattern, red, green, blue, alpha):
    return _cairo.cairo_pattern_get_rgba(pattern, red, green, blue, alpha)

def cairo_pattern_get_surface(pattern, surface):
    return _cairo.cairo_pattern_get_surface(pattern, surface)

def cairo_pattern_get_color_stop_rgba(pattern, index, offset, red, green, blue, alpha):
    return _cairo.cairo_pattern_get_color_stop_rgba(pattern, index, offset, red, green, blue, alpha)

def cairo_pattern_get_color_stop_count(pattern, count):
    return _cairo.cairo_pattern_get_color_stop_count(pattern, count)

def cairo_pattern_get_linear_points(pattern, x0, y0, x1, y1):
    return _cairo.cairo_pattern_get_linear_points(pattern, x0, y0, x1, y1)

def cairo_pattern_get_radial_circles(pattern, x0, y0, r0, x1, y1, r1):
    return _cairo.cairo_pattern_get_radial_circles(pattern, x0, y0, r0, x1, y1, r1)

def cairo_mesh_pattern_get_patch_count(pattern, count):
    return _cairo.cairo_mesh_pattern_get_patch_count(pattern, count)

def cairo_mesh_pattern_get_path(pattern, patch_num):
    return _cairo.cairo_mesh_pattern_get_path(pattern, patch_num)

def cairo_mesh_pattern_get_corner_color_rgba(pattern, patch_num, corner_num, red, green, blue, alpha):
    return _cairo.cairo_mesh_pattern_get_corner_color_rgba(pattern, patch_num, corner_num, red, green, blue, alpha)

def cairo_mesh_pattern_get_control_point(pattern, patch_num, point_num, x, y):
    return _cairo.cairo_mesh_pattern_get_control_point(pattern, patch_num, point_num, x, y)

def cairo_matrix_init(matrix, xx, yx, xy, yy, x0, y0):
    return _cairo.cairo_matrix_init(matrix, xx, yx, xy, yy, x0, y0)

def cairo_matrix_init_identity(matrix):
    return _cairo.cairo_matrix_init_identity(matrix)

def cairo_matrix_init_translate(matrix, tx, ty):
    return _cairo.cairo_matrix_init_translate(matrix, tx, ty)

def cairo_matrix_init_scale(matrix, sx, sy):
    return _cairo.cairo_matrix_init_scale(matrix, sx, sy)

def cairo_matrix_init_rotate(matrix, radians):
    return _cairo.cairo_matrix_init_rotate(matrix, radians)

def cairo_matrix_translate(matrix, tx, ty):
    return _cairo.cairo_matrix_translate(matrix, tx, ty)

def cairo_matrix_scale(matrix, sx, sy):
    return _cairo.cairo_matrix_scale(matrix, sx, sy)

def cairo_matrix_rotate(matrix, radians):
    return _cairo.cairo_matrix_rotate(matrix, radians)

def cairo_matrix_invert(matrix):
    return _cairo.cairo_matrix_invert(matrix)

def cairo_matrix_multiply(result, a, b):
    return _cairo.cairo_matrix_multiply(result, a, b)

def cairo_matrix_transform_distance(matrix, dx, dy):
    return _cairo.cairo_matrix_transform_distance(matrix, dx, dy)

def cairo_matrix_transform_point(matrix, x, y):
    return _cairo.cairo_matrix_transform_point(matrix, x, y)

def cairo_region_create_rectangles(rects, count):
    return _cairo.cairo_region_create_rectangles(rects, count)

def cairo_region_reference(region):
    return _cairo.cairo_region_reference(region)

def cairo_region_equal(a, b):
    return _cairo.cairo_region_equal(a, b)

def cairo_region_xor(dst, other):
    return _cairo.cairo_region_xor(dst, other)

def cairo_region_xor_rectangle(dst, rectangle):
    return _cairo.cairo_region_xor_rectangle(dst, rectangle)

def cairo_debug_reset_static_data():
    return _cairo.cairo_debug_reset_static_data()


