サイログ。

~雑多な記事置き場~

RubyKaigi2008で使うプレゼンシステムが完成しました。

ようやく完成にこぎ着けました。

画面はこんな感じです。

前と変わってません(笑)。

とはいえ、内部的には大分変わっております。以下は、RubyKaigi2007のときのものとの比較です。

  • Miyako1.5準拠になった
  • スライドの記述方式を分かりやすくした(チャプターをmodule単位にした)
  • 移動条件に、「1番ボタン押下」と「一定時間経過」を追加した
  • 移動条件を追加できる様にした(移動方向と移動条件の関連性を無くした)
  • プラグインで拡張を可能にした(スライドの移動方法など)
  • 設定用スクリプトファイルを用意した(背景画像とかのね)

ちなみに、スライドはこのように記述します。
self.titleの内容が、チャプター選択時に表示される文字列になります。

module Chapter01
  include Chapter
  
  class Slide01
    include MPSSlide
    
    def initialize
      init(Slide["640x480"])
      font = Font.serif.property{|f| f.color=Color[:black]}
      self[:text1] = Shape.text(:font=>font){ "1枚目" }
      add_arrow_ex(:event=>:down, :slide=>Slide02, :trigger=>TimerTrigger.new(5.0))
      add_arrow(:down, Slide03)
    end
  end

  class Slide02
    include MPSSlide
    
    def initialize
      init(Slide["640x480"])
      font = Font.serif.property{|f| f.color=Color[:black]}
      self[:text1] = Shape.text(:font=>font){ "2枚目" }
      add_arrow(:up, Slide01)
    end
  end

  class Slide03
    include MPSSlide
    
    def initialize
      init(Slide["640x480"])
      font = Font.serif.property{|f| f.color=Color[:black]}
      self[:text1] = Shape.text(:font=>font){ "3枚目" }
      add_arrow(:up, Slide01)
    end
  end

  def self.title; return "その1" end
end

以下のコードは、プレゼン全体(要は、チャプターの束ね役)を管理するchapter.rb
の内容です。ここでは、表示を開始するスライドも指定できます(add_chapterメソッドの第2引数がそれ)

Chapters.add_chapter Chapter01, Chapter01::Slide01
Chapters.add_chapter Chapter02, Chapter02::Slide03

設定ファイル・setting.rbはこんな感じです。説明はあまり要らないかな?

require 'singleton'

class Setting
  include Singleton

  PRESET_IMAGE_DIR = "preset_image" # プリセット画像格納ディレクトリ名
  
  attr_reader :bg_filename # 背景ファイル名
  attr_reader :arrow_filename # 矢印ファイル名
  attr_reader :wait_cursor_filename # ウェイトカーソルファイル名
  attr_reader :select_cursor_filename # 選択カーソルファイル名
  attr_reader :plugin_dir # プラグインファイル格納ディレクトリ名
  attr_reader :slide_dir # スライドファイル格納ディレクトリ名
  attr_reader :box_margin # 章選択ボックスと背景とのマージン
  attr_reader :box_color # 章選択ボックスの背景色
  
  def initialize
    @bg_filename = "#{PRESET_IMAGE_DIR}/presen_bg.png"
    @arrow_filename = "#{PRESET_IMAGE_DIR}/arrow_blue.png"
    @wait_cursor_filename = "#{PRESET_IMAGE_DIR}/wait_cursor.png"
    @select_cursor_filename = "#{PRESET_IMAGE_DIR}/cursor.png"
    @plugin_dir = "plugins"
    @slide_dir = "slides"
    @box_margin = 8
    @box_color = [128,0,0,64]
  end
end

やっとこれでゲームブック(とプレゼン本文)の方に注力できます。
ああ、良かった。