(クラス)
Drawable 上へのレンダリングに関して、描画状態 (レンダリング プロパティ) のスタックやレンダリング メソッドを格納する 2D レンダラーです。
説明
Renderer2d の作成および使用にはさまざまな方法があります。
Renderer2d には、レンダリングの実行方法に影響を与えるレンダリング プロパティのセットが含まれています。一般的なプロパティの例は
fill-pattern で、レンダリングされるオブジェクトの
FillPattern (色またはテクスチャ) を設定するのに使用されます。これらは
with-render-properties マクロにより設定されます。このマクロの解説には、各プロパティの詳細が含まれています。
アクセサ protected Renderer2d.antialiasing?:
bool セッター protected Renderer2d.antialiasing?:
bool
アクセサ protected Renderer2d.clipping-region:
Region セッター protected Renderer2d.clipping-region:
Region
アクセサ public Renderer2d.clipping-region-empty?:
bool
アクセサ public Renderer2d.device-pixel-size:
Distance
アクセサ public Renderer2d.device-resolution:
Resolution
セッター protected sealed Renderer2d.fill-pattern:
FillPattern
アクセサ public sealed Renderer2d.font:
Font セッター protected sealed Renderer2d.font:
Font
アクセサ public sealed Renderer2d.line-style:
LineStyle セッター protected sealed Renderer2d.line-style:
LineStyle
アクセサ public sealed Renderer2d.pixel-size:
Distance
アクセサ public sealed Renderer2d.rendering-to-printer?:
bool
アクセサ public sealed Renderer2d.stroke-thickness:
Distance セッター protected sealed Renderer2d.stroke-thickness:
Distance
| public | {Renderer2d.create-offscreen}:(Renderer2d, Drawable) |
| public | {Renderer2d.clear}:void |
| public | {Renderer2d.get-clipping-region}:Region |
| public | {Renderer2d.get-coordinate-for-string-index}:FloatDistance |
| public | {Renderer2d.get-font-names}:{Array-of String} |
| public final | {Renderer2d.get-font-underline-position}:FloatDistance |
| public final | {Renderer2d.get-font-underline-thickness}:FloatDistance |
| public | {Renderer2d.get-string-index-for-coordinate}:int |
| protected | {Renderer2d.pop-clipping-region}:void |
| protected | {Renderer2d.push-clipping-region r:Region}:void |
| public abstract | {Renderer2d.render-drawable}:void |
| public abstract | {Renderer2d.render-ellipse}:void |
| public abstract | {Renderer2d.render-elliptic-path}:void |
| render-line: | 現在の fill-pattern を使用し、2 つの端点を与えて線セグメントをレンダリングします。 |
| public abstract | {Renderer2d.render-line}:void |
| public abstract | {Renderer2d.render-path}:void |
| public abstract | {Renderer2d.render-pixmap}:void |
| public sealed | {Renderer2d.render-polygon}:void |
| public abstract | {Renderer2d.render-polygon-from-array}:void |
| public abstract | {Renderer2d.render-rectangle}:void |
| public abstract | {Renderer2d.render-rectangular-path}:void |
| public abstract | {Renderer2d.render-region}:void |
| public | {Renderer2d.render-rounded-rectangle}:void |
| public | {Renderer2d.render-rounded-rectangular-path}:void |
| public | {Renderer2d.render-stippled-rectangle}:void |
| public | {Renderer2d.render-string}:void |
| render-triangle: | 現在の fill-pattern を使用して三角形をレンダリングします。これは Renderer3d.render-polygon-from-array を呼び出す際に便利な機能です。 |
| public abstract | {Renderer2d.render-triangle}:void |
(ファクトリ)
(アクセサ)
アクセサ protected Renderer2d.antialiasing?:
bool セッター protected Renderer2d.antialiasing?:
bool
この項目はサポートされていません。内部使用限定となっています。
(アクセサ)
(アクセサ)
アクセサ protected Renderer2d.clipping-region:
Region セッター protected Renderer2d.clipping-region:
Region
この項目はサポートされていません。内部使用限定となっています。
(アクセサ)
アクセサ public Renderer2d.clipping-region-empty?:
bool Renderer2d のクリッピング領域が空の場合は true を返します。
説明
クリッピング領域の境界がゼロの場合も、プロパティは true になります。
(アクセサ)
アクセサ public Renderer2d.device-pixel-size:
Distance デバイスのピクセル サイズを返します。
説明
1/(resolution of the device) と等しくなります。
(アクセサ)
アクセサ public Renderer2d.device-resolution:
Resolution
(アクセサ)
(アクセサ)
セッター protected sealed Renderer2d.fill-pattern:
FillPattern
(アクセサ)
アクセサ public sealed Renderer2d.font:
Font セッター protected sealed Renderer2d.font:
Font
(アクセサ)
アクセサ public sealed Renderer2d.line-style:
LineStyle セッター protected sealed Renderer2d.line-style:
LineStyle
(アクセサ)
アクセサ public sealed Renderer2d.pixel-size:
Distance
(アクセサ)
アクセサ public sealed Renderer2d.rendering-to-printer?:
bool
(アクセサ)
アクセサ public sealed Renderer2d.stroke-thickness:
Distance セッター protected sealed Renderer2d.stroke-thickness:
Distance
(アクセサ)
この項目はサポートされていません。内部使用限定となっています。
(アクセサ)
この項目はサポートされていません。内部使用限定となっています。
(クラスプロシージャ)
| public | {Renderer2d.create-offscreen}:(Renderer2d, Drawable) |
イメージの編集やオフスクリーンのレンダリングに使用可能な Drawable を作成します。作成した Drawable で使用される Renderer2d も作成します。
resolution: 作成された
Drawable の
Resolution。解像度は、作成された
Drawable の
Distance 単位あたりのピクセル サンプル数になります。解像度は通常、インチあたりのドット数で指定されます。次のコードでは、100dpi の解像度で 2 インチの正方形のオフスクリーン描画を作成します。
{Renderer2d.create-offscreen 2in, 2in, resolution = 100dpi}既定値である
Odpi は表示解像度を意味します。
use-host-rendering?: false (既定値) の場合、システムでは速度より正確さを優先するレンダリング システムの選択が行われ、true の場合は正確さより速度を優先するレンダリング システムの選択が行われます。ホスト レンダリングでは、一部の機能が正しく動作しないことがよくあります (alpha-blending など)。
advanced-draw-operations?:
true の場合、すべての
DrawOperation は結果として返されるレンダラーによってサポートされます。
DrawOperation.source、
DrawOperation.mask または
DrawOperation.blend 以外の
DrawOperation を使う場合、このフラグを true に設定する必要があります。
このフラグは
use-host-rendering? が false の場合のみ設定してください。これは、ホスト レンダラーが使われる場合は最小限の
DrawOperation のセットしかサポートされないためです。(
use-host-rendering? = true と
advanced-draw-operations? = true の不正な組み合わせを指定すると例外がスローされます。)
...:
resolution が指定されない場合、代わりに残余引数内の単一の
Resolution 値を渡すことができます。この構文は、
Renderer2d.create-offscreen の以前の実装からの移行を容易にします。以前の実装では
resolution はキーワード引数ではなく位置キーワードでした。キーワード パラメータを含め、複数の解像度パラメータを指定することはできません。
説明
resolution パラメータを
Renderer2d.create-offscreen に指定する際に、0dpi と指定しプライマリーディスプレイと同様の解像度を要求することもできます。
もう一つの方法として、
DisplayContext オブジェクトを使用してピクセルのサイズを判別し、ディスプレイの解像度を決定することもできます。
解像度はピクセル サイズの逆数になります。
| 例:
画面の解像度を取得 |
 |
{value
let display-context:DisplayContext =
{get-default-display-context}
let resolution:Resolution = 1 / display-context.pixel-size
{VBox
{HBox "Display Resolution is: ", resolution},
{format
"This is equal to %f dots per inch",
resolution / 1dpi
}
}
}
| |
レンダリングからこのオフスクリーン
Drawable への出力を取得するには、
Drawable.to-Pixmap または
Texture.from-drawable#factory を呼び出します。また、
Renderer2d が
Graphic と関連付けられている場合 (例:
Graphic.draw)、
Renderer2d.render-drawable を使用してオフスクリーン描画を画面にコピーすることもできます。
例
ここでは、
Renderer2d.create-offscreen を使用してオフスクリーン描画を作成し、そのオフスクリーン
Drawable に描画してから、
Drawable を
Graphic にコピーする方法を示しています。
| 例:
オフスクリーン Drawable を画面にコピー |
 |
{let
(offscreen-r2d:Renderer2d, offscreen-drawable:Drawable) =
{Renderer2d.create-offscreen 4cm, 4cm, resolution = 50dots/1cm}
}
{do
{offscreen-r2d.clear fill-pattern = {FillPattern.get-black}}
{offscreen-r2d.render-rectangle
1cm, 1cm, || x, y
2cm, 2cm, || width, height
fill-pattern = {FillPattern.get-violet}
}
}
{define-class public MyFill {inherits Fill}
{constructor public {default ...}
{construct-super ...}
}
{method public {draw r2d:Renderer2d}:void
{super.draw r2d}
{r2d.render-drawable
-2cm, -2cm, || x, y
4cm, 4cm, || width, height
offscreen-drawable
}
}
}
{value
{MyFill
width = 6cm, height = 6cm,
background = {FillPattern.get-maroon}
}
}
| |
注意事項
- 返される Renderer2d は 2D レンダリングで使用されます。
- Drawable はオフスクリーンの面を表します。
オフスクリーン
Drawable はかなりのホスト リソースを消費するので、頻繁には使用しないでください。さらに、
Appletの存続期間を通して Drawable を使用しない場合は、不要になった
Drawable を破棄してください。これには
Drawable.destroy を使用します。Curl Lab 開発者ガイドの
高度な 2D レンダリング にある例題を参照してください。
戻り値
(メソッド)
| public | {Renderer2d.clear}:void |
現在の clipping-region を与えられた FillPattern にクリアします。
注意事項
{renderer2d.clear fill-pattern = fill-pattern} の呼び出しは次のように呼び出すのと同じです。
let region:Region = {renderer2d.get-clipping-region}
let (x:Distance, y:Distance, width:Distance, height:Distance) =
{clipping-region.get-bounding-box}
{renderer2d.render-rectangle
x,
y,
width,
height,
fill-pattern = fill-pattern
}
(メソッド)
| public | {Renderer2d.get-clipping-region}:Region |
Renderer2d の現在のクリッピング領域を取得します。
説明
注意事項
返される
Region は、この
Renderer2d の現在の変換に関連しています。
(メソッド)
現在のクリッピング領域の境界ボックスの寸法を返します。
説明
注意事項
返される座標は、この Renderer2d の現在の変換に関連します。
(メソッド)
| public | {Renderer2d.get-coordinate-for-string-index}:FloatDistance |
レンダリングされる文字列のインデックスに最もよく対応するグラフィックの座標を規定します。
index: レンダリングされる文字列内のインデックスです。この値は start ではなく、文字列全体に関連しています。この値が 0 より小さい、あるいは string.size より大きい場合、例外がスローされます。
string: 文字列です。
font: 使用するフォント (オプション)。指定された場合、このパラメータは現在の フォント レンダリング プロパティをオーバーライドします。
start: 文字列の開始文字のインデックス。
length: レンダリングする文字数。
説明
このメソッドは
get-string-advance-width に似ていますが、文字列の個々の文字がレンダリングされる座標を規定しようとします。その違いはコンテキストに依存した方法で文字を調整するレンダリングのシステムにおいて発生します。たとえば、そのようなシステムにおいて、文字列 "abc" 内の文字 'c' の座標は、文字列 "ab" の長さと等しくない可能性があります。
index が
start より小さい場合、返される座標は
0m になります。
index が
start + length より大きい場合、返される座標はインデックス
start + length と同じ値になります。
導入:
バージョン 6.0
(メソッド)
現在のフォントの上昇量を示す FloatDistance を返します。
説明
次の図では、文字列 "Jj" の上昇を示しています。

