1: 2003-10-24 (金) 07:33:00 [5] | |||
---|---|---|---|
Line 1: | Line 1: | ||
+ | * テキスト表示関係 [[GUIGUI00_man]] | ||
+ | #contents | ||
+ | ***lib_opentextbox | ||
+ | struct LIB_TEXTBOX * | ||
+ | lib_opentextbox(int opt, struct LIB_TEXTBOX *textbox, int backcolor, | ||
+ | int x_size, int y_size, int x_pos, int y_pos, | ||
+ | LIB_WINDOW *window, int charset, int init_char) : | ||
+ | |||
+ | 機能:ウィンドウにテキストボックスを貼る。 | ||
+ | |||
+ | textboxを0にすると、自動的にmalloc(64 + x_size * y_size * 8)をやって、 | ||
+ | そのアドレスを返す。textboxが0でなければ、返値はtextboxがそのまま返る。 | ||
+ | |||
+ | ・opt == 0x1000 のとき | ||
+ | |||
+ | ウィンドウタイトル専用のテキストボックスを作ります(ウィンドウ一つに対して一 | ||
+ | つ必要です)。backcolorとx_posとy_posとinit_charは必ず0にしてください。windowは | ||
+ | どのウインドウのタイトルであるかを指定するためのもので、lib_openwindow()の返値 | ||
+ | を指定してください。y_sizeは必ず1です。それで、x_sizeにはこのテキストボックスの | ||
+ | 文字数を入れます。ここで一つルールがあり、x_sizeは(ウィンドウのx_size / 8 - 10) | ||
+ | 以下の値にしなければいけません。長いウィンドウタイトルを付けたければ、この条件 | ||
+ | が満たされるようにウィンドウサイズを大きくしておく必要があります。 | ||
+ | |||
+ | この関係式はもっと分かりやすくかけます。以下の不等式が成立するようにサイズを | ||
+ | 決定してください。 | ||
+ | |||
+ | タイトルのx_size * 8 + 80 <= ウィンドウのx_size | ||
+ | |||
+ | ・opt == 0 のとき | ||
+ | |||
+ | 一般のテキストボックスを作ります。backcolorとinit_charは必ず0で、charsetは必 | ||
+ | ず0xc0です。x_sizeとy_sizeはテキストボックスの大きさです。単位はキャラクター単 | ||
+ | 位で、1キャラクターは、横8ドット、縦16ドットです。x_posとy_posはウィンドウの | ||
+ | どこにテキストボックスを貼り付けるかという指示です。テキストボックスの左上の座 | ||
+ | 標をウィンドウ内座標で示します。単位はドット単位です。ただしx_posは8の倍数を指 | ||
+ | 定しなければいけません(これは将来のOSASKでは解消される制限です)。y_posにはそ | ||
+ | ういう制限はありません。windowでどのウィンドウにそのテキストボックスを貼り付け | ||
+ | るかを指定します。やはり、lib_openwindow()の返値を指定してください。当然ですが | ||
+ | 、テキストボックスがウィンドウからはみ出さないようにしてください。テキストボッ | ||
+ | クスは1つのウィンドウにいくつでも付けられますが、テキストボックスが重なること | ||
+ | は許されません。 | ||
+ | |||
+ | ウィンドウタイトル用のテキストボックスでなければ、charsetで自分で作ったキャ | ||
+ | ラクタセットを指定することも可能。この場合、空白に相当する文字コードをinit_char | ||
+ | に指定すること。 | ||
+ | |||
+ | 参考になるサンプル:helloc4(introa) | ||
+ | |||
+ | ***lib_putstring1 | ||
+ | void lib_putstring1(int opt, int x, int y, struct LIB_TEXTBOX textbox, | ||
+ | int color, int backcolor, int base, int length, unsigned char *str) : | ||
+ | |||
+ | 機能: テキストボックスに文字列を書き込む。改行や折り返しはまったく無い。 | ||
+ | |||
+ | optはビットごとに意味がある。 | ||
+ | bit0 (0x0001): 0だと文字の背景色はテキストボックスのデフォルトを使う。 | ||
+ | backcolorは0を渡すこと。 | ||
+ | 1だと文字の背景色としてbackcolorを使う。 | ||
+ | bit1 (0x0002): 0だとフォントは二色。 | ||
+ | 1だとフォントはカラー。このときcolorもbackcolorも0を渡す。 | ||
+ | bit12-13 0x1000にすると、32bitベース+符号なし8ビットのストリングを | ||
+ | 使うという意味。ほかはCでは使いにくそうなので省略。 | ||
+ | bit14(0x4000): guigui00.hでは1に固定されている (マクロに書いてある)。 | ||
+ | |||
+ | x,yはテキストボックス中での座標。キャラクタ単位。 | ||
+ | textboxはテキストボックスのポインタ。 | ||
+ | color, backcolorは文字色と文字背景色。値域は0~15。 | ||
+ | lengthは書き込む文字列の長さ。テキストボックスをはみださないこと。 | ||
+ | strは符号なし8ビット整数の配列へのポインタ。これにbaseを足したものが | ||
+ | テキストボックスにずらずらと書き込まれる。 | ||
+ | |||
+ | 基本: base=0, strにASCII文字列。 | ||
+ | 応用: baseに'0', strに0~9の値など。 | ||
+ | |||
+ | ***lib_loadfontset | ||
+ | void lib_loadfontset(int opt, int slot, int len, void *font) : | ||
+ | |||
+ | 機能: ユーザ定義のフォント集合をスロットに割り当てる。 | ||
+ | |||
+ | フォントは8x16 (または8x8) のドットパターンであり、これを羅列したものを | ||
+ | フォントセットと呼ぶ。 | ||
+ | |||
+ | slotはフォントセットを割り当てるスロット。一つ消費する。 | ||
+ | numはフォント数。 | ||
+ | fontはフォントセットのポインタ。 | ||
+ | |||
+ | ・opt==1 | ||
+ | フォントは8x16のモノクロパターンである。1のビットが文字色、0のビットが | ||
+ | 背景色となる。1バイト中では上位のビットが左。 | ||
+ | |||
+ | (以下未完成) | ||
+ | 参考になるプログラム: introc/fnttstc0.c | ||
+ | |||
+ | ***lib_loadfontset0 | ||
+ | void lib_loadfontset0(int opt, int slot) : | ||
+ | |||
+ | 機能: システム内蔵フォントをスロットに割り当てる。 | ||
+ | |||
+ | ・opt=0x80000001 | ||
+ | slotにANKフォントセットを割り当てる……というのが公式見解だが、その | ||
+ | フォントセットはどう見てもANKのK (Kana) が含まれていない。IBMのターミナル | ||
+ | フォントが256個入ったフォントセットが割り当てられる。 | ||
+ | |||
+ | (以下未完成) | ||
+ | 参考になるプログラム: introc/fnttstc0.c | ||
+ | |||
+ | ***lib_makecharset | ||
+ | void lib_makecharset(int opt, int charset, int fontset, int len, int from, int base) : | ||
+ | |||
+ | 機能: フォントセットに含まれるフォントを文字集合空間にマッピングする。 | ||
+ | |||
+ | フォントセットに含まれるフォントの一部を文字集合空間にマッピングして、 | ||
+ | 実際にテキストボックスで使えるようにする。複数のフォントセットをあわせて | ||
+ | 使う場合は、一連のスロットでマッピングして最後に終端を定義し、最初の | ||
+ | スロットを文字集合のスロットとしてopentextboxに与える。 | ||
+ | |||
+ | optは0。fontset, charsetはスロット。 | ||
+ | fontsetのfrom番からlen個のフォントを、文字集合charsetのbase番から | ||
+ | 割り当てる。 | ||
+ | |||
+ | fontset = len = from = base = 0 にすると終端の定義となる。 | ||
+ | |||
+ | * こめんと欄 | ||
+ | #comment |
(This host) = http://osask.net