class RubySlides::Slide::DescriptionPic

Attributes

content[R]
coords[R]
image_name[R]
image_path[R]
title[R]

Public Class Methods

new(options={}) click to toggle source
# File lib/ruby_slides/slide/picture_description.rb, line 13
def initialize(options={})
  require_arguments [:presentation, :title, :image_path, :content], options
  options.each {|k, v| instance_variable_set("@#{k}", v)}
  @coords = default_coords
  @image_name = File.basename(@image_path)
end

Public Instance Methods

file_type() click to toggle source
# File lib/ruby_slides/slide/picture_description.rb, line 26
def file_type
  File.extname(image_name).gsub('.', '')
end
save(extract_path, index) click to toggle source
# File lib/ruby_slides/slide/picture_description.rb, line 20
def save(extract_path, index)
  copy_media(extract_path, @image_path)
  save_rel_xml(extract_path, index)
  save_slide_xml(extract_path, index)
end

Private Instance Methods

default_coords() click to toggle source
# File lib/ruby_slides/slide/picture_description.rb, line 30
def default_coords
  slide_width = pixel_to_pt(720)
  default_width = pixel_to_pt(550)
  default_height = pixel_to_pt(300)

  return {} unless dimensions = FastImage.size(image_path)
  image_width, image_height = dimensions.map {|d| pixel_to_pt(d)}

  capped_width = [default_width, image_width].min
  w_ratio = capped_width / image_width.to_f

  capped_height = [default_height, image_height].min
  h_ratio = capped_height / image_height.to_f

  ratio = [w_ratio, h_ratio].min

  new_width = (image_width.to_f * ratio).round
  new_height = (image_height.to_f * ratio).round
  {x: (slide_width / 2) - (new_width/2), y: pixel_to_pt(60), cx: new_width, cy: new_height}
end
save_rel_xml(extract_path, index) click to toggle source
# File lib/ruby_slides/slide/picture_description.rb, line 52
def save_rel_xml(extract_path, index)
  render_view('picture_description_rels.xml.erb', "#{extract_path}/ppt/slides/_rels/slide#{index}.xml.rels", index: 2)
end
save_slide_xml(extract_path, index) click to toggle source
# File lib/ruby_slides/slide/picture_description.rb, line 57
def save_slide_xml(extract_path, index)
  render_view('picture_description_slide.xml.erb', "#{extract_path}/ppt/slides/slide#{index}.xml")
end