Drawable (クラス)
public abstract shared Drawable {inherits ProcessResourceReclaimer}
インポート元: CURL.GUI.STANDARD. package 内で定義されています CURL.GRAPHICS.DRAWABLE.
直接継承しているサブクラス: Printer, Window

これは描画されるオブジェクトの基本クラスです。Drawable の例には、Window Printer およびオフスクリーン描画があります。

注意事項

Drawable を作成するには、関数を呼び出して作成する必要があります。これには、 Drawable.create-offscreen クラス プロシージャまたは Window.create-window#factory ファクトリーを使用します。

注意事項

Drawable はオーバーライドされません。

プロパティ
destroy-handled?:適切なイベント ハンドラによって Window が破棄された場合、これは true になり Window は使用できません。
アクセサ public final Drawable.destroy-handled?:bool
セッター hidden final Drawable.destroy-handled?:bool
destroy-observed?:イベント ハンドラが呼び出されたかどうかにかかわらず Window の破棄が確認された場合、これは true になります。
アクセサ public final Drawable.destroy-observed?:bool
セッター hidden final Drawable.destroy-observed?:bool
destroy-requested?:Window.destroy により Window を破棄するように要求された場合、これは true になります。
アクセサ public final Drawable.destroy-requested?:bool
セッター hidden final Drawable.destroy-requested?:bool
forced-redraw-handler:この proc (プロシージャ) が null でない場合に、Drawable の再描画が必要になると呼び出されます。
フィールド public Drawable.forced-redraw-handler:#{proc-type {}:void}
height:この Drawable の高さ。
アクセサ public abstract Drawable.height:FloatDistance
resolution:Drawable のデバイスの解像度。この値は指定の距離を占めるピクセルの数を示します。dpi (dots per inch) は Resolution の単位です。
アクセサ public abstract Drawable.resolution:FloatResolution
width:この Drawable の幅。
アクセサ public abstract Drawable.width:FloatDistance

クラス変数と定数
bypass-size-restriction?:Drawable.max-width および Drawable.max-height を強制するかどうかを指定します。
public-get hidden-set Drawable.bypass-size-restriction?:bool =false
max-height:作成された Drawable の最大の高さ。
public constant Drawable.max-height:int =2048
max-width:作成された Drawable の最大幅。
public constant Drawable.max-width:int =2048
missing-forced-redraw-handler:このプロシージャは、Drawable が強制的に再描画され、その Drawable.forced-redraw-handler プロシージャが null の場合に呼び出されます。
public Drawable.missing-forced-redraw-handler:{proc-type {drawable:Drawable}:void} ={proc {d:Drawable}:void}

クラス プロシージャ
create-offscreen:イメージ編集に使用するオフスクリーンの Drawable を作成します。
public {Drawable.create-offscreen
width:Distance,
height:Distance,
resolution:Resolution = 0dpi,
use-host-rendering?:bool = false,
advanced-draw-operations?:bool = false
}:(result:Drawable)
set-bypass-size-restriction?:Drawable.max-width および Drawable.max-height を強制するかどうかを制御します。
public {Drawable.set-bypass-size-restriction? bypass?:bool}:void

