パスに関する便利なメソッドをCairo::Contextに提供するモ ジュールです。実験的なものでAPIは変更される可能性があります。
cairoにはないrcairoでの拡張です。
map_path_onto(path)
コンテキストが持っているパスをpathの上に配置しま す。以下のようにすると円上にテキストを配置することがで きます。
cr.circle(100, 100, 50) cr.set_source_color(:blue) cr.stroke_preserve circle_path = cr.copy_path_flat cr.new_path # cr.move_to(100, 0) # 円上を時計周りに100移動 cr.text_path("ABCDE") cr.map_path_onto(circle_path) cr.set_source_color(:red) cr.fill
transform_path(path) {|x, y| ...}
pathの各点をブロックで変換します。Array#collectの ようなものです。以下は、パスを縦横それぞれ2倍の大きさに する実用的ではない例です。(こういうときは Cairo::Context#scaleを使いましょう。)
transformed_path = cr.transform_path(cr.copy_path) do |x, y| [x * 2, y * 2] end cr.new_path cr.append_path(transformed_path)