Rabbit のテーマを作る方法

投稿者 okkez 2009-06-25 08:08:00 GMT

Rabbit のテーマを作る方法を調べてみた。自分のテーマを試行錯誤して作っている途中なのでツッコミ歓迎。

基本的なことは README.ja にも書いてある。

既に存在しているテーマの色違いのテーマを作るのは簡単で、置き場所に適当な名前でファイルを作成して以下のようにすれば良い。

# include_theme の前にカスタマイズしたい色の設定を記述する
@block_quote_frame_width  = 1
@block_quote_fill_color   = "#eeeeee" # 引用の色を変える
include_theme("foo")

この場合は include_theme しているテーマが他のテーマを include_theme している場合が多いのでそれらを順番に辿っていくと好みの色に設定することができると思う。大抵の場合は default-* を参照してそれっぽいインスタンス変数を探すといいです。

参考になるテーマがあるけど、デザインが違う場合はちょっとだけ難しい。 しかし、まだなんとかなるレベル。

参考にするテーマから該当するブロックを自分のテーマファイルにコピペして編集するのが手っ取り早い。 試行錯誤が必要ですが、何回も繰り返せばなんとか目的のものを作ることができると思う。

フルスクラッチで作る場合というのは実はそんなになくて、ほとんどの場合は参考になるテーマから色々といただいてくればやりたいことはできるはず。

# 色などのカスタマイズ
include_theme("default")
# 以降にその他のカスタマイズ

上のような感じでやれば、そこそこ見られるテーマができると思う。

このへん を参照して参考にするテーマを探すと早いかもしれない。

一応、今回作ったテーマ (未完成) 。

@block_quote_frame_width  = 1
@block_quote_fill_color   = "#eeeeee"

# FIXME
@default_item1_mark_color = "#000000"
@default_item2_mark_color = "#333333"
@default_item3_mark_color = "#666666"
@default_enum_item1_mark_color = "#333333"
@default_enum_item2_mark_color = "#666666"
@default_description_item1_mark_color = "#ff9933"
@default_block_quote_item1_mark_color = "#ff9933"

@description_term_line_color = "#3333aa"

@preformatted_frame_width = 1
@preformatted_fill_color  = "#eeeeee"

@table_frame_width     = 1
@table_caption_color   = "#000000"
@table_head_fill_color = "#dddddd"
@table_fill_color      = "#eeeeee"
include_theme("default")

set_foreground("black")
set_background("white")

match(Slide, HeadLine) do |heads|
  name = "head-line"

  heads.delete_post_draw_proc_by_name(name)

  heads.horizontal_centering = false
  heads.prop_set("foreground", "white")

  x_space = screen_x(2)
  y_space = screen_y(1)

  heads.padding_top    = y_space * 2
  heads.padding_bottom = y_space * 2

  color = "#3333aa"

  heads.each do |head|
    pre_y = nil
    width = nil
    height = nil
    head.add_pre_draw_proc(name) do |canvas, x, y, w, h, simulation|
      pre_y = y
      unless simulation
        border_x = x - x_space * 2
        border_y = y - y_space * 2
        border_width = width + x_space * 4
        border_height = height + y_space * 4
        canvas.draw_rectangle(true, border_x, border_y,
                              border_width, border_height, color)
      end
      [x, y, w, h]
    end
    head.add_post_draw_proc(name) do |canvas, x, y, w, h, simulation|
      width = w
      height = y - pre_y
      [x, y, w, h]
    end
  end
end

たぶん、これ以上凝ったものを作ろうと思ったらソースを真面目に読まないといけない気がする。

カテゴリ ,  | タグ ,  | 2 comments | トラックバックなし

コメント

  1. kou 発言 about 6 hours later:

    お、るりまテーマですね。

  2. okkez 発言 about 7 hours later:

    そうです。るりまのサイトっぽい感じを目指しました。

トラックバック

トラックバックリンク:
http://typo.okkez.net/trackbacks?article_id=248

コメントは許可されていません