module Rabbit::Renderer::Kernel

Public Instance Methods

draw_background(slide) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 71
def draw_background(slide)
  draw_rectangle(true, 0, 0, width, height, @background)
end
draw_circle(filled, x, y, w, h, color=nil, params={}) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 75
def draw_circle(filled, x, y, w, h, color=nil, params={})
  draw_arc(filled, x, y, w, h, 0, 360, color, params)
end
draw_circle_by_radius(filled, x, y, r, color=nil, params={}) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 79
def draw_circle_by_radius(filled, x, y, r, color=nil, params={})
  draw_arc_by_radius(filled, x, y, r, 0, 360, color, params)
end
draw_cone(filled, x, y, z, base, height, slices, stacks, color=nil) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 202
def draw_cone(filled, x, y, z, base, height, slices, stacks, color=nil)
  not_support_method("draw_cone")
end
draw_cube(filled, x, y, z, size, color=nil) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 194
def draw_cube(filled, x, y, z, size, color=nil)
  not_support_method("draw_cube")
end
draw_dodecahedron(filled, x, y, z, color=nil) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 219
def draw_dodecahedron(filled, x, y, z, color=nil)
  not_support_method("draw_dodecahedron")
end
draw_flag(x, y, pole_height, params) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 83
def draw_flag(x, y, pole_height, params)
  if params["flag_type"] == "triangle"
    draw_triangle_flag(x, y, pole_height, params)
  else
    draw_rectangle_flag(x, y, pole_height, params)
  end
end
draw_flag_layout(layout, x, y, pole_width, flag_width, text_height, flag_height) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 177
def draw_flag_layout(layout, x, y, pole_width, flag_width,
                     text_height, flag_height)
  base_x = x + pole_width
  layout.width = flag_width * Pango::SCALE
  layout.alignment = Pango::Alignment::CENTER
  base_y = y
  if text_height < flag_height
    base_y += (flag_height - text_height) / 2
  end
  draw_layout(layout, base_x, base_y)
end
draw_icosahedron(filled, x, y, z, color=nil) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 223
def draw_icosahedron(filled, x, y, z, color=nil)
  not_support_method("draw_icosahedron")
end
draw_octahedron(filled, x, y, z, color=nil) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 215
def draw_octahedron(filled, x, y, z, color=nil)
  not_support_method("draw_octahedron")
end
draw_rectangle_flag(x, y, pole_height, params) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 138
def draw_rectangle_flag(x, y, pole_height, params)
  params = setup_flag_params(pole_height, 1.3, params)

  layout = params["layout"]
  text_width = params["text_width"]
  text_height = params["text_height"]
  pole_width = params["pole_width"]
  pole_color = params["pole_color"]
  flag_height = params["flag_height"]
  flag_width = params["flag_width"]
  flag_color = params["flag_color"]
  flag_frame_width = params["flag_frame_width"]
  flag_frame_color = params["flag_frame_color"]

  draw_rectangle(true, x, y, pole_width, pole_height, pole_color)

  base_x = x + pole_width
  draw_rectangle(true,
                 base_x,
                 y,
                 flag_width,
                 flag_height,
                 flag_frame_color)
  draw_rectangle(true,
                 base_x,
                 y + flag_frame_width,
                 flag_width - flag_frame_width,
                 flag_height - 2 * flag_frame_width,
                 flag_color)

  if layout
    args = [
      layout, x, y, pole_width, flag_width - 2 * flag_frame_width,
      text_height, flag_height,
    ]
    draw_flag_layout(*args)
  end
end
draw_slide(slide, simulation) { || ... } click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 61
def draw_slide(slide, simulation)
  unless simulation
    save_context
    draw_background(slide)
  end
  yield
ensure
  restore_context unless simulation
end
draw_sphere(filled, x, y, z, radius, slices, stacks, color=nil) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 198
def draw_sphere(filled, x, y, z, radius, slices, stacks, color=nil)
  not_support_method("draw_sphere")
end
draw_teapot(filled, x, y, z, scale, color=nil) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 227
def draw_teapot(filled, x, y, z, scale, color=nil)
  not_support_method("draw_teapot")
end
draw_tetrahedron(filled, x, y, z, color=nil) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 211
def draw_tetrahedron(filled, x, y, z, color=nil)
  not_support_method("draw_tetrahedron")
end
draw_torus(filled, x, y, z, inner_radius, outer_radius, n_sides, rings, color=nil) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 206
def draw_torus(filled, x, y, z, inner_radius, outer_radius,
               n_sides, rings, color=nil)
  not_support_method("draw_torus")
