●装飾表示

情報


概要

日本語タグでマークアップした文書を装飾して表示します。
日本語タグのマークアップ仕様については、HTMLを真似ています。

解説



引数

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@`書体`)

#-*-*-*-*-*-*-*-*-*-*-*-*-*-#-*-*-*-*-*-*-*-*-*-*-*-*-*-#
#-*-*-*-*-* "装飾表示"命令ライブラリ ここまで *-*-*-*-*-#
#-*-*-*-*-*-*-*-*-*-*-*-*-*-#-*-*-*-*-*-*-*-*-*-*-*-*-*-#

名前:
コメント:


タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2009年05月31日 17:29
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。
添付ファイル