====== 画像・HTML表示 ====== [[erabasicリファレンス|リファレンストップ]] · [[erabasicリファレンス_総索引|名前の総索引]] 画像・描画、HTML表示、ツールチップ、リソース指定を調べます。 ===== 命令の説明 ===== ==== PRINT_IMG <文字列式> ==== 行中に指定した画像を表示します。\\ HTML_PRINT命令のタグに相当します。\\ ==== TOOLTIP_SETCOLOR <数式>, <数式> ==== ツールチップの前景色及び背景色を0xRRGGBB形式の数値で設定します。\\ 指定にR,G,B値や文字列を使いたい場合はCOLOR_FROMRGBやCOLOR_FROMNAME関数を使用してください。\\ ==== TOOLTIP_SETDELAY <数式> ==== ツールチップが表示されるまでの時間をミリ秒単位で設定します。\\ ディフォルトは500(ミリ秒)、最大値は32767です。\\ ==== TOOLTIP_SETDURATION int msDuration ==== 以下、私家改造版更新履歴より、\\  ○ツールチップの表示時間を設定する命令TOOLTIP_SETDURATIONを追加    書式:TOOLTIP_SETDURATION [表示時間(ms)]    内容:ツールチップの最大表示時間を[表示時間(ms)]に設定    引数:[表示時間(ms)]:0以上の整数値 0の場合デフォルトの挙動になります、後タイマーの特性上極端に短い時間は想定通りに動かないかもねー ==== HTML_PRINT <文字列式> ==== htmlっぽいタグを利用してPRINTする命令です。\\ 引数がPRINTのような文字列ではなくPRINTSと同じ文字列式でり、自動的に改行するので実際はPRINTSLの動作に近いです。\\ HTML_PRINTによる描画はALIGNMENT、SETFONT、COLOR、FONTSTYLE命令とその類似命令の影響を受けません。\\ これらの効果を得るには全てタグで指定する必要があります。\\ HTML_TAGSPLIT <文字列式>(, <数値変数>, <文字列変数>)\\ 対象文字列をHTML文字列と解釈し、タグと平文に分割して分割数をRESULTに、分割後文字列をRESULTSに代入します。\\ 第二、第三引数が指定されている場合、RESULT、RESULTSの代わりに指定された変数に代入します。\\ 分割処理中にエラーが生じた場合、RESULTに-1が代入されます。\\ HTML_TAGSPLITはタグの内容や対応関係の適否までは検証しません。\\ 分割数がRESULTSの配列サイズを超えた場合、超えた分はRESULTSに代入されません。\\ ==== GCREATE int ID, int width, int height ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ 指定したサイズで指定したIDのGraphicsを作成します。\\ GraphicsのIDは0以上の整数、width、heightは1以上8192以下の間の整数値でなければなりません。\\ 引数がこの範囲を外れるとエラーです。\\ 作成に成功した場合、非0を返します。\\ 指定したIDのGraphicsが既に作成されている場合、0を返します。\\ Graphicsを作り直す場合はGDISPOSE命令で既存のGraphicsを廃棄してください。\\ ==== GCREATEFROMFILE int ID, str filepath ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ resourcesフォルダ内の画像ファイルを相対パスで指定し、その画像を開いてGraphicsを作成します。\\ resourcesフォルダ内のcsvファイルでリソースを宣言した場合と異なり、画像ファイルはロックされません。\\ 作成に成功した場合、非0を返します。\\ 指定したIDのGraphicsが既に作成されている場合はGraphicsの作成に失敗し、この命令は何もせずに0を返して終了します。\\ ファイルが存在しない、画像として認識できない、ファイルのサイズが大きすぎる、などで失敗した場合も0を返します。\\ ==== GDISPOSE int ID ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ 指定したIDのGraphicsを廃棄します。\\ 廃棄に成功した場合、非0を返します。\\ 指定したIDのGraphicsが未作成(廃棄済の場合を含む)の場合、0を返します。\\ GCLEAR int ID, int cARGB\\ (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ 指定したIDのGraphicsの全域を指定した色で置き換えます。\\ 処理に成功した場合、非0を返します。\\ ID又は色指定が不適切な場合はエラーになります。\\ ==== GFILLRECTANGLE int ID, int x, int y, int width, int height ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ 指定したIDのGraphicsに(x, y, width, height)で指定した四角形を描画します。\\ 処理に成功した場合、非0を返します。\\ 描画の色はGSETBRUSH命令によってあらかじめ指定しなければEmueraコンフィグの文字色で描画されます。\\ ==== GDRAWG int destID, int srcID, int destX, int destY, int destWidth, int destHeight, int srcX, int srcY, int srcWidth, int srcHeight ==== ==== GDRAWG int destID, int srcID, int destX, int destY, int destWidth, int destHeight, int srcX, int srcY, int srcWidth, int srcHeight, var cm ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ 指定したdestIDのGraphicsに、指定したsrcIDのGraphicsを描画します。\\ 描画先destのGraphicsの位置及びサイズを4つの整数で、描画元srcのGraphicsの位置及びサイズを4つの整数で指定します。\\ オプションとして、5x5以上の二次元数値配列をcmとして指定することでカラーマトリクスを適用して描画します。\\ colorMatrixは全要素を1/256にして.Net FrameworkのColorMatrixクラスに渡されます。つまり、対角がすべて256である5x5行列が単位行列になります。\\ 処理に成功した場合、非0を返します。\\ 描画先Graphics又は描画元Graphicsのいずれかが未作成であるなどの場合、0を返します。\\ 描画先と描画元Graphicsは同一でも実行可能です。\\ ==== GDRAWGWITHMASK int destID, int srcID, int maskID, int destX, int destY ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ 指定したdestIDのGraphicsに、srcIDのGraphicsを、maskIDのGraphicsをマスクとして適用して描画します。\\ 出力先destIDのGraphics内の描画位置をdestX, destYで指定します。\\ 処理に成功した場合、非0を返します。\\ srcIDとmaskIDの幅及び高さが完全に一致すること、描画領域がdestIDからはみ出さないことが成功の条件です。\\ マスクとして適用して描画するとは、具体的には、マスク画像の青の値を不透明度としてソース画像に適用して描画することです。\\ 例えば、マスク画像が完全に白一色(つまり全部の場所で青色がMAX)の場合、ソース画像はマスクなしの場合と同様にそのまま描画されます。\\ マスク画像が完全に黒一色(つまり全部の場所で青色が0)の場合、ソース画像は完全透明として扱われ何も起きません。\\ この命令の処理はGPUではなく、CPUがシングルスレッドで解決します。速度には期待しないでください。\\ ==== GDRAWSPRITE int ID, str sprName ==== ==== GDRAWSPRITE int ID, str sprName, int destX, int destY ==== ==== GDRAWSPRITE int ID, str sprName, int destX, int destY, int destWidth, int destHeight ==== ==== GDRAWSPRITE int ID, str sprName, int destX, int destY, int destWidth, int destHeight, var cm ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ 指定したIDのGraphicsに指定したsprNameのSpriteを描画します。\\ オプションとして、Graphics内部の位置をdestX,destYで指定することでその位置にSpriteを描画します。\\ また、描画幅及び高さをdestWidth,destHeightで指定することでそのサイズに拡大又は縮小してSpriteを描画します。\\ さらに、cmに5x5の行列を指定することでカラーマトリクスを適用して描画します。\\ なおSpriteのサイズはSPRITEWIDTH(str imgName), SPRITEHEIGHT(str imgName)関数で取得できます。\\ 処理に成功した場合、非0を返します。\\ アニメーションスプライトを指定した場合、実行時のフレーム1つが描画されます。\\ ==== GSETCOLOR int ID, int cARGB, int x, int y ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ 指定したIDのGraphicsの指定位置のピクセルを指定した色に置き換えます。\\ 処理に成功した場合、非0を返します。\\ この命令はそれほど高速ではありません。\\ GGETCOLOR命令と合わせて大きな画像の全体を書き換える試みは実用的な時間内には終わりません。\\ ==== GSETBRUSH int ID, int cARGB ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ 指定したIDのGraphicsに指定した色のブラシを設定します。\\ 指定したブラシはGDISPOSE命令でGraphicsが破棄されるまで記憶されます。\\ 処理に成功した場合、非0を返します。\\ ここで設定した色のブラシがGFILLRECTANGLE命令で使用されます。\\ ==== GSETFONT int ID, str fontName, int fontSize ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ 指定したIDのGraphicsに指定した名前およびサイズのフォントを設定します。\\ 指定したフォントはGDISPOSE命令でGraphicsが破棄されるまで記憶されます。\\ 処理に成功した場合、非0を返します。\\ 設定したフォントを利用する命令・関数はバージョン1.824現在には存在しません。\\ ==== GSETPEN int ID, int cARGB, int penWidth ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ 指定したIDのGraphicsに指定した色及び幅のペンを設定します。\\ 指定したペンはGDISPOSE命令でGraphicsが破棄されるまで記憶されます。\\ 処理に成功した場合、非0を返します。\\ 設定したペンを利用する命令・関数はバージョン1.824現在には存在しません。\\ ==== GCREATED int ID ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ 指定したIDのGraphicsが作成済みであるなら1を、未作成(廃棄済を含む)なら0を取得します。\\ ==== GWIDTH int ID ==== ==== GHEIGHT int ID ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ 指定したIDのGraphicsの幅または高さを取得します。\\ Graphicsが未作成(廃棄済を含む)なら0を返します。\\ ==== GGETCOLOR int ID, int x, int y ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ 指定したIDのGraphicsの指定位置の色を0xAARRGGBB形式の整数値で取得します。\\ Graphicsが未作成又は廃棄済み、あるいはx,yが画像外の位置であるなら-1を返します。\\ この命令のみ、失敗した場合に0ではなく-1を返すことに注意してください。\\ 黒色かつ完全透明の位置の色を取得した場合に、この命令は0を返します。\\ ==== GSAVE int ID, int fileNo ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ 指定したIDのGraphicsの画像を、fileNoの番号を付けたファイル名でpng形式で出力し保存します。\\ 処理に成功した場合、非0を返します。\\ ==== GLOAD int ID, int fileNo ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ fileNoの番号を付けたファイル名の画像を開き、Graphicsを作成します。\\ 動作としてはCREATEFORMFILE命令とほぼ同じですがresoucesフォルダ内の画像ではなくGSAVE命令で保存した画像から作成する点が異なります。\\ 処理に成功した場合、非0を返します。\\ 指定したIDのGraphicsが既に作成されている場合はGraphicsの作成に失敗し、この命令は何もせずに0を返して終了します。\\ ==== SPRITECREATE str spriteName, int gID ==== ==== SPRITECREATE str spriteName, int gID, int x, int y, int width, int height ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ gIDのGraphicsの一部または全部を元にして、spriteNameで指定したリソース名を持つスプライトを作成します。\\ (x, y, width, height)を指定することでGraphicsのその部分をスプライトとして切り取れます。\\ 作成に成功した場合、非0を返します。\\ 同じリソース名のスプライトが既に存在するなどで失敗した場合、0を返します。\\ スプライトは親GraphicsのIDと切取位置を記憶しているだけなので、親Graphicsに変更があるとスプライトも変更されます。\\ また、親Graphicsが破棄されるとスプライトも破棄された扱いになります。\\ 作成したスプライトはresoucesフォルダ内のcsvで宣言したリソースとほぼ同様に扱うことができます。\\ 例えばPRINT_IMG命令やHTML_PRINTのimgタグなどで使用できます。\\ ==== SPRITEANIMECREATE str spriteName, int width, int height ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ spriteNameで指定したリソース名を持つ、width及びheightで指定したサイズのアニメーションスプライトを作成します。 作成に成功した場合、非0を返します。\\ 同じリソース名のスプライトが既に存在するなどで失敗した場合、0を返します。\\ アニメーションさせるためにはSPRITEANIMEADDFRAME命令によってフレームを追加する必要があります。\\ アニメーションスプライトに関する注意点については、resoucesも参照してください。\\ ==== SPRITEANIMEADDFRAME string spriteName, int gID, int x, int y, int width, int height, int offsetx, int offsety, int delay ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ spriteNameで指定したリソース名を持つアニメーションスプライトにフレームを追加します。\\ gIDで指定したGraphicsの(x, y, width, height)で指定した四角形の範囲をフレームとし、スプライト左上からoffsetx, offsetyの位置に配置します。\\ アニメーションスプライトの作成時に設定したサイズの範囲から外れた部分は描画されません。\\ delayにはこのフレームを表示する時間をミリ秒単位で指定します。\\ spriteNameのリソース名が存在しない、又はアニメーションスプライトでない場合はこの命令は失敗し、何もしません。\\ フレームの追加に成功した場合1を、失敗した場合は0を返します。\\ ==== SPRITEDISPOSE string spriteName ==== spriteNameで指定したリソース名を持つスプライトを廃棄します。\\ 廃棄に成功した場合、非0を返します。\\ この命令はスプライトの元となったGraphics等には影響しません。\\ Graphicsに割り当てられたメモリを解放するにはGDISPOSE命令を使用してください。\\ ==== SPRITEGETCOLOR string spriteName, int x, int y ==== spriteNameで指定したリソース名を持つスプライトの指定位置の色を0xAARRGGBB形式の整数値で取得します。\\ spriteNameが未作成又は廃棄済み、あるいはx,yが画像外の位置であるなら-1を返します。\\ この命令のみ、失敗した場合に0ではなく-1を返すことに注意してください。\\ 黒色かつ完全透明の位置の色を取得した場合に、この命令は0を返します。\\ ==== SPRITECREATED str spriteName ==== 指定した名称のスプライトが作成済みであるなら1を、未作成又は廃棄済みであるなら0を返します。\\ ==== SPRITEWIDTH str spriteName ==== ==== SPRITEHEIGHT str spriteName ==== 指定した名称のスプライトの幅または高さを取得します。\\ スプライトが未作成又は廃棄済みであるなら0を返します。\\ ==== SPRITEPOSX str spriteName ==== ==== SPRITEPOSY str spriteName ==== 指定した名称のスプライトの相対位置のX、Yを取得します。\\ スプライトが未作成又は廃棄済みであるなら0を返します。\\ 相対位置のX、Yが0なのか未作成又は廃棄済であるのかの区別には別途SPRITECREATEDを呼び出してください。\\ ==== SPRITESETPOS str spriteName, int posx, int posy ==== 指定した名称のスプライトの相対位置のX、Yを設定します。\\ ==== SPRITEMOVE str spriteName, int movex, int movey ==== 指定した名称のスプライトの相対位置のX、Yに指定した値を加算します。\\ つまり、\\ SPRITESETPOS spriteName, SPRITEPOSX(spriteName) + movex, SPRITEPOSY(spriteName) + movey と同等です。\\ ==== CBGSETG int ID, int x, int y, int zdepth ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ IDで指定するGraphicsをクライアント領域に表示するように設定します。\\ (x, y)に0を指定した場合、クライアント領域の左下と画像の左下が一致するように表示されます。\\ xは右方向が正、yは下方向が正、zdepthは画面奥方向が正です。\\ zdepthは0以外の値を指定します。通常の文字描画がzdepth==0に相当し、zdepthが負であれば文字よりも手前に描画されます。\\ ==== CBGSETSPRITE str spriteName, int x, int y, int zdepth ==== spriteNameで指定したリソース名を持つスプライトをクライアント領域に表示するように設定します。\\ (x, y)に0を指定した場合、クライアント領域の左下と画像の左下が一致するように表示されます。\\ xは右方向が正、yは下方向が正、zdepthは画面奥方向が正です。\\ zdepthは0以外の値を指定します。通常の文字描画がzdepth==0に相当し、zdepthが負であれば文字よりも手前に描画されます。\\ ==== CBGCLEAR ==== CBGで始まる各種CBG系命令で設定した背景画像の設定を全て解除します。\\ ==== CBGCLEARBUTTON ==== CBGSETBUTTONSPRITE命令で設定したボタンの設定を解除します。\\ ==== CBGREMOVERANGE int zmin, int zmax ==== CBGSETG、CBGSETSPRITE、CBGSETBUTTONSPRITE命令で設定した画像のうち、Z深度がzmin以上zmax以下である画像を設定解除します。\\ ==== CBGREMOVEBMAP ==== CBGSETBMAPG命令で設定したボタンマップの設定を解除します。\\ ==== CBGSETBMAPG int ID ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ IDで指定するGraphicsをクライアント領域のボタンマップとして設定します。\\ ここで設定したボタンマップはCBGSETBUTTONSPRITE命令及びINPUTMOUSEKEY命令に影響します。\\ ボタンマップ画像は表示はされませんがCBGSETG命令で設定した画像と同様に画面左下と画像左下位置が一致するように配置されます。\\ マウスカーソル直下のボタンマップ画像の色が、ボタンの値として認識されます。\\ ただし、色のアルファ値が255でない(透明又は半透明である)ときにはボタンの値としては認識されません。\\ ==== CBGSETBUTTONSPRITE int button, str spriteName, str spriteNameB, int x, int y,int zdepth ==== ==== CBGSETBUTTONSPRITE int button, str spriteName, str spriteNameB, int x, int y,int zdepth, str tooltipmes ==== (※描画方法がGRAPHICS又はTEXTRENDERERのときのみ使用可能)\\ CBGSETBMAPG命令で設定したボタンマップと連動して選択可能なボタンを設定します。\\ マウス直下のボタンマップ画像の色の0xRRGGBB値が、引数buttonに等しい時に表示されるスプライトをspriteNameB、それ以外のときに表示されるスプライトをspriteNameに指定します。\\ spriteName又はspriteNameBは空文字列を指定することができ、そうした場合には非選択中又は選択中に何も表示しません。\\ x, y, zdepthについてはCBGSETSPRITEと同じです。基準位置(x,y) = (0,0)が画面左下と画像左下が一致する位置であることに注意してください。\\ オプションで当該ボタンを選択中に表示されるツールチップ文字列をtooltipmesで指定することができます。\\ 同じbuttonの値に複数のCBGSETBUTTONSPRITEを割り当てることができ、また、ボタンの位置と一致する必要はありません。\\ そうした場合、ツールチップについては画像のxy位置とは関係なく、ツールチップ文字列が設定された中で最もzdepthが大きいもの(最先に描画され、最奥に見えるもの)の表示が優先されます。\\ spriteNameで指定したリソース名を持つスプライトをクライアント領域に表示するように設定します。\\ (x, y)に0を指定した場合、クライアント領域の左下と画像の左下が一致するように表示されます。\\ xは右方向が正、yは下方向が正、zdepthは画面奥方向が正です。\\ zdepthは0以外の値を指定します。通常の文字描画がzdepth==0に相当し、zdepthが負であれば文字よりも手前に描画されます。\\ ==== SETANIMETIMER int time ==== アニメーションスプライト用にミリ秒単位で再描画間隔を指定します。\\ Emueraは通常はINPUT等の入力待ち中に再描画を行いません。\\ この命令で再描画間隔を設定することでINPUT等の入力待ち中に画像をアニメーションさせることができます。\\ なお、TINPUTなどの時間切れ処理のある命令中には再描画を行いません。\\ 実際の描画間隔はコンピュータの状態により、指定した時間よりもやや遅れます。\\ したがって描画間隔をアニメーションのdelayの値と同じ値にすると頻繁にフレームが飛ぶことになります。\\ delayよりも十分に短い間隔を指定してください。\\ この命令はコンフィグの「フレーム毎秒」の項目とは無関係です。\\ また、REDRAW命令による再描画抑止の効果を受けません。\\ ---- ===== HTML表示と関連命令・関数 ===== ここではHTML_PRINT命令を始めとするhtml関連命令を解説します。\\ 関連命令を使うことにより、htmlと類似した文法で表示内容を指定できます。\\ ==== HTML_PRINT ==== htmlっぽいタグを利用してPRINTする命令です。\\ 引数がPRINTのような文字列ではなくPRINTSと同じ文字列式であり、自動的に改行するので実際はPRINTSLの動作に近いです。\\ HTML_PRINTによる描画はALIGNMENT、SETFONT、COLOR、FONTSTYLE命令とその類似命令の影響を受けません。\\ これらの効果を得るには全てタグで指定する必要があります。\\ <タグ名 属性='属性値'>テキストという形で使用します。\\ 属性値は'〜'または"〜"で囲う必要があります。\\ Emueraにおける文字列との区別のために、'〜'で囲うことを推奨します。\\ === p ===

テキスト

pタグは文字列の前にのみ置くことができ、

は最後にのみ置くことができます。\\

は省略してもかまいません。\\ :align属性|必須\\ ALIGNMENT命令に相当します。left, center, rightの三種が指定できます。\\ === nobr === テキスト PRINTSINGLE命令による描画に相当します\\ このタグをつけると描画領域を越えたことによる暗黙の改行が行われなくなります(
による明示の改行は可能です)\\ ただしEmueraはブラウザと違って横方向にスクロールできないのでウインドウ幅を越えた分は見えなくなります。\\ は最初のテキストより前にのみ置くことができ、は最後のテキストより後のみ置くことができます。\\ は省略しても構いません\\ === br === テキスト
改行します。\\ この効果は表示行の改行なのでいくつ
があってもCLEARLINEやLINECOUTでは一行とみなされます。\\ === button, nonbutton === テキスト buttonは囲った部分のテキストをクリック可能なボタンにします。\\ nonbuttonは囲った部分のテキストをボタンでないテキストとして表示します。\\ :value属性|buttonにのみ指定できます。\\ valueを省略した場合、クリック不可のと同様の非ボタンになります。\\ :title属性|ボタンをポイントしたときに表示されるツールチップの表示内容を指定します。\\ :pos属性|alignがleftかつnobrタグが使用されている場合にのみ使用できます。\\ 画面左端からの位置をフォントサイズに対する%で指定します。\\ 例えばならば「   ボタン」とほぼ同じ位置にボタンが書かれます。\\ === font === テキスト 囲った部分のフォント、表示色、ボタンの選択中表示色、を変更します\\ このタグは入れ子にすることができます\\ :face属性|フォント名を指定します。空文字列を指定した場合、コンフィグで指定されたフォントになります。\\ 指定されたフォントが存在しないかサポートされない場合、「Microsoft Sans Serif」が代わりに使用されます。\\ (これは .Net FrameworkのSystem.Drawing.Fontクラスの仕様によります)\\ :color属性|テキストの表示色を指定します。\\ 色指定は'#FF0080'のような16進数形式か'red'、'blue'のような単語形式で指定します。\\ 色名は.Net FrameworkのColor構造体の定義色に準じます。\\ ただしTransparentは色名として指定できません。\\ :bcolor属性|ボタンの選択中表示色を指定します。\\ === b, i, u, s === 太字, イタリック, アンダーライン, 打消し線 囲った部分の文字をそれぞれ太字、イタリック、アンダーライン付、打消し線付にします\\ === img === 行内に画像を表示します。\\ 画像を準備する方法はリソース設定を参照してください。\\ :src属性|必須\\ resourcesフォルダのcsvに指定したリソース名を指定します\\ heightやwidthを指定しない場合、縦横比を維持したまま、縦幅がフォントサイズと一致するように縮小又は拡大して表示されます。\\ 描画インターフェイスがWINAPIの場合、アルファブレンドは行われません。\\ :srcb属性|resourcesフォルダのcsvに指定したリソース名を指定します\\ srcbにはボタン選択時に表示されるべきリソース名を指定します。\\ 省略した場合srcと同一画像が使われます。\\ 画像はsrcと同じサイズに縮小又は拡大して表示されます。\\ :height属性|表示サイズの縦幅をフォントサイズに対する%で指定します。省略すると100です。\\ 負の値を指定した場合、画像を縦に反転して表示します。\\ :width属性|表示サイズの横幅をフォントサイズに対する%で指定します。省略すると0です。\\ 0の場合、元画像の縦横比を維持する値になります。\\ 負の値を指定した場合、画像を横に反転して表示します。\\ :ypos属性|表示位置の縦軸位置をフォントサイズに対する%で指定します。省略すると0です。\\ 「行の高さ」ではなく「フォントサイズ」が基準であることに注意してください。\\ 横軸位置の調整にはやbuttonのpos属性を利用してください。\\ === shape ===  行中に指定した図形を描画します。\\ :type属性|必須\\ 描画する図形のタイプを指定します。\\ rect又はspaceが使用可能です。\\ * type='rect'\\ 長方形を描画します。\\ paramには1又は4つの数字を指定します。\\ paramが1つのとき長方形の横幅を指定します。\\ は横幅がフォントサイズの400%である長方形を描画します。\\ paramが4つのときx,y,横幅,縦幅の順で指定します。\\ は行の上下中央に縦幅がフォントサイズの50%の長方形を描画します。\\ param='400' はparam='0,0,400,100'と同じ意味になります。\\ * type='space' paramに指定した幅だけ何も表示しません。\\ 例えばはフォントサイズの400%の区間だけ何も描画しません。\\ これは全角スペース4つ分とおおよそ同じです。\\ :param属性|必須\\ 図形描画のためのパラメータをフォントサイズとの比率(百分率)で指定します。\\ 複数の値を指定する場合はカンマで区切ります。\\ :color属性|図形の色を指定します。指定のフォーマットはタグと同じです。\\ :bcolor属性|図形のボタン選択中の色を指定します。指定のフォーマットはタグと同じです。\\ === 文字参照 === &と;で囲まれた単語があるとそれを文字参照として処理します。\\ 対応している文字参照は& > < " ' 及び &#nn; &#xnn; です。\\ === コメント === html解釈にあたり、で囲われた文字は無視されます\\ ===== 関連命令 ===== ==== HTML_TAGSPLIT <文字列式>(, <文字列変数> , <数値変数>) ==== 対象文字列をHTML文字列と解釈し、タグと平文に分割して分割数をRESULTに、分割後文字列をRESULTSに代入します\\ 第二、第三引数が指定されている場合、RESULTS、RESULTの代わりに指定された変数に代入します。\\ 分割処理中にエラーが生じた場合、RESULTに-1が代入されます。\\ HTML_TAGSPLITはタグの内容や対応関係の適否までは検証しません。\\ 分割数がRESULTSの配列サイズを超えた場合、超えた分はRESULTSに代入されません。\\  例えば、\\  HTML_TAGSPLIT "

あいう

"
 であれば、\\  RESULTS:0 =

 RESULTS:1 = あ  RESULTS:2 =  RESULTS:3 = い  RESULTS:4 =  RESULTS:5 = う  RESULTS:6 =  RESULTS:7 =

 RESULT = 8
 と解体されます。\\ ===== 関連関数 ===== ==== str HTML_POPPRINTINGSTR() ==== 現在PRINT中で改行待ちの文字列バッファをHtml形式で取得し、バッファを空にします\\ pタグはつかないのでALIGNMENT命令によるalignは反映されません。\\ ==== str HTML_GETPRINTEDSTR(int lineNo) ==== 表示済みのラインのうちlineNoで指定した行の内容をhtml形式の文字列として取得します。\\ 行の数え方はLINECOUNTやCLEARLINE命令と同じです。\\ ==== str HTML_ESCAPE(str value) ==== 対象の文字列をHtml向けにエスケープ(文字参照に変換)します。\\ アンエスケープにはHTML_TOPLAINTEXT関数を使用します。\\ ==== str HTML_TOPLAINTEXT(str value) ==== 対象のhtml文字列をプレーンテキストに変換します。\\ 具体的には、文字列からhtmlタグを削除し文字参照を展開します。\\ ---- ===== 画像・リソースファイルの指定 ===== ここではEmueraで画像を表示するためのリソースファイルの準備方法を解説します。\\ リソースファイルは実行ファイルのあるフォルダにresourcesフォルダを作成しその中に置きます。\\ ファイルはresourcesフォルダ内であればサブフォルダにおいてもかまいません(1.823以降)。\\ ==== リソース指定ファイル(csv) ==== resourcesフォルダにcsv形式のテキストを置くとリソース指定ファイルとして読み込まれます。 書式は以下の通りです。\\ ;コメント行 リソース名A,元ファイル名, x, y, width, height, posx, posy リソース名B,元ファイル名, x, y, width, height, posx, posy > \\ > リソース名C,ANIME, width, height\\ > リソース名C,元ファイル名, x, y, width, height, posx, posy, delay\\ > リソース名C,元ファイル名, x, y, width, height, posx, posy, delay\\ * コメント行 セミコロンで始まる行はコメント行として無視されます。\\ * スプライト > リソース名A,元ファイル名, x, y, width, height, posx, posy\\ 上記の形式により"リソース名A"を持つスプライトを作成できます。\\ リソース名はのsrc属性の属性値として使用される名前です。\\ また、SPRITECREATED("リソース名A")のような形でも使用されます。\\ リソース名は他のリソースの名前と重複してはいけません。\\ 元ファイル名は画像ファイルの名前です。拡張子を含めて指定します。csvファイルからみた相対パスで指定します。\\ csvファイルよりも上位の階層にある画像ファイルを指定することはできません。\\ csvファイルと同一かそのサブフォルダにある画像ファイルを指定してください。\\ x, y, width, heightには元画像の中の使用する部分をピクセル単位で指定します。\\ x, y, width, heightは省略することもでき、その場合は画像全体が使用されます。\\ posx, posyには画像の相対位置を指定します。この値はSPRITEPOSやSPRITEMOVE命令によって動的に変更できます。\\ posx, posyは省略することもでき、その場合は0,0を指定したことになります。\\ * アニメーションスプライト > リソース名C,ANIME, width, height\\ > リソース名C,元ファイル名, x, y, width, height, offsetx, offsety, delay\\ > リソース名C,元ファイル名, x, y, width, height, offsetx, offsety, delay\\ > ……\\ 上記の形式により"リソース名C"を持つアニメーションスプライトを作成できます。\\ アニメーションスプライトを作成するには、ファイル名の代わりにANIMEと記載した行を作り、スプライト全体のサイズを指定します。\\ このwidth, heightは正の整数でなければなりません。省略することはできません。\\ 次の行以降に、アニメーションの各フレームとなる画像を指定します。\\ 各フレームの定義の仕方は通常スプライトと同じです。\\ delayにはそのフレームが表示される時間をミリ秒単位で指定します。省略した場合1000msになります。\\ 注意点として、Emueraは標準ではINPUT等の待機時間に再描画を行わないため、アニメーションスプライトは特定のフレームで静止しているように見えます。\\ SETANIMETIMER命令を実行してINPUT中に再描画を行うように指示して下さい。\\ SETANIMETIMER命令の詳細は命令の解説を参照してください。\\ ==== 画像ファイル ==== 画像の表示のためには画像ファイルが必要です。\\ 画像ファイルはbmp、jpg、png形式の何れかで用意しresourcesフォルダ内に置きます。\\ Emuera1.823ではERBスクリプト中で画像ファイルを直接指定することはできません。\\ リソース指定ファイルで指定したリソース名からのみアクセスできます。\\ ==== 注意点 ==== csvファイルで指定された全ての画像ファイルはEmueraの起動時にメモリ上に展開され終了するまでメモリを占有します。\\ 大量の画像ファイルを読ませるよりも画像を単一のファイルに合成し範囲を指定して利用した方がメモリ的にも速度的にも有利と思います。\\ コンフィグの描画インタフェースにWINAPIを指定している場合はGDIにより処理され、アルファブレンドは行われません。\\ 描画インタフェースがGraphics又はTextRendererの場合にはGDI+により処理され、アルファブレンドが行われます。\\ 拡大縮小もWINAPI(GDI)とGraphics又はTextRenderer(GDI+)でやや異なります。\\ ==== HTML_PRINT_ISLAND(str VALUE , {int LAYER = 0} ) ==== * TAGを用いた記法はHTML_PRINTと同じだが、行情報に依存しない。 * このため、<div>タグでabsolute系の指定をしないとどこにも表示されない。 * 行情報に依存しないため、通常のPRINT命令と違っていくらスクロールしても消えることがない * 第二引数では描画するレイヤーを指定する。値の大きいレイヤーほど前面に表示される。どれだけ値が小さくても、PRINT命令による描画よりも前に表示される。 ==== HTML_PRINT_ISLAND_CLEAR() ==== * HTMLPRINT_ISLAND で宣言した領域を破棄し、表示を消す。 * この命令を行うまで常にHTML_PRINT_ISLANDの内容は表示され続ける。 * 第一引数に数値を指定した場合、HTML_PRINT_ISLANDの第二引数で指定したレイヤーだけを破棄する。\\ 省略した場合、すべての領域を破棄する。 ==== GDRAWTEXT ==== * 指定したIDのGraphicsの、座標x・座標yを起点に、TESTの内容の文字を描画する。 * 文字の色、フォントなどはGSETFONT命令で指定する ==== HTML_PRINT 第二引数 ==== * HTML_PRINT命令の第一引数が追加された。(HTML_PRINT "test", 1 のように記述する) * この引数が真のHTML_PRINTは改行しない。 * この状態でWAITをしても改行されずに同じ行での出力が続行され、[PRINTN]命令のように扱える。 ==== HTML_PRINT <button><nonbutton>タグ ==== * <button>タグにおける[title]属性で表示するツールチップ内のフォントがオプションによるフォント指定の影響を受けるようになった。 * これにより旧来は半角フォントだったのでメイン画面の描写と揃えやすくなった。 ==== HTML_PRINT<font>タグ ==== * 属性sizeを追加。<font size='x'>の様に指定する。 * コンフィグのフォントサイズに対してX%のサイズで表示するようになる。 * 表示する行の高さ自体は変わらないため、大きくした場合は前の行に被って来る事に注意。 ==== INPUTMOUSEKEY ==== * InputMouseKeyで入力を検知した場合にマウス位置にあるボタンのIDをRESULT(S):5に返すように拡張 ==== fontフォルダ ==== * Emueraと同じフォルダ内にfontフォルダがあるなら、その中に置いてあるフォントファイル(TTF、OTF)を読み込み、インストールしているものとしてEmueraで使用可能になる。 ==== HTML関連 ==== === <div></div> === HTML_PRINTに追加された新しいタグ。タグそのものには効果はなく属性を設定することで出力される内容に影響を与える。\\ * ※このタグで囲った文字列は、HTML_PRINT中に基準点を更新しなくなる。例として、下記の命令を実行した場合、「あいうえお」と「かきくけこ」が完全に重なって表示される。 HTML_PLINT "
あいうえお
かきくけこ"
「<div xpos='500' ypos='-1000'><div width='1000' height='300'>hoge</div></div>」 のように、入れ子で記述することも可能。\\ * 属性[xpos = 'int' / ypos = 'int'] * 出力される文字列等の位置がintの数だけ移動する。 * 移動量はフォントサイズに依存しており、フォントサイズのint%となる。つまり100を指定することで全角1文字分移動する。 * '100px'のようにpxをつけて指定した場合はピクセル単位での距離指定となる。出力の情報自体は移動前の行で持っているので * その行が見えない位置にスクロールされると出力された内容が消える。 * 属性[display = 'absolute-lefttop'][display = 'absolute-leftbottom'][display = 'relative'] * relativeはデフォルトの設定で、[xpos/ypos]が相対位置となる。 * absolute-lefttopは絶対位置指定で表示中の画面の左上を基準点とした位置から[xpos/ypos]で指定された位置に描画するようになる。 * absolute-leftbottomは左下が基準となる絶対位置指定となる。 * 絶対位置指定の最中はスクロールなどをしても追従せずに同じ位置に表示され続ける。 * 属性[background_color = '#XXXXXX'] * divのサブエリアの背景を任意の色に変更できる * 属性[height = 'X'] * divのサブエリアの高さを定義する。これを定義にすることにより文字がない部分にも背景色等が及ぶ * 高さはフォントサイズ単位で、pxを付けた場合はピクセル単位となる * 属性[width = 'X'] * divのサブエリアの幅を定義する。これを定義にすることにより文字がない部分にも背景色等が及ぶ * 幅はフォントサイズ単位で、pxを付けた場合はピクセル単位となる * 属性[border_width = 'X'] * エリアの外周の太さXの枠線を引く。 * Xはフォントサイズ単位で、pxを付けた場合はピクセル単位となる * 属性[border_color = '#XXXXXX'] * 枠の任意の色に変更できる * 属性[padding = 'X'] * サブエリアの内周と文字の間の余白を定義する。この属性を定義しない場合、文字が外枠にほぼ密着するのに注意\\ Xはフォントサイズ単位で、pxを付けた場合はピクセル単位となる * 属性[hover-background-color] * この属性を宣言した<div>を<button>タグで囲んだ時、そのボタンにマウスカーソルを合わせると、<div>で指定した領域の背景色がこの色に変わる。 === <font>タグ === * 属性[size] * コンフィグのフォントサイズに対してX%のサイズで表示するようになる。\\ <font size='x'>の様に指定する。 * 表示する行の高さ自体は変わらないため、大きくした場合は前の行に被って来る事に注意。