VRAM を使って文字列を大文字化

Gonbei さんにまたまた便乗されちゃいました(うれしいです)。

先日のエントリーの文字列のリフレイン。これを VRAM と gzoom を使ってやってます。

正規表現置換で画像処理(HSP) - Gonbeiの日記 - gonbeiグループvramをinstrしてあたり判定 - Gonbeiの日記 - gonbeiグループHSP3ラウンジ ■ 質問以外の どうでもいいスレ 2007の No.48 なんかを見て前から気になっていたんですが、ちょうどいい機会。

VRAM をテキストとして処理したり利用したりするので簡単なものをとりあえずやってみました。減算コピーで小文字アルファベットだけで構成されたテキストを大文字化(小文字アルファベット以外の文字も巻き添えになってしまうし)。

#module
#defcfunc to_upper str _text
    text = _text
    len = strlen( text )
    bufWidth = len / 3 + ( len \ 3 != 0 )
    osel = ginfo_sel
    buffer 29, bufWidth, 1
    mref vram, 66
    memcpy vram, text, len
    gmode GMODE_SUB, bufWidth+2, 2, 256
    color 32, 32, 32
    grect bufWidth / 2, 0, 0
    memcpy text, vram, len
    poke text, len
    gsel osel
    return text
#global

mes to_upper("thequickbrownfoxjumpsoverthelazydog")
mes to_upper("konnnitihakonnnitihaAA")

にしても、このテクニックって黒魔術だなぁ。(参照:プログラ魔法学に関する考察 - 西尾泰和のはてなダイアリー

少しスクリプト修正。 12 の倍数に丸めていましたが、高さが 1 の場合は 4 の倍数を気にする必要はないみたいです。あと 3 で割るのを忘れていました。あと念のために grect する幅を少し大きくしたり。

インフォメーション

公開日時
2007年12月10日 午前8時1分41秒
最終更新日時
2007年12月20日 午後10時15分15秒
カテゴリ
HSP