## Patterns

The cairo C API allows for creating a number of different types of patterns. All of these different types of patterns map to cairo_pattern_t in C, but in an object oriented language, there should instead be a hierarchy of types. (The functions that should map to constructors or static methods for the various types are listed after the type, methods on that type are listed below. Note that cairo_pattern_create_rgb() and cairo_pattern_create_rgba() should not be overloaded with each other as a SolidPattern() constructor, but should appear as static methods instead. This is to maintain code clarity by making it clear how the arguments relate to color components.)

    cairo_pattern_t
          cairo_pattern_set_matrix()
          cairo_pattern_get_matrix()
       cairo_solid_pattern_t (cairo_pattern_create_rgb() and cairo_pattern_create_rgba())
       cairo_surface_pattern_t (cairo_pattern_create_for_surface())
             cairo_pattern_set_extend()
             cairo_pattern_get_extend()
             cairo_pattern_set_filter()
             cairo_pattern_get_filter()
       cairo_gradient_t
             cairo_pattern_add_color_stop_rgb()
             cairo_pattern_add_color_stop_rgba()
          cairo_linear_gradient_t (cairo_pattern_create_linear())
          cairo_radial_gradient_t (cairo_pattern_create_radial())
       cairo_mesh_t (cairo_pattern_create_mesh())
             cairo_mesh_pattern_begin_patch()
             cairo_mesh_pattern_end_patch()
             cairo_mesh_pattern_move_to()
             cairo_mesh_pattern_line_to()
             cairo_mesh_pattern_curve_to()
             cairo_mesh_pattern_set_control_point()
             cairo_mesh_pattern_set_corner_color_rgb()
             cairo_mesh_pattern_set_corner_color_rgba()
             cairo_mesh_pattern_get_patch_count()
             cairo_mesh_pattern_get_path()
             cairo_mesh_pattern_get_control_point()
             cairo_mesh_pattern_get_corner_color_rgba()