メソッド
destroy:この Drawable を破棄してから、未処理のリソースをすべて解放します。
public sealed {Drawable.destroy}:void
to-Pixmap:この DrawablePixmap に変換します。
public {Drawable.to-Pixmap out:#Pixmap = null}:Pixmap
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize




プロパティ詳細
destroy-handled? (アクセサ)
アクセサ public final Drawable.destroy-handled?:bool
セッター hidden final Drawable.destroy-handled?:bool

適切なイベント ハンドラによって Window が破棄された場合、これは true になり Window は使用できません。



destroy-observed? (アクセサ)
アクセサ public final Drawable.destroy-observed?:bool
セッター hidden final Drawable.destroy-observed?:bool

イベント ハンドラが呼び出されたかどうかにかかわらず Window の破棄が確認された場合、これは true になります。



destroy-requested? (アクセサ)
アクセサ public final Drawable.destroy-requested?:bool
セッター hidden final Drawable.destroy-requested?:bool

Window.destroy により Window を破棄するように要求された場合、これは true になります。



forced-redraw-handler (フィールド)
public Drawable.forced-redraw-handler:#{proc-type {}:void}

この proc (プロシージャ) が null でない場合に、Drawable の再描画が必要になると呼び出されます。

説明

描画面が失われた場合にのみ再描画が強制的に行われます。このようなことが起こる例として、DirectX を使って、且つスクリーンの解像度が変更された時があります。

Drawable が強制的に再描画され、その forced-redraw-handlernull の場合は、 Drawable.missing-forced-redraw-handler が呼び出されます。

forced-redraw-handler が存在しないかのように動作させたい場合は、 Drawable.missing-forced-redraw-handler を呼び出せばいいです。


height (アクセサ)
アクセサ public abstract Drawable.height:FloatDistance

この Drawable の高さ。



resolution (アクセサ)
アクセサ public abstract Drawable.resolution:FloatResolution

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 に戻します。


width (アクセサ)
アクセサ public abstract Drawable.width:FloatDistance

この Drawable の幅。




クラス変数と定数の詳細
bypass-size-restriction? (クラス変数)
public-get hidden-set Drawable.bypass-size-restriction?:bool =false

Drawable.max-width および Drawable.max-height を強制するかどうかを指定します。

説明

Drawable.set-bypass-size-restriction? を参照してください。


max-height (クラス定数)
public constant Drawable.max-height:int =2048

作成された Drawable の最大の高さ。

説明

この制限より大きい Drawable を作成しようとする場合は、SurfaceTooLargeException がスローされます。

注意事項

この制限は、すべてのタイプのレンダラとすべてのプラットフォームでサポートされている最小値を示します。アプリケーションがディプロイされるプラットフォームやハードウェアまたはリソースの制限に関係なく、一定の方法で実行するよう強制されます。
まれに、このメカニズムを回避すべき場合があります。詳細については、Drawable.set-bypass-size-restriction? を参照してください。


max-width (クラス定数)
public constant Drawable.max-width:int =2048

作成された Drawable の最大幅。

説明

この制限より大きい Drawable を作成しようとする場合は、SurfaceTooLargeException がスローされます。

注意事項

この制限は、すべてのタイプのレンダラとすべてのプラットフォームでサポートされている最小値を示します。アプリケーションがディプロイされるプラットフォームやハードウェアまたはリソースの制限に関係なく、一定の方法で実行するよう強制されます。
まれに、このメカニズムを回避すべき場合があります。詳細については、Drawable.set-bypass-size-restriction? を参照してください。


missing-forced-redraw-handler (クラス変数)
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
            }
        }
    }
}




クラス プロシージャ詳細
create-offscreen (クラスプロシージャ)
public {Drawable.create-offscreen
width:Distance,
height:Distance,
resolution:Resolution = 0dpi,
use-host-rendering?:bool = false,
advanced-draw-operations?:bool = false
}:(result:Drawable)

イメージ編集に使用するオフスクリーンの Drawable を作成します。

width, height: 作成される Drawable の幅および高さ。
resolution: 作成される Drawable のオプションの Resolution。既定値はプライマリ ディスプレイの解像度になります。Resolution およびオフスクリーン描画の詳細については、Renderer2d.create-offscreen を参照してください。
use-host-rendering?: false (既定値) の場合、システムでは速度より正確さを優先するレンダリング システムの選択が行われ、true の場合は正確さより速度を優先するレンダリング システムの選択が行われます。ホスト レンダリングでは、一部の機能が正しく動作しないことがよくあります (alpha-blending など)。
advanced-draw-operations?:
この Drawable に組み合わせられた DrawOperation で利用できる Renderer2d を決定します。詳細は Renderer2d.create-offscreen を参照してください。
このフラグは use-host-rendering? が false の場合のみ設定してください。これは、ホスト レンダラーが使われる場合は最小限の DrawOperation のセットしかサポートされないためです。(use-host-rendering? = trueadvanced-draw-operations? = true の不正な組み合わせを指定すると例外がスローされます。)

戻り値

作成された Drawable

注意事項

