(クラス)
これは描画されるオブジェクトの基本クラスです。Drawable の例には、Window、 Printer およびオフスクリーン描画があります。
注意事項
注意事項
Drawable はオーバーライドされません。
アクセサ public final Drawable.destroy-handled?:
bool セッター hidden final Drawable.destroy-handled?:
bool
アクセサ public final Drawable.destroy-observed?:
bool セッター hidden final Drawable.destroy-observed?:
bool
アクセサ public final Drawable.destroy-requested?:
bool セッター hidden final Drawable.destroy-requested?:
bool
public-get hidden-set Drawable.bypass-size-restriction?:
bool =false
public constant Drawable.max-height:
int =2048
public constant Drawable.max-width:
int =2048
public Drawable.missing-forced-redraw-handler:{
proc-type {drawable:
Drawable}:
void} ={proc {d:Drawable}:void}
public | {Drawable.create-offscreen}:(result:Drawable) |
public | {Drawable.set-bypass-size-restriction? bypass?:bool}:void |
public sealed | {Drawable.destroy}:void |
(アクセサ)
アクセサ public final Drawable.destroy-handled?:
bool セッター hidden final Drawable.destroy-handled?:
bool 適切なイベント ハンドラによって Window が破棄された場合、これは true になり Window は使用できません。
(アクセサ)
アクセサ public final Drawable.destroy-observed?:
bool セッター hidden final Drawable.destroy-observed?:
bool イベント ハンドラが呼び出されたかどうかにかかわらず Window の破棄が確認された場合、これは true になります。
(アクセサ)
アクセサ public final Drawable.destroy-requested?:
bool セッター hidden final Drawable.destroy-requested?:
bool Window.destroy により Window を破棄するように要求された場合、これは true になります。
(フィールド)
この proc (プロシージャ) が null でない場合に、Drawable の再描画が必要になると呼び出されます。
説明
(アクセサ)
(アクセサ)
Drawable のデバイスの解像度。この値は指定の距離を占めるピクセルの数を示します。dpi (dots per inch) は Resolution の単位です。
説明
アプリケーションはこの値を使用して、レンダリングのためのピクセル サイズを決定することができます。たとえば、ボックスを 2 ピクセルの厚さでレンダリングする場合は、その幅を
2 * 1/drawable.resolution にします。
1/resolution では、
Distance の単位でピクセルのサイズを指定します。
注意事項
アプリケーションでピクセルが正確に配置されるように、プリミティブをピクセル グリッドに揃える場合があります。
Drawable.resolution はこのような場合に役に立ちます。たとえば、2 つの終了ポイント (
point0:Distance2d および
point1:Distance2d) で表される四角形を配置するには次のコードを使用します。
例 |
|
{do
let resolution:Resolution = 72dpi || for instance
let point0:Distance2d = {Distance2d 1in/3, 1in/3}
let point1:Distance2d = {Distance2d 4in/3, 4in/3}
let out-point0:Distance2d =
{Distance2d
{ceiling (point0.x * resolution) - 0.5} / resolution,
{ceiling (point0.y * resolution) - 0.5} / resolution
}
let out-point1:Distance2d =
{Distance2d
{ceiling (point1.x * resolution) - 0.5} / resolution,
{ceiling (point1.y * resolution) - 0.5} / resolution
}
}
| |
このコードでは
Resolution を掛けて
Distance をピクセルに変換します。次に、
ceiling を使用して丸め、ピクセルの中心位置を計算します。最後に、
Resolution で割って
Distance に戻します。
(アクセサ)
(クラス変数)
public-get hidden-set Drawable.bypass-size-restriction?:
bool =false
(クラス定数)
public constant Drawable.max-height:
int =2048
作成された Drawable の最大の高さ。
説明
注意事項
この制限は、すべてのタイプのレンダラとすべてのプラットフォームでサポートされている最小値を示します。アプリケーションがディプロイされるプラットフォームやハードウェアまたはリソースの制限に関係なく、一定の方法で実行するよう強制されます。
(クラス定数)
public constant Drawable.max-width:
int =2048
作成された Drawable の最大幅。
説明
注意事項
この制限は、すべてのタイプのレンダラとすべてのプラットフォームでサポートされている最小値を示します。アプリケーションがディプロイされるプラットフォームやハードウェアまたはリソースの制限に関係なく、一定の方法で実行するよう強制されます。
(クラス変数)
public Drawable.missing-forced-redraw-handler:{
proc-type {drawable:
Drawable}:
void} ={proc {d:Drawable}:void}
このプロシージャは、Drawable が強制的に再描画され、その Drawable.forced-redraw-handler プロシージャが null の場合に呼び出されます。
説明
既定では、
CURL.GUI.STANDARD パッケージはこのプロシージャを、作業内容の保存やアプレットの再ロードをユーザーに求めるダイアログを表示するプロシージャに設定します。
注意事項
missing-forced-redraw-handler はアプレットに 1 つしかないため、複数のパッケージでこの変数を設定しないようにします。
このプロシージャが複数回呼び出されても、1 つの
Dialog しか起動しないようにするの必要があります。これは、再描画が必要なそれぞれの描画に対してダイアログは 1 度だけ呼び出されるためです。これは次の方法で解決することができます。
let warning-pending?:bool = false
...
{set Drawable.missing-forced-redraw-handler =
{proc {drawable:Drawable}:void
{if not warning-pending? then
set warning-pending? = true
{after 0s do
<do the warning>
set warning-pending? = false
}
}
}
}
(クラスプロシージャ)
public | {Drawable.create-offscreen}:(result:Drawable) |
イメージ編集に使用するオフスクリーンの Drawable を作成します。
width, height: 作成される Drawable の幅および高さ。
use-host-rendering?: false (既定値) の場合、システムでは速度より正確さを優先するレンダリング システムの選択が行われ、true の場合は正確さより速度を優先するレンダリング システムの選択が行われます。ホスト レンダリングでは、一部の機能が正しく動作しないことがよくあります (alpha-blending など)。
advanced-draw-operations?:
このフラグは
use-host-rendering? が false の場合のみ設定してください。これは、ホスト レンダラーが使われる場合は最小限の
DrawOperation のセットしかサポートされないためです。(
use-host-rendering? = true と
advanced-draw-operations? = true の不正な組み合わせを指定すると例外がスローされます。)
戻り値
作成された Drawable。
注意事項
説明
オフスクリーン
Drawable はかなりのホスト リソースを消費するので、 頻繁には使用しないでください。さらに、
Applet の存続期間を通して Drawable を使用しない場合は、不要になった
Drawable を破棄してください。これには
Drawable.destroy を使います。『Curl 開発者ガイド』の「
高度な 2D レンダリング」にある例題を参照してください。
(クラスプロシージャ)
public | {Drawable.set-bypass-size-restriction? bypass?:bool}:void |
Drawable.max-width および Drawable.max-height を強制するかどうかを制御します。
bypass?: true の場合、サイズ制限が適用されません。
説明
この Drawable のサイズ制限は、すべてのタイプのレンダラーとすべてのプラットフォームでサポートされている最小値を示します。アプリケーションが展開されるプラットフォームやハードウェアまたはリソースの制限に関係なく一様な方法で実行するよう強制されます。
まれに、Drawable set-bypass-size-restriction? を使用してこのメカニズムを回避すべき場合があります。アプリケーションの要求をサポートできるシステムでだけ実行することが確実な場合、または独自のサイズ制限をする場合のみ、このメカニズムの回避を行います。
(メソッド)
public sealed | {Drawable.destroy}:void |
この Drawable を破棄してから、未処理のリソースをすべて解放します。
説明
Drawable を作成するたびに、作業の完了時にこのメソッドを呼び出します。このメソッドが呼び出されず、Curl IDE 内でアプリケーションが実行されている場合は、Drawable がガーベッジ コレクションされるときに警告メッセージが表示されます。(アプリケーションが Curl 実行環境で実行されている場合は、警告は表示されません。)
この目的はシステム リソースの使用を最適化することにあります。Drawable はリソースへの負担がかかり、メモリを頻繁に割り当てない限りガーベッジ コレクションが頻繁に行われる保証はありません。したがって、ガーベッジ コレクションに依存して Drawables をクリーンアップできません。(ただし、このメソッドを呼び出すのを忘れたり呼び出せなくても、ガーベッジ コレクションによってリソースは常に確実にクリーン アップされます)。
(メソッド)
この Drawable を Pixmap に変換します。
out: out で指定された Pixmap は、変換された Pixmap を保持するために使用されるかもしれないし、使用されないかもしれません。それは、具体的な実装次第です。そのため、out が修正されるとは仮定せずに常に戻り値を使用しなければなりません。
戻り値
この関数が呼び出された時に、この Drawable のコンテンツを表す Pixmap です。
注意事項
グラフィックの経路を同期したり、おかしな形式のバッファのデータをコピーする必要があるため、これはとても遅い操作となります。
この呼び出しが行われた後、Pixmap はこの Drawable との関係を持たなくなります。Drawable は修正されても、Pixmap は影響を受けなくなります。逆も同様です。
デスティネーション アルファ値はサポートされていないことに注意してください。返される
Pixmap 内のアルファ チャネルのコンテンツは定義されず、
Pixmap.ignore-alpha? は true になります。