「●装飾表示」の編集履歴(バックアップ)一覧はこちら
●装飾表示 - (2008/09/16 (火) 22:21:44) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
*情報
作者名: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()
----
*情報
作者名: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)
#ref(http://www26.atwiki.jp/isoroku_be?cmd=upload&act=open&pageid=69&file=%E7%84%A1%E9%A1%8C.PNG,width=428,height=554)
#image(ここに画像のURLを入力,http://www26.atwiki.jp/isoroku_be?cmd=upload&act=open&pageid=69&file=%E7%84%A1%E9%A1%8C.PNG)
***引数
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()
----