画像を表します。描画操作の対象となったり他のサーフェス上に描 画するときのソースになったりします。サーフェスに描画するため には、Cairo::Context.newに対象にしたいサーフェスを渡してコン テキストを作ります。
サーフェスには異なる描画バックエンドのために異なる種類があり ます。例えば、Cairo::ImageSurface.newはメモリ上にビットマッ プ画像を作ります。
clone
dup
content
create_similar(content, width, height)
selfとできるだけ互換性のある新しいサーフェスを生 成します。例えば、新しいサーフェスはselfと同じフォー ルバック解像度とフォントオプションを持っています。通常、 新しいサーフェスはできるだけselfと同じバックエンド を使います。
最初はサーフェスの内容はすべて0です。(透明度を持ってい れば透明、そうでなければ黒です。)
device_offset
[x_offset, y_offset]
finish
サーフェスを終了し、全ての外部資源を開放します。このメ ソッドを呼んだ後は、サーフェスに対して何の操作もできま せん。描画操作は効果がなく、代わりに例外 Cairo::SurfaceFinishedErrorが発生します。
rcairoではサーフェスがGCされると自動的に Cairo::Surface#finishが呼ばれます。
flush
font_options
mark_dirty
set_device_offset(x_offset, y_offset)
サーフェスに描画するときにCTMで決定する装置座標に補正値 を追加します。このメソッドは例えばこんなサーフェスを作 りたいときに使えます。それは画面上のサーフェスの一部と して描かれているものを画面上にはない別のサーフェスに転 送するサーフェスです。ある意味で、これは完全にcairoの APIのユーザには見えないところです。 Cairo::Context#transformで変換を設定することでは十分で はありません。なぜならCairo::Context#device_to_userのよ うなメソッドが隠れた補正値を外に出してしまうからです。
補正値はソースパターンとしてサーフェスを使ってサーフェ スを描画したときにも影響があることに注意してください。
set_fallback_resolution(x_pixels_per_inch, y_pixels_per_inch)
画像フォールバックのときの水平方向と垂直方向の解像度の 設定。
バックエンドではネイティブにサポートしていない特定の操 作では、cairoは画像に対して描画操作を行い、その画像を出 力に重ねるというフォールバックを行います。ネイティブで ベクトル系のバックエンドでは、このメソッドはその画像フォー ルバックのときに設定した解像度を使います。(大きな値だ と画像が詳細になりますが、ファイルサイズが大きくなりま す。)
ネイティブでベクトル系のバックエンドの例はPostScript, PDF, SVGバックエンドです。,
ネイティブでラスタ系のバックエンドでは、画像フォールバッ クは可能ですが、常にネイティブの装置解像度で実行されま す。そのため、ラスタ系のバックエンドではこのメソッドは 意味がありません。
注: フォールバック解像度はページを完成させるとき (Cairo::Context#show_pageかCairo::Context#copy_page)に 使います。そのため、現在は各ページにひとつのフォールバッ ク解像度しか効果がありません。
write_to_png(stream)
write_to_png(filename)
サーフェスの内容をPNG画像として書き出します。
引数がwriteメソッドを持っている場合はそのオブジェクトの writeメソッドを使ってPNG画像を出力します。形式のデータを 取得します。ない場合は引数をファイル名として扱い、その ファイルへPNG画像を出力します。
copy_page
show_page