end
draw_triangle_flag(x, y, pole_height, params) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 91
def draw_triangle_flag(x, y, pole_height, params)
  params = setup_flag_params(pole_height, 1.5, params)

  layout = params["layout"]
  text_width = params["text_width"]
  text_height = params["text_height"]
  pole_width = params["pole_width"]
  pole_color = params["pole_color"]
  flag_height = params["flag_height"]
  flag_width = params["flag_width"]
  flag_color = params["flag_color"]
  flag_frame_width = params["flag_frame_width"]
  flag_frame_color = params["flag_frame_color"]

  draw_rectangle(true, x, y, pole_width, pole_height, pole_color)

  base_x = x + pole_width
  draw_polygon(true,
               [
                 [base_x, y],
                 [base_x + flag_width, y + flag_height / 2],
                 [base_x, y + flag_height],
               ],
               flag_frame_color)
  draw_polygon(true,
               [
                 [base_x, y + flag_frame_width],
                 [
                   base_x + flag_width - 2 * flag_frame_width,
                   y + flag_height / 2
                 ],
                 [
                   base_x,
                   y + flag_height - flag_frame_width
                 ],
               ],
               flag_color)

  if layout
    args = [
      layout, x, y, pole_width, flag_width * 0.8,
      text_height, flag_height,
    ]
    draw_flag_layout(*args)
  end
end
flag_size(pole_height, params) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 189
def flag_size(pole_height, params)
  params = setup_flag_params(pole_height, 1.5, params)
  [params["pole_width"] + params["flag_width"], pole_height]
end
gl_call_list(id, x, y, z, color=nil) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 235
def gl_call_list(id, x, y, z, color=nil)
  not_support_method("gl_call_list")
end
gl_compile(id) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 231
def gl_compile(id)
  not_support_method("gl_compile")
end
gl_supported?() click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 239
def gl_supported?
  false
end
make_color(color) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 24
def make_color(color)
  return color if color.is_a?(Color)
  if color.nil?
    @foreground
  else
    Color.parse(color)
  end
end
new_list_id() click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 251
def new_list_id
  @list_id += 1
  @list_id
end
reflect_context(base, params={}) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 42
def reflect_context(base, params={})
end
restore_context() click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 58
def restore_context
end
rotate_context(angle, params={}) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 36
def rotate_context(angle, params={})
end
save_context() { || ... } click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 48
def save_context
  if block_given?
    begin
      yield
    ensure
      restore_context
    end
  end
end
scale_context(x, y, params={}) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 39
def scale_context(x, y, params={})
end
shear_context(x, y, params={}) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 45
def shear_context(x, y, params={})
end
translate_context(x, y, params={}) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 33
def translate_context(x, y, params={})
end
z_far() click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 243
def z_far
  100.0
end
z_view() click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 247
def z_view
  5.0
end

Private Instance Methods

get_line_width(params, default=nil) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 257
def get_line_width(params, default=nil)
  params[:line_width] || default
end
set_font_resolution(context) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 261
def set_font_resolution(context)
end
setup_flag_params(pole_height, default_flag_width_ratio, params) click to toggle source
# File lib/rabbit/renderer/kernel.rb, line 264
def setup_flag_params(pole_height, default_flag_width_ratio, params)
  params = params.dup

  text = params["text"]
  text_attrs = params["text_attributes"] || {}
  if text
    markupped_text = PangoMarkup.new("span", text_attrs, text)
    layout = make_layout(markupped_text.to_s)
    text_width, text_height = layout.pixel_size
    params["layout"] = layout
    params["text_width"] = text_width
    params["text_height"] = text_height
    flag_width_default = [
      text_width * default_flag_width_ratio,
      pole_height / 2
    ].max
    flag_height_default = [text_height, flag_width_default].max
  else
    params["layout"] = nil
    flag_width_default = flag_height_default = nil
  end

  params["pole_width"] = params["pole_width"] || 2
  params["pole_color"] ||= "black"
  flag_height = params["flag_height"] ||
    flag_height_default || pole_height / 2
  flag_height = [flag_height, pole_height].min
  params["flag_height"] = flag_height
  params["flag_width"] ||= flag_width_default || flag_height
  params["flag_color"] ||= "red"
  params["flag_frame_width"] ||= params["pole_width"]
  params["flag_frame_color"] ||= params["pole_color"]

  params
end