(メソッド)
現在のフォントの下降量を示す FloatDistance を返します。
説明
次の図では、文字列 "Jj" の下降を示しています。

(メソッド)
現在のフォントのテキストの行間長を示す FloatDistance を返します。
説明
次の図では、文字列 "Jj" の line-gap を示しています。

(メソッド)
| public | {Renderer2d.get-font-names}:{Array-of String} |
この Renderer2d で使用可能なフォント名をすべて取得します。
(メソッド)
| public final | {Renderer2d.get-font-underline-position}:FloatDistance |
ベースラインを基準として、現在のフォントで下線がレンダリングされる位置を示す FloatDistance を返します。
説明
次の図では、文字列 "Jj" の underline-position を示しています。

(メソッド)
| public final | {Renderer2d.get-font-underline-thickness}:FloatDistance |
(メソッド)
現在のフォントの文字列の advance width (送り幅)を示す FloatDistance を返します。
string: 測定する文字列。
start: 測定を開始する文字の文字列中のインデックス。この指定はオプションです。指定されなかった場合の既定値は 0 になります。
length: 測定する部分文字列の長さ。指定されない場合の既定値は、文字列の長さから start を引いた値になります。
説明
次の図では、文字列 "Jj" の advance width(送り幅) を示しています。

(メソッド)
| public | {Renderer2d.get-string-index-for-coordinate}:int |
レンダリングされる文字列の座標に最もよく対応する文字列内のインデックスを規定します。
x: レンダリングされる文字列に関連する座標です。
string: 文字列です。
font: 使用するフォント (オプション)。指定された場合、このパラメータは現在の フォント レンダリング プロパティをオーバーライドします。
start: 文字列の開始文字のインデックス。
length: レンダリングする文字数。
説明
導入:
バージョン 6.0
(メソッド)
(メソッド)
| protected | {Renderer2d.pop-clipping-region}:void |
この項目はサポートされていません。内部使用限定となっています。
(メソッド)
| protected | {Renderer2d.push-clipping-region r:Region}:void |
この項目はサポートされていません。内部使用限定となっています。
(メソッド)
| public abstract | {Renderer2d.render-drawable}:void |
オプションでソースの四角形を指定し、軸に揃えられた四角形の上に Drawable をレンダリングします。
dst-x, dst-y, dst-width, dst-height: ソース
Drawable がレンダリングされる出力先の四角形。
dst-width および
dst-height は共にゼロ以上の値であることが必要です。
src-x, src-y, src-width, src-height: レンダリングされるソース
Drawable の四角形。
src-width および
src-height は共にゼロより大きい値であることが必要です。指定されない場合、ソースの四角形はソース
Drawable 全体になり、
src-x および
src-y には既定値 0 を使用し、
src-width および
src-height にはソース
Drawable の幅と高さを使用します。
説明
レンダリングの前に、現在の空間
Transformation2d によって出力先 (
dst-x、
dst-y) が変換されます (詳細については
with-render-properties を参照してください)。現在の空間
Transformation2d によって幅と高さのスケールが変更します。結果として、出力先は常に軸に揃えられることになります。
四角形については、指定された四角形内にピクセルの中心がある場合、このピクセルは必ず塗りつぶされます。四角形の外側に中心があるピクセルは塗りつぶされません。四角形のちょうど端に位置するピクセルの場合、上端および左端にあるピクセルは塗りつぶされ、右端および下端にあるピクセルは塗りつぶされません。
注意事項
(メソッド)
| public abstract | {Renderer2d.render-ellipse}:void |
境界ボックス内で楕円形をレンダリングします。
x, y: 境界ボックスの左上隅。
width, height: 境界ボックスの幅および高さ。width および height は正または負を指定できます。
start: 扇形の切片 (楕円形全体ではなく) の開始角度。0deg は 3 時の位置になります。
stop: 扇形の切片の停止角度。切片は start から時計回りに移動して描画されます。
fill-pattern: ポリゴンをレンダリングする
FillPattern (オプション)。指定された場合、このパラメータは現在の fill-pattern レンダリング プロパティをオーバーライドします。
説明
(メソッド)
| public abstract | {Renderer2d.render-elliptic-path}:void |
現在の fill-pattern および stroke-thickness を使用して、境界ボックス