もんたマインドポイント(2)

やっぱり[]が残っていると格好悪いので、シェイプで黒塗りすることにした。


mmpoint.rb

以下、変更分。動作確認はPowerPoint 2000のみ。残念ながら2007βで動かなくなってしまった。

MsoShapeRectangle = 1

class PowerPoint < Excel_Wrapper
  def mask(sl, tr, pos, len)
    t = tr.characters(pos, len)
    sh = sl.shapes.addshape(MsoShapeRectangle, t.boundLeft, t.boundTop, t.boundWidth, t.boundHeight)
    sh.fill.foreColor.schemeColor = PowerPoint::PpForeground
  end

  def monta_mask(sl, tr, masks, shown)
    cur = 0
    1.upto(masks) do |i|
      p1 = tr.find('[', cur).start
      tr.characters(p1, 1).delete
      p2 = tr.find(']', p1).start
      tr.characters(p2, 1).delete
      mask(sl, tr, p1, p2 - p1) if shown < i
      cur = p2
    end
  end

  def monta_method(pre, text)
    masks = text.scan(/\[[^\]]*\]/).size
    0.upto(masks) do |shown|
      sl, tb, tf, tr = takahashi_method(pre, text)
      monta_mask(sl, tr, masks, shown)
    end
  end
end