hspd2d
Version 0.4
Date 2026/04/14
Author IronHSP project
hspd2d - DirectWrite + Direct2D + WIC 描画モジュール
d2d_clear
カレント画像を単色で塗りつぶす
カレント描画対象を指定の RGBA 色で塗りつぶす。
d2d_color
以後の描画色を設定する
d2d_drawline / d2d_drawrect / d2d_fillrect / d2d_drawellipse / d2d_fillellipse /
d2d_drawtext などのカレント描画色を設定する。
d2d_drawimage
別の画像をカレント画像に描画する
src_id の画像をカレント描画対象に転写する。dst_w/dst_h を 0 にすると元サイズで描画される。
拡大縮小は線形補間。
d2d_drawtext
テキストを描画する
カレントフォント / カレント色でテキストを描画する。
D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONT が有効なので、Segoe UI Emoji 等の色付き
絵文字フォントは自動でカラー描画される。
d2d_font
テキスト描画用フォントを設定する
DirectWrite の IDWriteTextFormat を作成してカレントフォントとする。
複数回呼べる (前のフォントは自動的に release される)。
Segoe UI Emoji を指定すると COLR/CPAL/CBDT/sbix 系のカラー絵文字も自動で描画される。
d2d_gif_frame_delay
GIF アニメの指定フレームの遅延時間を取得 (10ms 単位)
指定フレームの表示遅延時間を 10ms 単位で stat に返す (例: 10 なら 100ms)。
GIF の Graphic Control Extension Delay Time フィールドの値をそのまま返す。
フレーム番号が範囲外、もしくはハンドルが無効な場合は 0 を返す。
d2d_gif_frame_to_image
GIF アニメの指定フレームを d2d_image として取り出す
指定フレームを WIC から取り出し、PBGRA 形式に変換して dst_id に d2d_image として
構築する。
d2d_gif_free
GIF デコーダハンドルを解放
d2d_gif_load で取得したハンドルを解放する。内部で保持していた WIC Decoder の
リファレンスも Release され、GIF のメモリが解放される。必ず呼び出すこと。
d2d_gif_load
GIF アニメファイルを読み込んでデコーダハンドルを取得
GIF アニメファイルを IWICBitmapDecoder で開き、内部で自作パーサを使って全フレームの
遅延時間 (Graphic Control Extension の Delay) とループ回数 (NETSCAPE 2.0 拡張ブロック)
を抽出する。
d2d_gif_loop_count
GIF アニメのループ回数を取得
NETSCAPE 2.0 拡張ブロックに書かれたループ回数を stat で返す。
0 の場合は無限ループ (一般的な GIF アニメはこれ)。1 以上なら指定回数だけ再生する。
ループ情報がない GIF では 0 (無限) が返る。
d2d_gif_write_begin
GIF アニメ書き出しを開始 (スタブ、未実装)
マルチフレーム GIF の書き出しを開始する予定の命令。現状は WIC
IWICMetadataQueryWriter と PROPVARIANT を HSP 側で組み立てるのが非常に煩雑なため
スタブのままで、常に stat = -1 を返す。将来の版で実装予定。
d2d_gif_write_end
GIF アニメ書き出しを完了 (スタブ、未実装)
d2d_gif_write_begin で開いた GIF ライタをファイナライズして閉じる予定の命令。
現状は未実装で、常に stat = -1 を返す。
d2d_gif_write_frame
GIF アニメに 1 フレーム追加 (スタブ、未実装)
d2d_gif_write_begin で開いた GIF ライタに 1 フレーム追加する予定の命令。
現状は未実装で、常に stat = -1 を返す。
d2d_image_create
オフスクリーン画像 (空) を作成する
指定 ID で 32bpp PBGRA の WIC ビットマップと Direct2D RenderTarget を生成する。
作成後はこの ID がカレント描画対象になる。既存の ID を指定すると古いほうは自動で破棄される。
d2d_image_delete
画像を破棄する
ID で指定した画像の RenderTarget と WIC ビットマップを解放する。
カレント描画対象だった場合は cur_id が -1 にリセットされる。
d2d_image_load
画像ファイルを読み込んで指定 ID に展開する
WIC のデコーダを使って画像を読み込み、PBGRA に変換、指定 ID にビットマップ + RenderTarget
として展開する。読み込み後はこの ID がカレント描画対象になり、d2d_drawimage のソースとしても
使える。
d2d_image_save
カレント画像をファイルに保存する
拡張子に応じて以下の形式で保存する:
.png → PNG
.bmp → BMP
.jpg / .jpeg → JPEG
.tif / .tiff → TIFF
.gif → GIF
d2d_image_select
カレント描画対象を切り替える
ID で指定した画像をカレント描画対象にする。以降の d2d_clear / d2d_drawtext / d2d_drawline /
d2d_fillrect 等はこの画像に対して描画される。
d2d_init
hspd2d を初期化する
COM の初期化、DirectWrite ファクトリ、Direct2D ファクトリ、WIC ファクトリを生成する。
d2d_shutdown
hspd2d を解放する
DirectWrite / Direct2D / WIC の各ファクトリ、現在のフォント、その他リソースを解放する。
プログラム終了時に呼ぶこと。
d2d_svg_load
SVG ファイルを読み込んで指定サイズでラスタライズ
ファイルから SVG テキストを読み込み、内部で d2d_svg_load_str に委譲して
ラスタライズする。成功すると新規 image ID を確保して stat に返す。失敗時は -1。
d2d_svg_load_str
SVG 文字列を指定サイズでラスタライズ
SVG 文字列を HGLOBAL → IStream にして ID2D1SvgDocument を構築し、
D3D-backed な ID2D1Bitmap1 にラスタライズ、CPU 読み戻し後 WIC bitmap に展開して
新規 d2d_image として登録する。