レンダリングされた描画面の出力を Pixmap または Texture として取得するには、Drawable 上の Drawable.to-Pixmap または Texture.from-drawable#factory を呼び出します。一方、DrawableRenderer3d.render-drawable メソッドを使用して直接レンダリングすることができます。 要求されたオフスクリーン描画面が下位のレンダリング システムでサポートするには大きすぎる場合、Drawable.create-offscreenSurfaceTooLargeException をスローすることがあります。 オフスクリーン描画面の幅および高さの正確な制限はシステムによって異なります。通常、 width * resolution が 2048 未満で、height * resolutionが 1200 未満の場合は、問題は一切発生しません。ただし、これは保障されていません。大きくてもたいていのシステムでは動作します。; しかし、システムによって動いたり動かなかったりするコードを開発者が書くことを防ぐには、通常制限を低くする必要があります。Drawable.max-widthDrawable.max-height 、または Drawable.set-bypass-size-restriction? も参照してください。

説明

このプロシージャはオフスクリーン Drawable を作成します。
オフスクリーン Drawable はかなりのホスト リソースを消費するので、 頻繁には使用しないでください。さらに、Applet の存続期間を通して Drawable を使用しない場合は、不要になった Drawable を破棄してください。これには Drawable.destroy を使います。『Curl 開発者ガイド』の「高度な 2D レンダリング」にある例題を参照してください。


set-bypass-size-restriction? (クラスプロシージャ)
public {Drawable.set-bypass-size-restriction? bypass?:bool}:void

Drawable.max-width および Drawable.max-height を強制するかどうかを制御します。

bypass?: true の場合、サイズ制限が適用されません。

説明

この Drawable のサイズ制限は、すべてのタイプのレンダラーとすべてのプラットフォームでサポートされている最小値を示します。アプリケーションが展開されるプラットフォームやハードウェアまたはリソースの制限に関係なく一様な方法で実行するよう強制されます。
まれに、Drawable set-bypass-size-restriction? を使用してこのメカニズムを回避すべき場合があります。アプリケーションの要求をサポートできるシステムでだけ実行することが確実な場合、または独自のサイズ制限をする場合のみ、このメカニズムの回避を行います。



メソッド詳細
destroy (メソッド)
public sealed {Drawable.destroy}:void

この Drawable を破棄してから、未処理のリソースをすべて解放します。

説明

Drawable を作成するたびに、作業の完了時にこのメソッドを呼び出します。このメソッドが呼び出されず、Curl IDE 内でアプリケーションが実行されている場合は、Drawable がガーベッジ コレクションされるときに警告メッセージが表示されます。(アプリケーションが Curl 実行環境で実行されている場合は、警告は表示されません。)
この目的はシステム リソースの使用を最適化することにあります。Drawable はリソースへの負担がかかり、メモリを頻繁に割り当てない限りガーベッジ コレクションが頻繁に行われる保証はありません。したがって、ガーベッジ コレクションに依存して Drawables をクリーンアップできません。(ただし、このメソッドを呼び出すのを忘れたり呼び出せなくても、ガーベッジ コレクションによってリソースは常に確実にクリーン アップされます)。


to-Pixmap (メソッド)
public {Drawable.to-Pixmap out:#Pixmap = null}:Pixmap

この DrawablePixmap に変換します。

out: out で指定された Pixmap は、変換された Pixmap を保持するために使用されるかもしれないし、使用されないかもしれません。それは、具体的な実装次第です。そのため、out が修正されるとは仮定せずに常に戻り値を使用しなければなりません。

戻り値

この関数が呼び出された時に、この Drawable のコンテンツを表す Pixmap です。

注意事項

グラフィックの経路を同期したり、おかしな形式のバッファのデータをコピーする必要があるため、これはとても遅い操作となります。
この呼び出しが行われた後、Pixmap はこの Drawable との関係を持たなくなります。Drawable は修正されても、Pixmap は影響を受けなくなります。逆も同様です。
デスティネーション アルファ値はサポートされていないことに注意してください。返される Pixmap 内のアルファ チャネルのコンテンツは定義されず、Pixmap.ignore-alpha? は true になります。