*情報 作者名:U D 引用元:[[なでしこプログラム掲示板「装飾表示」>http://www.himanavi.net/cgi/nade-bbs/cbbs.cgi?mode=al2&namber=788&rev=&no=0]] *概要 日本語タグでマークアップした文書を装飾して表示します。 日本語タグのマークアップ仕様については、HTMLを真似ています。 *解説 #image(無題.PNG,width=428,height=554) ***引数 OBJ:描画先 X1:X座標(左上) Y1:Y座標(左上) S:マークアップされた文書 *サンプルプログラム 母艦について タイトルは『装飾表示(テキストマークアップ)』 クライアントW=420 クライアントH=520 黒色で画面クリア 文字色は白色。文字サイズは11 「 これはなでしこで<文字 色=$FF33FF サイズ=13>マークアップテキスト</文字>を表示するための、<改行> <文字 色=$FF33FF サイズ=13>"装飾表示"</文字>関数の<太字>サンプル文章兼説明</太字>です。<改行> <改行><改行> <太字><文字 色=赤色>●</文字>文字タグ</太字> {タグカッコ}文字{タグカッコ閉じ}~{タグカッコ}/文字{タグカッコ閉じ} <改行> タグで囲まれた<太字>波線部分</太字>を指定した属性で装飾します。 <改行> 例){タグカッコ}文字 色=緑色 サイズ=15{タグカッコ閉じ} <文字 色=緑色 サイズ=15>文字</文字>{タグカッコ}/文字{タグカッコ閉じ}<改行> 指定することのできる属性は以下の通りです。 <改行> ・色=COLOR <改行> <文字 色=$FF33FF>なでしこ</文字>で使うことのできる<文字 色=$FF33FF>カラーコードと同様</文字>の指定が可能。<改行> 例) <文字 色=赤色> 色=赤色</文字> <文字 色=RGB(224,224,0)> 色=RGB(224,224,0)</文字> <文字 色=$0000FF> 色=$0000FF</文字> <改行> ・サイズ=SIZE <改行> 文字の大きさを整数値で指定する。<改行> 例)<文字 サイズ=15>サイズ=15 </文字> <改行><改行> <太字><文字 色=赤色>●</文字>太字タグ</太字> {タグカッコ}太字{タグカッコ閉じ}~{タグカッコ}/太字{タグカッコ閉じ}<改行> タグで囲まれた<太字>波線部分</太字>を<太字>太字</太字>にして強調します。<改行> 例){タグカッコ}太字{タグカッコ閉じ}<太字>太字</太字>{タグカッコ}/太字{タグカッコ閉じ}<改行> 指定することのできる属性はありません。<改行> <改行><改行> <太字><文字 色=赤色>●</文字>斜体タグ</太字> {タグカッコ}斜体{タグカッコ閉じ}~{タグカッコ}/斜体{タグカッコ閉じ}<改行> タグで囲まれた<太字>波線部分</太字>を<斜体>斜体</斜体>にして強調します。<改行> 例){タグカッコ}斜体{タグカッコ閉じ}<斜体>斜体</斜体>{タグカッコ}/斜体{タグカッコ閉じ}<改行> 指定することのできる属性はありません。<改行> <改行><改行> <太字><文字 色=赤色>●</文字>改行タグ</太字> {タグカッコ}改行{タグカッコ閉じ}(終了タグなし)<改行> 改行タグを挿入した場所で改行します。<改行> <太字>改行タグがなければこの文書は改行しません。</太字> <改行><改行> 」と母艦の15,25に装飾表示する。 *//本体 #-*-*-*-*-*-*-*-*-*-*-*-*-*-#-*-*-*-*-*-*-*-*-*-*-*-*-*-# #-*-*-*-*-* "装飾表示"命令ライブラリ ここから *-*-*-*-*-# #-*-*-*-*-*-*-*-*-*-*-*-*-*-#-*-*-*-*-*-*-*-*-*-*-*-*-*-# #-----------------# Created By U D #-------------------# #-*-*-*-*-*-*-*-*-*-*-*-*-*-#-*-*-*-*-*-*-*-*-*-*-*-*-*-# !タグカッコ =`<` ※ < !タグカッコ閉=`>` ※ > !F_通常 =1 !F_タグ開始=2 !F_タグ終了=3 ●装飾表示({グループ=?母艦}OBJの{整数=?}X1,{整数=?}Y1へ{文字列=?}Sを|Y1にSと) 状態とは整数=F_通常 もしSが空ならばS=それ もしX1が空ならばX1=基本X もしY1が空ならばY1=基本Y 基本X=X1。基本Y=Y1 フォントとはハッシュ="色={文字色}{~}サイズ={文字サイズ}{~}書体=標準" スタックとは配列。POSとは整数。SIZESとは配列 スタック[0]=フォント。フォントに属性設定 Sの`(<|>|/)`を改行&`$1`&改行へ正規表現置換えて反復 状態で条件分岐 F_通常ならば もし対象が`<`ならば状態=F_タグ開始 違えば 対象のタグカッコを`<`に置換 タグカッコ閉じを`>`に置換 それをOBJの基本X,基本Yへ文字表示 基本X=それの文字幅取得+基本X 文字サイズをSIZESに配列追加 F_タグ開始ならば もし対象が`/`ならば状態=F_タグ終了 違えば、もし対象が`>`ならば状態はF_通常。続ける 違えば # 状態=F_タグ内容 対象の2文字左部分で条件分岐 `文字`ならば フォントはスタック[POS] フォントに対象を属性設定 POS=POS+1。スタック[POS]=フォント `太字`ならば フォントはスタック[POS] フォント@`書体`は`太字` フォントに属性設定 POS=POS+1。スタック[POS]=フォント `斜体`ならば フォントはスタック[POS] フォント@`書体`は`斜体` フォントに属性設定 POS=POS+1。スタック[POS]=フォント `改行`ならば SIZESを配列数値ソート。SIZESを配列逆順 SIZES[1]=文字書体。文字書体=`MS Pゴシック|`&SIZES[0]&`|標準` 基本X=X1。基本Y=`高さ`の文字高さ取得+基本Y 文字書体=SIZES[1]。SIZESは空 F_タグ終了ならば もし対象が`文字|太字|斜体`に正規表現一致するならば POS=POS-1 フォントはスタック[POS] フォントに属性設定 もし対象が`>`ならば状態はF_通常 ●属性設定({参照渡し ハッシュ}Aに{文字列=?}Bを) PREとは整数=1。CNTとは整数=1。STRとは文字列 Bの1から3文字削除。B=B&` ` 必要の間 CNT=BでPREから`=`を文字検索 もしCNTがPREならば抜ける STR=BのPREから(CNT-PRE)文字抜き出す STRで条件分岐 `色`ならば Bを`色=([^ .]+)`で正規表現マッチ A@`色`=EVAL(抽出文字列[0]) CNT=抽出文字列[0]の文字数+CNT+2 /*# EVALで不具合が起きるようならこちらに処理を入れ替え もしSTRが`RGB\((\d+),(\d+),(\d+)\)`に正規表現一致するならば A@`色`=RGB(抽出文字列[0],抽出文字列[1],抽出文字列[2]) 違えば、もしSTRが`#(.+)`に正規表現一致するならば A@`色`=INT(`$`&抽出文字列) 違えば、A@`色`=(STR) #*/ `サイズ`ならば Bを`サイズ=([^ .]+)`で正規表現マッチ A@`サイズ`=INT(抽出文字列[0]) CNT=抽出文字列[0]の文字数+CNT+2 PRE=CNT 文字色=A@`色` 文字サイズ=A@`サイズ` 文字書体=`MS Pゴシック|`&文字サイズ&`|`&(A@`書体`) #-*-*-*-*-*-*-*-*-*-*-*-*-*-#-*-*-*-*-*-*-*-*-*-*-*-*-*-# #-*-*-*-*-* "装飾表示"命令ライブラリ ここまで *-*-*-*-*-# #-*-*-*-*-*-*-*-*-*-*-*-*-*-#-*-*-*-*-*-*-*-*-*-*-*-*-*-# ---- #comment() ----
下から選んでください: