Class: Gtk::CellRenderer

Inherits:
Widget show all
Defined in:
lib/gtk/cell_renderer.rb

Defined Under Namespace

Classes: CairoRectangleInt, GObjectClass, GtkCellRendererClass

Constant Summary collapse

GetProperty =
FFI::Function.new(:void,[:pointer, :uint, :pointer, :pointer]) do |_object,property_id,_value,_pspec|
  raise "get_property"
end
SetProperty =
FFI::Function.new(:void,[:pointer, :uint, :pointer, :pointer]) do |_object,property_id,_value,_pspec|
  raise "set_property"
end
InstanceInit =
FFI::Function.new(:void,[:pointer]) do |_klass|
  Gtk::CellRenderer.new(FFI::Pointer.new(_klass)).set_padding 2,2
end
Render =
FFI::Function.new(:void,[:pointer, :pointer, :pointer, :pointer, :pointer, :int]) do |_cell,_cr,_widget,_background_area,_cell_area,flags|
  Cairo::Context.new(FFI::Pointer.new(_cr)) do |cr|
    instances[_cell.address].render(
      cr,
      Gtk::Widget.new(FFI::Pointer.new(_widget)),
      CairoRectangleInt.new(FFI::Pointer.new(_background_area)),
      CairoRectangleInt.new(FFI::Pointer.new(_cell_area)),
      flags
    )
  end
end
GetSize =
FFI::Function.new(:void,[:pointer, :pointer, :pointer, :pointer, :pointer, :pointer, :pointer]) do |_cell,_widget,_cell_area,_x_offset,_y_offset,_width,_height|
  x_offset,y_offset,width,height = instances[_cell.address].get_size(
    Gtk::Widget.new(FFI::Pointer.new(_widget)),
    _cell_area.null? ? nil : CairoRectangleInt.new(FFI::Pointer.new(_cell_area))
  )
  _x_offset.write_int(x_offset) if x_offset
  _y_offset.write_int(x_offset) if y_offset
  _width.write_int(width) unless _width.null?
  _height.write_int(height) unless _height.null?
end

Instance Attribute Summary

Attributes inherited from GObject

#native, #type

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Widget

#get_style_context

Methods inherited from GObject

#method_missing, #signal_connect, type_register, #unref

Constructor Details

#initialize(pointer) ⇒ CellRenderer

Returns a new instance of CellRenderer.



133
134
135
136
137
# File 'lib/gtk/cell_renderer.rb', line 133

def initialize pointer
  raise "hell" unless pointer.is_a?(FFI::Pointer)
  @native = pointer
  instances[native.address] = self
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Gtk::GObject

Class Method Details

.inherited(sub) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
# File 'lib/gtk/cell_renderer.rb', line 72

def self.inherited sub
  sub.const_set(:ClassInit,FFI::Function.new(:void,[:pointer]) do |_klass|
    cell_class = GtkCellRendererClass.new(_klass)
    object_class = GObjectClass.new(_klass)
    cell_class[:render] = Render
    cell_class[:get_size] = GetSize
    object_class[:set_property] = SetProperty
    object_class[:get_property] = GetProperty
    sub.init(cell_class,object_class)
  end)
end

.instancesObject



126
127
128
# File 'lib/gtk/cell_renderer.rb', line 126

def self.instances
  @@instances ||= {}
end

.typeObject

def initialize

@native = Lib.gtk_cell_renderer_new()

end



159
160
161
# File 'lib/gtk/cell_renderer.rb', line 159

def self.type
  @type ||= Lib.gtk_cell_renderer_text_get_type()
end

.type_infoObject



88
89
90
91
92
93
94
95
96
97
# File 'lib/gtk/cell_renderer.rb', line 88

def self.type_info
  @type_info ||= begin
    type_info = Gtk::Lib::GTypeInfo.new
    type_info[:class_size] = 264
    type_info[:class_init] = self.const_get(:ClassInit)
    type_info[:instance_init] = InstanceInit
    type_info[:instance_size] = 40
    type_info
  end
end

Instance Method Details

#get_alignmentObject



150
151
152
153
154
155
# File 'lib/gtk/cell_renderer.rb', line 150

def get_alignment
  xpad = FFI::MemoryPointer.new(:int,1)
  ypad = FFI::MemoryPointer.new(:int,1)
  Lib.gtk_cell_renderer_get_alignment(native,xpad,ypad)
  [xpad.read_int,ypad.read_int]
end

#get_paddingObject



141
142
143
144
145
146
# File 'lib/gtk/cell_renderer.rb', line 141

def get_padding
  xpad = FFI::MemoryPointer.new(:int,1)
  ypad = FFI::MemoryPointer.new(:int,1)
  Lib.gtk_cell_renderer_get_padding(native,xpad,ypad)
  [xpad.read_int,ypad.read_int]
end

#instancesObject



129
130
131
# File 'lib/gtk/cell_renderer.rb', line 129

def instances
  self.class.instances
end

#set_padding(xpad, ypad) ⇒ Object



147
148
149
# File 'lib/gtk/cell_renderer.rb', line 147

def set_padding xpad,ypad
  Lib.gtk_cell_renderer_set_padding(native,xpad,ypad)
end