kairo-gokko (2) 読み込んだデータを描画



図形の情報が抽出できたので、抽出結果の確認も兼ねて、もうここで可視化してしまいます。

(Bundler を使って) Plumo をインストールして、 次のように viewer.rb を書いて、

require "plumo"
require "./libo_draw"

# pixels per cell
PPC = 20

path = ARGV[0]

doc = LiboDraw::Document.new(path)

plumo = Plumo.new(640, 480)
plumo.start

plumo.color "#fff"

doc.pages[0].rectangles.each { |rect|
  plumo.stroke_rect(
    rect.x * PPC, rect.y * PPC,
    rect.w * PPC, rect.h * PPC
  )
}

doc.pages[0].lines.each { |line|
  plumo.line(
    line.x1 * PPC, line.y1 * PPC,
    line.x2 * PPC, line.y2 * PPC
  )
}

sleep 60

それから図形オブジェクトから各座標を得るために

# libo_draw.rb

module LiboDraw
  # ...

  class Rectangle
    # ...

    def x; @el["svg:x"].sub(/cm$/, "").to_f; end
    def y; @el["svg:y"].sub(/cm$/, "").to_f; end

    # ...
  end

  # ...

みたいな getter メソッドを追加。

bundle exec ruby viewer.rb data_01.fodg で実行してブラウザで http://localhost:9080/ を開く。

f:id:sonota88:20200212212835p:plain

LibreOffice Draw で描いた矩形と直線がブラウザ上で再現できました。