高橋マインドポイント
作ってみた。
- FreeMindで作った高橋メソッド用の原稿を、わざわざPowerPointに変換する。
- excel_lib必要。でもWIN32OLEだけで動くように簡単に改造できるはず。
- フォントサイズとか位置調整とか改善の余地あり。
- PowerPoint 2000と2007betaで動作確認。
require 'rexml/document' require 'kconv' require 'excel_lib' MsoDistributeVertically = 1 MsoTextOrientationHorizontal = 1 class FreeMind attr_reader :elements def initialize(file = nil) @elements = [] parse_file(file) if file end def parse_file(file) doc = REXML::Document.new file node(doc.elements["/map"]) end def node(doc) doc.elements.each('node') { |e| @elements << e.attributes['TEXT'].tosjis node(e) } end end class PowerPoint < Excel_Wrapper def initialize(visible = true) connector('PowerPoint.Application') @raw_object.visible = visible if block_given? yield self #quit unless @connected end end def connector(app_name) begin @raw_object = WIN32OLE.connect(app_name) @connected = true rescue @raw_object = WIN32OLE.new(app_name) end WIN32OLE.my_const_load(@raw_object, self.class) end def takahashi_mind(pre, text) @width ||= pre.pageSetup.slideWidth @height ||= pre.pageSetup.slideHeight s = pre.slides.add( 'Index' => pre.slides.count + 1, 'Layout' => PowerPoint::PpLayoutBlank) t = s.shapes.addTextBox( MsoTextOrientationHorizontal, 0, 0, @width, @height).textFrame.textRange t.text = text t.font.size = fit_font_size(@width, @height, text) t.paragraphFormat.alignment = PowerPoint::PpAlignCenter s.shapes.range(1).distribute(MsoDistributeVertically, true) end def fit_font_size(width, height, text) Math.sqrt(width * height / [text.size, 1].max).to_i end end if $0 == __FILE__ file = File.new(ARGV[0]) elements = FreeMind.new(file).elements PowerPoint.new do |app| pre = app.presentations.add elements.each do |e| app.takahashi_mind(pre, e) end end end