class Pango::CairoLoader

Private Instance Methods

load_function_info(info) click to toggle source
# File lib/pango/cairo-loader.rb, line 42
def load_function_info(info)
  case info.name
  when /\Acontext_get_(.+)\z/
    method_name = $1
    define_method(info, @context_class, method_name)
  when /\Acontext_set_(.+)\z/
    method_base_name = $1
    setter_method_name = "set_#{method_base_name}"
    if @context_class.method_defined?(setter_method_name)
      # ignore
      return
    end
    define_method(info, @context_class, setter_method_name)
    if info.n_args == 2
      equal_method_name = "#{method_base_name}="
      remove_existing_method(@context_class, equal_method_name)
      @context_class.__send__(:alias_method,
                              equal_method_name,
                              setter_method_name)
    end
  when /\Afont_map_/
    # ignore
  when /\Acreate_(.+)\z/
    define_method(info, Cairo::Context, "create_pango_#{$1}")
  when /\A(.+_path)\z/
    define_method(info, Cairo::Context, "pango_#{$1}")
  when /\Ashow_(.+)\z/
    define_method(info, Cairo::Context, "show_pango_#{$1}")
  when /\Aupdate_(.+)\z/
    define_method(info, Cairo::Context, "update_pango_#{$1}")
  else
    warn("Unsupported PangoCairo function: #{info.name}")
  end
end
post_load(repository, namespace) click to toggle source
# File lib/pango/cairo-loader.rb, line 24
def post_load(repository, namespace)
  font_map_class = @base_module.const_get("CairoFontMap")
  font_types = []
  font_types << :quartz if Cairo::FontFace.quartz_supported?
  font_types << :win32 if Cairo::Surface.quartz_supported?
  font_types << :ft if Cairo::FontFace.freetype_supported?
  font_types.each do |font_type|
    font_map = font_map_class.new_for_font_type(font_type)
    next if font_map.nil?
    @base_module.const_set(font_map.class.gtype.name.gsub(/\APango/, ""),
                           font_map.class)
  end
end
pre_load(repository, namespace) click to toggle source
# File lib/pango/cairo-loader.rb, line 20
def pre_load(repository, namespace)
  @context_class = @base_module.const_get(:Context)
end
rubyish_class_name(info) click to toggle source
# File lib/pango/cairo-loader.rb, line 38
def rubyish_class_name(info)
  "Cairo#{super}"
end