void Init_cairo_device (void) { #if CAIRO_CHECK_VERSION(1, 10, 0) rb_cCairo_Device = rb_define_class_under (rb_mCairo, "Device", rb_cObject); rb_define_alloc_func (rb_cCairo_Device, cr_device_allocate); rb_cairo__initialize_gc_guard_holder_class (rb_cCairo_Device); rb_set_end_proc(cr_finish_all_guarded_devices_at_end, Qnil); rb_define_method (rb_cCairo_Device, "destroy", cr_device_destroy, 0); rb_define_method (rb_cCairo_Device, "finish", cr_device_finish, 0); rb_define_method (rb_cCairo_Device, "flush", cr_device_flush, 0); rb_define_method (rb_cCairo_Device, "acquire", cr_device_acquire, 0); rb_define_method (rb_cCairo_Device, "release", cr_device_release, 0); RB_CAIRO_DEF_SETTERS (rb_cCairo_Device); # ifdef CAIRO_HAS_SCRIPT_SURFACE rb_cCairo_ScriptDevice = rb_define_class_under (rb_mCairo, "ScriptDevice", rb_cCairo_Device); rb_define_method (rb_cCairo_ScriptDevice, "initialize", cr_script_device_initialize, 1); rb_define_method (rb_cCairo_ScriptDevice, "write_comment", cr_script_device_write_comment, 1); rb_define_method (rb_cCairo_ScriptDevice, "set_mode", cr_script_device_set_mode, 1); rb_define_method (rb_cCairo_ScriptDevice, "mode", cr_script_device_get_mode, 0); rb_define_method (rb_cCairo_ScriptDevice, "reply", cr_script_device_reply, 1); RB_CAIRO_DEF_SETTERS (rb_cCairo_ScriptDevice); # endif # ifdef CAIRO_HAS_XML_SURFACE rb_cCairo_XMLDevice = rb_define_class_under (rb_mCairo, "XMLDevice", rb_cCairo_Device); rb_define_method (rb_cCairo_XMLDevice, "initialize", cr_xml_device_initialize, 1); rb_define_method (rb_cCairo_XMLDevice, "reply", cr_xml_device_reply, 1); RB_CAIRO_DEF_SETTERS (rb_cCairo_XMLDevice); # endif #endif }
void Init_cairo_font_options (void) { rb_cCairo_FontOptions = rb_define_class_under (rb_mCairo, "FontOptions", rb_cObject); rb_define_alloc_func (rb_cCairo_FontOptions, cr_options_allocate); rb_define_method (rb_cCairo_FontOptions, "initialize", cr_options_create, 0); rb_define_method (rb_cCairo_FontOptions, "dup", cr_options_copy, 0); rb_define_method (rb_cCairo_FontOptions, "merge!", cr_options_merge, 1); rb_define_alias (rb_cCairo_FontOptions, "update", "merge!"); rb_define_method (rb_cCairo_FontOptions, "==", cr_options_equal, 1); rb_define_method (rb_cCairo_FontOptions, "eql?", cr_options_equal, 1); rb_define_method (rb_cCairo_FontOptions, "hash", cr_options_hash, 0); rb_define_method (rb_cCairo_FontOptions, "set_antialias", cr_options_set_antialias, 1); rb_define_method (rb_cCairo_FontOptions, "antialias", cr_options_get_antialias, 0); rb_define_method (rb_cCairo_FontOptions, "set_subpixel_order", cr_options_set_subpixel_order, 1); rb_define_method (rb_cCairo_FontOptions, "subpixel_order", cr_options_get_subpixel_order, 0); rb_define_method (rb_cCairo_FontOptions, "set_hint_style", cr_options_set_hint_style, 1); rb_define_method (rb_cCairo_FontOptions, "hint_style", cr_options_get_hint_style, 0); rb_define_method (rb_cCairo_FontOptions, "set_hint_metrics", cr_options_set_hint_metrics, 1); rb_define_method (rb_cCairo_FontOptions, "hint_metrics", cr_options_get_hint_metrics, 0); RB_CAIRO_DEF_SETTERS (rb_cCairo_FontOptions); }
void Init_cairo_glyph (void) { rb_cCairo_Glyph = rb_define_class_under (rb_mCairo, "Glyph", rb_cObject); rb_define_alloc_func (rb_cCairo_Glyph, cr_glyph_allocate); rb_define_method (rb_cCairo_Glyph, "initialize", cr_glyph_initialize, 3); rb_define_method (rb_cCairo_Glyph, "index", cr_glyph_index, 0); rb_define_method (rb_cCairo_Glyph, "x", cr_glyph_x, 0); rb_define_method (rb_cCairo_Glyph, "y", cr_glyph_y, 0); rb_define_method (rb_cCairo_Glyph, "set_index", cr_glyph_set_index, 1); rb_define_method (rb_cCairo_Glyph, "set_x", cr_glyph_set_x, 1); rb_define_method (rb_cCairo_Glyph, "set_y", cr_glyph_set_y, 1); rb_define_method (rb_cCairo_Glyph, "to_s", cr_glyph_to_s, 0); RB_CAIRO_DEF_SETTERS (rb_cCairo_Glyph); }
void Init_cairo_pattern (void) { id_parse = rb_intern ("parse"); id_to_rgb = rb_intern ("to_rgb"); id_to_a = rb_intern ("to_a"); id_inspect = rb_intern ("inspect"); id_new = rb_intern ("new"); id_call = rb_intern ("call"); rb_cCairo_Pattern = rb_define_class_under (rb_mCairo, "Pattern", rb_cObject); rb_define_alloc_func (rb_cCairo_Pattern, cr_pattern_allocate); rb_define_singleton_method (rb_cCairo_Pattern, "solid_supported?", cr_pattern_solid_supported_p, 0); rb_define_singleton_method (rb_cCairo_Pattern, "surface_supported?", cr_pattern_surface_supported_p, 0); rb_define_singleton_method (rb_cCairo_Pattern, "gradient_supported?", cr_pattern_gradient_supported_p, 0); rb_define_singleton_method (rb_cCairo_Pattern, "linear_supported?", cr_pattern_linear_supported_p, 0); rb_define_singleton_method (rb_cCairo_Pattern, "radial_supported?", cr_pattern_radial_supported_p, 0); rb_define_singleton_method (rb_cCairo_Pattern, "mesh_supported?", cr_pattern_mesh_supported_p, 0); rb_define_singleton_method (rb_cCairo_Pattern, "raster_source_supported?", cr_pattern_raster_source_supported_p, 0); rb_define_method (rb_cCairo_Pattern, "initialize", cr_pattern_initialize, -1); rb_define_method (rb_cCairo_Pattern, "set_matrix", cr_pattern_set_matrix, 1); rb_define_method (rb_cCairo_Pattern, "matrix", cr_pattern_get_matrix, 0); rb_define_method (rb_cCairo_Pattern, "set_extend", cr_pattern_set_extend, 1); rb_define_alias (rb_cCairo_Pattern, "__extend__", "extend"); rb_define_method (rb_cCairo_Pattern, "extend", cr_pattern_get_extend, 0); rb_define_method (rb_cCairo_Pattern, "set_filter", cr_pattern_set_filter, 1); rb_define_method (rb_cCairo_Pattern, "filter", cr_pattern_get_filter, 0); RB_CAIRO_DEF_SETTERS (rb_cCairo_Pattern); rb_cCairo_SolidPattern = rb_define_class_under (rb_mCairo, "SolidPattern", rb_cCairo_Pattern); rb_define_method (rb_cCairo_SolidPattern, "initialize", cr_solid_pattern_initialize, -1); #if CAIRO_CHECK_VERSION(1, 3, 0) rb_define_method (rb_cCairo_SolidPattern, "rgba", cr_solid_pattern_get_rgba, 0); rb_define_method (rb_cCairo_SolidPattern, "color", cr_solid_pattern_get_color, 0); #endif RB_CAIRO_DEF_SETTERS (rb_cCairo_SolidPattern); rb_cCairo_SurfacePattern = rb_define_class_under (rb_mCairo, "SurfacePattern", rb_cCairo_Pattern); rb_define_method (rb_cCairo_SurfacePattern, "initialize", cr_surface_pattern_initialize, 1); #if CAIRO_CHECK_VERSION(1, 3, 0) rb_define_method (rb_cCairo_SurfacePattern, "surface", cr_surface_pattern_get_surface, 0); #endif RB_CAIRO_DEF_SETTERS (rb_cCairo_SurfacePattern); rb_cCairo_GradientPattern = rb_define_class_under (rb_mCairo, "GradientPattern", rb_cCairo_Pattern); rb_define_method (rb_cCairo_GradientPattern, "add_color_stop", cr_gradient_pattern_add_color_stop_generic, -1); rb_define_alias (rb_cCairo_GradientPattern, "add_color_stop_rgb", "add_color_stop"); rb_define_alias (rb_cCairo_GradientPattern, "add_color_stop_rgba", "add_color_stop"); #if CAIRO_CHECK_VERSION(1, 3, 0) rb_define_method (rb_cCairo_GradientPattern, "get_color_stop_rgba", cr_gradient_pattern_get_color_stop_rgba, 1); rb_define_method (rb_cCairo_GradientPattern, "get_color_stop_color", cr_gradient_pattern_get_color_stop_color, 1); rb_define_method (rb_cCairo_GradientPattern, "color_stop_count", cr_gradient_pattern_get_color_stop_count, 0); #endif RB_CAIRO_DEF_SETTERS (rb_cCairo_GradientPattern); rb_cCairo_LinearPattern = rb_define_class_under (rb_mCairo, "LinearPattern", rb_cCairo_GradientPattern); rb_define_method (rb_cCairo_LinearPattern, "initialize", cr_linear_pattern_initialize, 4); #if CAIRO_CHECK_VERSION(1, 3, 0) rb_define_method (rb_cCairo_LinearPattern, "points", cr_linear_pattern_get_linear_points, 0); #endif RB_CAIRO_DEF_SETTERS (rb_cCairo_LinearPattern); rb_cCairo_RadialPattern = rb_define_class_under (rb_mCairo, "RadialPattern", rb_cCairo_GradientPattern); rb_define_method (rb_cCairo_RadialPattern, "initialize", cr_radial_pattern_initialize, 6); #if CAIRO_CHECK_VERSION(1, 3, 0) rb_define_method (rb_cCairo_RadialPattern, "circles", cr_radial_pattern_get_radial_circles, 0); #endif RB_CAIRO_DEF_SETTERS (rb_cCairo_RadialPattern); rb_cCairo_MeshPattern = rb_define_class_under (rb_mCairo, "MeshPattern", rb_cCairo_Pattern); #ifdef RB_CAIRO_HAS_MESH_PATTERN rb_define_method (rb_cCairo_MeshPattern, "initialize", cr_mesh_pattern_initialize, 0); rb_define_method (rb_cCairo_MeshPattern, "begin_patch", cr_mesh_pattern_begin_patch, 0); rb_define_method (rb_cCairo_MeshPattern, "end_patch", cr_mesh_pattern_end_patch, 0); rb_define_method (rb_cCairo_MeshPattern, "curve_to", cr_mesh_pattern_curve_to, 6); rb_define_method (rb_cCairo_MeshPattern, "line_to", cr_mesh_pattern_line_to, 2); rb_define_method (rb_cCairo_MeshPattern, "move_to", cr_mesh_pattern_move_to, 2); rb_define_method (rb_cCairo_MeshPattern, "set_control_point", cr_mesh_pattern_set_control_point, 3); rb_define_method (rb_cCairo_MeshPattern, "set_corner_color", cr_mesh_pattern_set_corner_color_generic, -1); rb_define_alias (rb_cCairo_MeshPattern, "set_corner_color_rgb", "set_corner_color"); rb_define_alias (rb_cCairo_MeshPattern, "set_corner_color_rgba", "set_corner_color"); rb_define_method (rb_cCairo_MeshPattern, "patch_count", cr_mesh_pattern_get_patch_count, 0); rb_define_method (rb_cCairo_MeshPattern, "get_path", cr_mesh_pattern_get_path, 1); rb_define_method (rb_cCairo_MeshPattern, "get_corner_color", cr_mesh_pattern_get_corner_color, 2); rb_define_method (rb_cCairo_MeshPattern, "get_control_point", cr_mesh_pattern_get_control_point, 2); #endif RB_CAIRO_DEF_SETTERS (rb_cCairo_MeshPattern); rb_cCairo_RasterSourcePattern = rb_define_class_under (rb_mCairo, "RasterSourcePattern", rb_cCairo_Pattern); #ifdef RB_CAIRO_HAS_RASTER_SOURCE_PATTERN rb_define_method (rb_cCairo_RasterSourcePattern, "initialize", cr_raster_source_pattern_initialize, -1); rb_define_method (rb_cCairo_RasterSourcePattern, "acquire", cr_raster_source_pattern_acquire, 0); rb_define_method (rb_cCairo_RasterSourcePattern, "release", cr_raster_source_pattern_release, 0); rb_define_method (rb_cCairo_RasterSourcePattern, "snapshot", cr_raster_source_pattern_snapshot, 0); rb_define_method (rb_cCairo_RasterSourcePattern, "copy", cr_raster_source_pattern_copy, 0); rb_define_method (rb_cCairo_RasterSourcePattern, "finish", cr_raster_source_pattern_finish, 0); #endif RB_CAIRO_DEF_SETTERS (rb_cCairo_RasterSourcePattern); }
void Init_cairo_context (void) { cr_id_surface = rb_intern ("surface"); cr_id_source = rb_intern ("source"); cr_id_plus = rb_intern ("+"); cr_id_minus = rb_intern ("-"); cr_id_multi = rb_intern ("*"); cr_id_div = rb_intern ("/"); #if CAIRO_CHECK_VERSION(1, 3, 0) rb_cCairo_Rectangle = rb_define_class_under (rb_mCairo, "Rectangle", rb_cObject); at_x = rb_intern ("@x"); at_y = rb_intern ("@y"); at_width = rb_intern ("@width"); at_height = rb_intern ("@height"); rb_define_attr (rb_cCairo_Rectangle, "x", CR_TRUE, CR_TRUE); rb_define_attr (rb_cCairo_Rectangle, "y", CR_TRUE, CR_TRUE); rb_define_attr (rb_cCairo_Rectangle, "width", CR_TRUE, CR_TRUE); rb_define_attr (rb_cCairo_Rectangle, "height", CR_TRUE, CR_TRUE); rb_define_method (rb_cCairo_Rectangle, "initialize", cr_rectangle_initialize, 4); #endif rb_cCairo_Context = rb_define_class_under (rb_mCairo, "Context", rb_cObject); rb_define_alloc_func (rb_cCairo_Context, cr_allocate); rb_cairo__initialize_gc_guard_holder_class (rb_cCairo_Context); rb_set_end_proc(cr_destroy_all_guarded_contexts_at_end, Qnil); /* Functions for manipulating state objects */ rb_define_method (rb_cCairo_Context, "initialize", cr_initialize, 1); rb_define_method (rb_cCairo_Context, "destroy", cr_destroy, 0); rb_define_method (rb_cCairo_Context, "save", cr_save, 0); rb_define_method (rb_cCairo_Context, "restore", cr_restore, 0); rb_define_method (rb_cCairo_Context, "push_group", cr_push_group, -1); rb_define_method (rb_cCairo_Context, "pop_group", cr_pop_group_generic, -1); rb_define_method (rb_cCairo_Context, "pop_group_to_source", cr_pop_group_to_source, 0); /* Modify state */ rb_define_method (rb_cCairo_Context, "set_operator", cr_set_operator, 1); rb_define_method (rb_cCairo_Context, "set_source", cr_set_source_generic, -1); rb_define_method (rb_cCairo_Context, "set_source_rgb", cr_set_source_rgb, -1); rb_define_method (rb_cCairo_Context, "set_source_rgba", cr_set_source_rgba, -1); rb_define_method (rb_cCairo_Context, "set_tolerance", cr_set_tolerance, 1); rb_define_method (rb_cCairo_Context, "set_antialias", cr_set_antialias, 1); rb_define_method (rb_cCairo_Context, "set_fill_rule", cr_set_fill_rule, 1); rb_define_method (rb_cCairo_Context, "set_line_width", cr_set_line_width, 1); rb_define_method (rb_cCairo_Context, "set_line_cap", cr_set_line_cap, 1); rb_define_method (rb_cCairo_Context, "set_line_join", cr_set_line_join, 1); rb_define_method (rb_cCairo_Context, "set_dash", cr_set_dash, -1); rb_define_method (rb_cCairo_Context, "set_miter_limit", cr_set_miter_limit, 1); rb_define_method (rb_cCairo_Context, "translate", cr_translate, 2); rb_define_method (rb_cCairo_Context, "scale", cr_scale, 2); rb_define_method (rb_cCairo_Context, "rotate", cr_rotate, 1); rb_define_method (rb_cCairo_Context, "transform", cr_transform, 1); rb_define_method (rb_cCairo_Context, "set_matrix", cr_set_matrix, 1); rb_define_method (rb_cCairo_Context, "identity_matrix", cr_identity_matrix, 0); rb_define_method (rb_cCairo_Context, "user_to_device", cr_user_to_device, 2); rb_define_method (rb_cCairo_Context, "user_to_device_distance", cr_user_to_device_distance, 2); rb_define_method (rb_cCairo_Context, "device_to_user", cr_device_to_user, 2); rb_define_method (rb_cCairo_Context, "device_to_user_distance", cr_device_to_user_distance, 2); /* Path creation functions */ rb_define_method (rb_cCairo_Context, "new_path", cr_new_path, 0); rb_define_method (rb_cCairo_Context, "move_to", cr_move_to, 2); rb_define_method (rb_cCairo_Context, "new_sub_path", cr_new_sub_path, 0); rb_define_method (rb_cCairo_Context, "line_to", cr_line_to, 2); rb_define_method (rb_cCairo_Context, "curve_to", cr_curve_to_generic, -1); rb_define_method (rb_cCairo_Context, "arc", cr_arc, 5); rb_define_method (rb_cCairo_Context, "arc_negative", cr_arc_negative, 5); rb_define_method (rb_cCairo_Context, "rel_move_to", cr_rel_move_to, 2); rb_define_method (rb_cCairo_Context, "rel_line_to", cr_rel_line_to, 2); rb_define_method (rb_cCairo_Context, "rel_curve_to", cr_rel_curve_to_generic, -1); rb_define_method (rb_cCairo_Context, "rectangle", cr_rectangle, 4); rb_define_method (rb_cCairo_Context, "close_path", cr_close_path, 0); #if CAIRO_CHECK_VERSION(1, 5, 8) rb_define_method (rb_cCairo_Context, "path_extents", cr_path_extents, 0); #endif /* Painting functions */ rb_define_method (rb_cCairo_Context, "paint", cr_paint_generic, -1); rb_define_method (rb_cCairo_Context, "mask", cr_mask_generic, -1); rb_define_method (rb_cCairo_Context, "stroke", cr_stroke, -1); rb_define_method (rb_cCairo_Context, "fill", cr_fill, -1); rb_define_method (rb_cCairo_Context, "copy_page", cr_copy_page, 0); rb_define_method (rb_cCairo_Context, "show_page", cr_show_page, 0); /* Insideness testing */ rb_define_method (rb_cCairo_Context, "in_stroke?", cr_in_stroke, 2); rb_define_method (rb_cCairo_Context, "in_fill?", cr_in_fill, 2); /* Rectangular extents */ rb_define_method (rb_cCairo_Context, "stroke_extents", cr_stroke_extents, 0); rb_define_method (rb_cCairo_Context, "fill_extents", cr_fill_extents, 0); /* Clipping */ rb_define_method (rb_cCairo_Context, "reset_clip", cr_reset_clip, 0); rb_define_method (rb_cCairo_Context, "clip", cr_clip, -1); #if CAIRO_CHECK_VERSION(1, 3, 0) rb_define_method (rb_cCairo_Context, "clip_extents", cr_clip_extents, 0); rb_define_method (rb_cCairo_Context, "clip_rectangle_list", cr_clip_rectangle_list, 0); #endif /* Font/Text functions */ rb_define_method (rb_cCairo_Context, "select_font_face", cr_select_font_face, -1); rb_define_method (rb_cCairo_Context, "set_font_size", cr_set_font_size, 1); rb_define_method (rb_cCairo_Context, "set_font_matrix", cr_set_font_matrix, 1); rb_define_method (rb_cCairo_Context, "font_matrix", cr_get_font_matrix, 0); rb_define_method (rb_cCairo_Context, "set_font_options", cr_set_font_options, 1); rb_define_method (rb_cCairo_Context, "font_options", cr_get_font_options, 0); rb_define_method (rb_cCairo_Context, "set_font_face", cr_set_font_face, 1); rb_define_method (rb_cCairo_Context, "font_face", cr_get_font_face, 0); rb_define_method (rb_cCairo_Context, "set_scaled_font", cr_set_scaled_font, 1); #if CAIRO_CHECK_VERSION(1, 3, 16) rb_define_method (rb_cCairo_Context, "scaled_font", cr_get_scaled_font, 0); #endif rb_define_method (rb_cCairo_Context, "show_text", cr_show_text, 1); rb_define_method (rb_cCairo_Context, "show_glyphs", cr_show_glyphs, 1); #if CAIRO_CHECK_VERSION(1, 8, 0) rb_define_method (rb_cCairo_Context, "show_text_glyphs", cr_show_text_glyphs, 4); #endif rb_define_method (rb_cCairo_Context, "text_path", cr_text_path, 1); rb_define_method (rb_cCairo_Context, "glyph_path", cr_glyph_path, 1); rb_define_method (rb_cCairo_Context, "text_extents", cr_text_extents, 1); rb_define_method (rb_cCairo_Context, "glyph_extents", cr_glyph_extents, 1); rb_define_method (rb_cCairo_Context, "font_extents", cr_font_extents, 0); /* Query functions */ rb_define_method (rb_cCairo_Context, "operator", cr_get_operator, 0); rb_define_method (rb_cCairo_Context, "source", cr_get_source, 0); rb_define_method (rb_cCairo_Context, "tolerance", cr_get_tolerance, 0); rb_define_method (rb_cCairo_Context, "antialias", cr_get_antialias, 0); #if CAIRO_CHECK_VERSION(1, 5, 10) rb_define_method (rb_cCairo_Context, "have_current_point?", cr_has_current_point, 0); rb_define_alias (rb_cCairo_Context, "has_current_point?", "have_current_point?"); #endif rb_define_method (rb_cCairo_Context, "current_point", cr_get_current_point, 0); rb_define_method (rb_cCairo_Context, "fill_rule", cr_get_fill_rule, 0); rb_define_method (rb_cCairo_Context, "line_width", cr_get_line_width, 0); rb_define_method (rb_cCairo_Context, "line_cap", cr_get_line_cap, 0); rb_define_method (rb_cCairo_Context, "line_join", cr_get_line_join, 0); rb_define_method (rb_cCairo_Context, "miter_limit", cr_get_miter_limit, 0); #if CAIRO_CHECK_VERSION(1, 3, 0) rb_define_method (rb_cCairo_Context, "dash_count", cr_get_dash_count, 0); rb_define_method (rb_cCairo_Context, "dash", cr_get_dash, 0); #endif rb_define_method (rb_cCairo_Context, "matrix", cr_get_matrix, 0); rb_define_method (rb_cCairo_Context, "target", cr_get_target, 0); rb_define_method (rb_cCairo_Context, "group_target", cr_get_group_target, 0); /* Paths */ rb_define_method (rb_cCairo_Context, "copy_path", cr_copy_path, 0); rb_define_method (rb_cCairo_Context, "copy_path_flat", cr_copy_path_flat, 0); rb_define_method (rb_cCairo_Context, "append_path", cr_copy_append_path, 1); RB_CAIRO_DEF_SETTERS (rb_cCairo_Context); }
void Init_cairo_surface (void) { cr_id_target = rb_intern ("target"); cr_id_read = rb_intern ("read"); cr_id_write = rb_intern ("write"); cr_id_inspect = rb_intern ("inspect"); cr_id_parse = rb_intern ("parse"); cr_id_size = rb_intern ("size"); cr_id_set_unit = rb_intern ("unit="); rb_cCairo_Surface = rb_define_class_under (rb_mCairo, "Surface", rb_cObject); rb_define_alloc_func (rb_cCairo_Surface, cr_surface_allocate); rb_cairo__initialize_gc_guard_holder_class (rb_cCairo_Surface); rb_set_end_proc(cr_finish_all_guarded_surfaces_at_end, Qnil); rb_define_method (rb_cCairo_Surface, "create_similar", cr_surface_create_similar, 3); rb_define_method (rb_cCairo_Surface, "destroy", cr_surface_destroy, 0); rb_define_method (rb_cCairo_Surface, "finish", cr_surface_finish, 0); rb_define_method (rb_cCairo_Surface, "content", cr_surface_get_content, 0); rb_define_method (rb_cCairo_Surface, "font_options", cr_surface_get_font_options, 0); rb_define_method (rb_cCairo_Surface, "flush", cr_surface_flush, 0); rb_define_method (rb_cCairo_Surface, "mark_dirty", cr_surface_mark_dirty, -1); rb_define_method (rb_cCairo_Surface, "set_device_offset", cr_surface_set_device_offset, 2); rb_define_method (rb_cCairo_Surface, "device_offset", cr_surface_get_device_offset, 0); rb_define_method (rb_cCairo_Surface, "set_fallback_resolution", cr_surface_set_fallback_resolution, 2); #if CAIRO_CHECK_VERSION(1, 7, 2) rb_define_method (rb_cCairo_Surface, "fallback_resolution", cr_surface_get_fallback_resolution, 0); #endif #if CAIRO_CHECK_VERSION(1, 5, 2) rb_define_method (rb_cCairo_Surface, "copy_page", cr_surface_copy_page, 2); rb_define_method (rb_cCairo_Surface, "show_page", cr_surface_show_page, 2); #endif #ifdef CAIRO_HAS_PNG_FUNCTIONS rb_define_method (rb_cCairo_Surface, "write_to_png", cr_surface_write_to_png_generic, 1); #endif RB_CAIRO_DEF_SETTERS (rb_cCairo_Surface); /* Image-surface */ rb_cCairo_ImageSurface = rb_define_class_under (rb_mCairo, "ImageSurface", rb_cCairo_Surface); #ifdef CAIRO_HAS_PNG_FUNCTIONS rb_define_singleton_method (rb_cCairo_ImageSurface, "from_png", cr_image_surface_create_from_png_generic, 1); #endif rb_define_method (rb_cCairo_ImageSurface, "initialize", cr_image_surface_initialize, -1); rb_define_method (rb_cCairo_ImageSurface, "data", cr_image_surface_get_data, 0); rb_define_method (rb_cCairo_ImageSurface, "format", cr_image_surface_get_format, 0); rb_define_method (rb_cCairo_ImageSurface, "width", cr_image_surface_get_width, 0); rb_define_method (rb_cCairo_ImageSurface, "height", cr_image_surface_get_height, 0); rb_define_method (rb_cCairo_ImageSurface, "stride", cr_image_surface_get_stride, 0); #define INIT_SURFACE(type, name) \ rb_cCairo_ ## name ## Surface = \ rb_define_class_under (rb_mCairo, # name "Surface", \ rb_cCairo_Surface); \ \ rb_define_method (rb_cCairo_ ## name ## Surface, "initialize", \ cr_ ## type ## _surface_initialize, -1); #ifdef CAIRO_HAS_PS_SURFACE /* PS-surface */ INIT_SURFACE(ps, PS) rb_define_method (rb_cCairo_PSSurface, "set_size", cr_ps_surface_set_size, -1); rb_define_method (rb_cCairo_PSSurface, "dsc_comment", cr_ps_surface_dsc_comment, 1); rb_define_method (rb_cCairo_PSSurface, "dsc_begin_setup", cr_ps_surface_dsc_begin_setup, 0); rb_define_method (rb_cCairo_PSSurface, "dsc_begin_page_setup", cr_ps_surface_dsc_begin_page_setup, 0); # if CAIRO_CHECK_VERSION(1, 5, 2) rb_define_method (rb_cCairo_PSSurface, "restrict_to_level", cr_ps_surface_restrict_to_level, 1); rb_define_method (rb_cCairo_PSSurface, "eps?", cr_ps_surface_get_eps, 0); rb_define_method (rb_cCairo_PSSurface, "set_eps", cr_ps_surface_set_eps, 1); # endif RB_CAIRO_DEF_SETTERS (rb_cCairo_PSSurface); #endif #ifdef CAIRO_HAS_PDF_SURFACE /* PDF-surface */ INIT_SURFACE(pdf, PDF) rb_define_method (rb_cCairo_PDFSurface, "set_size", cr_pdf_surface_set_size, -1); RB_CAIRO_DEF_SETTERS (rb_cCairo_PDFSurface); #endif #ifdef CAIRO_HAS_SVG_SURFACE /* SVG-surface */ INIT_SURFACE(svg, SVG) rb_define_method (rb_cCairo_SVGSurface, "restrict_to_version", cr_svg_surface_restrict_to_version, 1); RB_CAIRO_DEF_SETTERS (rb_cCairo_SVGSurface); #endif #ifdef CAIRO_HAS_WIN32_SURFACE /* Win32-surface */ rb_cCairo_Win32Surface = rb_define_class_under (rb_mCairo, "Win32Surface", rb_cCairo_Surface); rb_define_method (rb_cCairo_Win32Surface, "initialize", cr_win32_surface_initialize, -1); rb_define_method (rb_cCairo_Win32Surface, "hdc", cr_win32_surface_get_hdc, 0); # if CAIRO_CHECK_VERSION(1, 4, 0) rb_define_method (rb_cCairo_Win32Surface, "image", cr_win32_surface_get_image, 0); # endif # if CAIRO_CHECK_VERSION(1, 5, 2) rb_cCairo_Win32PrintingSurface = rb_define_class_under (rb_mCairo, "Win32PrintingSurface", rb_cCairo_Surface); rb_define_method (rb_cCairo_Win32PrintingSurface, "initialize", cr_win32_printing_surface_initialize, -1); rb_define_method (rb_cCairo_Win32PrintingSurface, "hdc", cr_win32_surface_get_hdc, 0); # endif #endif #if defined(CAIRO_HAS_QUARTZ_SURFACE) && defined(HAVE_RUBY_COCOA) /* Quartz-surface */ rb_cCairo_QuartzSurface = rb_define_class_under (rb_mCairo, "QuartzSurface", rb_cCairo_Surface); rb_define_method (rb_cCairo_QuartzSurface, "initialize", cr_quartz_surface_initialize, -1); rb_define_method (rb_cCairo_QuartzSurface, "cg_context", cr_quartz_surface_get_cg_context, 0); # if CAIRO_CHECK_VERSION(1, 5, 12) rb_cCairo_QuartzImageSurface = rb_define_class_under (rb_mCairo, "QuartzImageSurface", rb_cCairo_Surface); rb_define_method (rb_cCairo_QuartzImageSurface, "initialize", cr_quartz_image_surface_initialize, 1); rb_define_method (rb_cCairo_QuartzImageSurface, "image", cr_quartz_image_surface_get_image, 0); # endif #endif }
void Init_cairo_font (void) { #if CAIRO_CHECK_VERSION(1, 7, 6) cr_id_call = rb_intern ("call"); cr_id_new = rb_intern ("new"); cr_id_init = rb_intern ("init"); cr_id_render_glyph = rb_intern ("render_glyph"); cr_id_text_to_glyphs = rb_intern ("text_to_glyphs"); cr_id_unicode_to_glyph = rb_intern ("unicode_to_glyph"); cr_id_at_glyphs = rb_intern ("@glyphs"); cr_id_at_clusters = rb_intern ("@clusters"); cr_id_at_cluster_flags = rb_intern ("@cluster_flags"); cr_id_at_need_glyphs = rb_intern ("@need_glyphs"); cr_id_at_need_clusters = rb_intern ("@need_clusters"); cr_id_at_need_cluster_flags = rb_intern ("@need_cluster_flags"); #endif rb_cCairo_FontFace = rb_define_class_under (rb_mCairo, "FontFace", rb_cObject); rb_define_alloc_func (rb_cCairo_FontFace, cr_font_face_allocate); rb_define_singleton_method (rb_cCairo_FontFace, "quartz_supported?", cr_font_face_quartz_supported_p, 0); rb_define_singleton_method (rb_cCairo_FontFace, "freetype_supported?", cr_font_face_freetype_supported_p, 0); #ifdef CAIRO_HAS_FT_FONT rb_cCairo_FreeTypeFontFace = rb_define_class_under (rb_mCairo, "FreeTypeFontFace", rb_cCairo_FontFace); { FT_Error error; error = FT_Init_FreeType (&cr_freetype_library); cr_freetype_error_check (error, "failed to initialize FreeType", Qnil); rb_define_finalizer (rb_cCairo_FreeTypeFontFace, rb_proc_new (cr_freetype_done_library, Qnil)); } rb_define_method (rb_cCairo_FreeTypeFontFace, "initialize", cr_freetype_font_face_initialize, 1); #endif #if CAIRO_CHECK_VERSION(1, 7, 6) rb_cCairo_ToyFontFace = rb_define_class_under (rb_mCairo, "ToyFontFace", rb_cCairo_FontFace); rb_define_method (rb_cCairo_ToyFontFace, "initialize", cr_toy_font_face_initialize, -1); rb_define_method (rb_cCairo_ToyFontFace, "family", cr_toy_font_face_get_family, 0); rb_define_method (rb_cCairo_ToyFontFace, "slant", cr_toy_font_face_get_slant, 0); rb_define_method (rb_cCairo_ToyFontFace, "weight", cr_toy_font_face_get_weight, 0); rb_cCairo_UserFontFace = rb_define_class_under (rb_mCairo, "UserFontFace", rb_cCairo_FontFace); rb_define_method (rb_cCairo_UserFontFace, "initialize", cr_user_font_face_initialize, 0); rb_define_method (rb_cCairo_UserFontFace, "on_init", cr_user_font_face_on_init, 0); rb_define_method (rb_cCairo_UserFontFace, "on_render_glyph", cr_user_font_face_on_render_glyph, 0); rb_define_method (rb_cCairo_UserFontFace, "on_text_to_glyphs", cr_user_font_face_on_text_to_glyphs, 0); rb_define_method (rb_cCairo_UserFontFace, "on_unicode_to_glyph", cr_user_font_face_on_unicode_to_glyph, 0); rb_cCairo_UserFontFace_TextToGlyphsData = rb_define_class_under (rb_cCairo_UserFontFace, "TextToGlyphsData", rb_cObject); rb_attr (rb_cCairo_UserFontFace_TextToGlyphsData, rb_intern ("glyphs"), CR_TRUE, CR_TRUE, CR_TRUE); rb_attr (rb_cCairo_UserFontFace_TextToGlyphsData, rb_intern ("clusters"), CR_TRUE, CR_TRUE, CR_TRUE); rb_define_method (rb_cCairo_UserFontFace_TextToGlyphsData, "initialize", cr_text_to_glyphs_data_initialize, 3); rb_define_method (rb_cCairo_UserFontFace_TextToGlyphsData, "cluster_flags", cr_text_to_glyphs_data_get_cluster_flags, 0); rb_define_method (rb_cCairo_UserFontFace_TextToGlyphsData, "cluster_flags=", cr_text_to_glyphs_data_set_cluster_flags, 1); rb_define_method (rb_cCairo_UserFontFace_TextToGlyphsData, "need_glyphs?", cr_text_to_glyphs_data_need_glyphs, 0); rb_define_method (rb_cCairo_UserFontFace_TextToGlyphsData, "need_clusters?", cr_text_to_glyphs_data_need_clusters, 0); rb_define_method (rb_cCairo_UserFontFace_TextToGlyphsData, "need_cluster_flags?", cr_text_to_glyphs_data_need_cluster_flags, 0); RB_CAIRO_DEF_SETTERS (rb_cCairo_UserFontFace_TextToGlyphsData); #endif }