1: 2005-06-04 (土) 21:10:01 [5] | 現: 2024-01-08 (月) 12:58:55 ゲスト [6] | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | [[GUIGUI00_man]] | ||
+ | |||
*説明文の下書きページ | *説明文の下書きページ | ||
-(2005-06-04 : by [[あっきぃ]]) | -(2005-06-04 : by [[あっきぃ]]) | ||
-GUIGUI00のマニュアルを書く際の草稿ページ。自由に使ってください。 | -GUIGUI00のマニュアルを書く際の草稿ページ。自由に使ってください。 | ||
+ | |||
+ | **[[gg00man/graphic]]/lib_flushgraphbox | ||
+ | void lib_flushgraphbox(int opt, struct LIB_WINDOW *win, int x, int y, | ||
+ | int sx, int sy, int skip, void *p) : | ||
+ | |||
+ | 機能:グラフィックボックスをflushする | ||
+ | |||
+ | ビデオメモリに書き込んだ内容をグラフィックボックスに反映させる。ビデオ | ||
+ | メモリにアクセスしたら必ずこれを行う必要がある(リードアクセスしかしてい | ||
+ | ないときはflushしなくてもよい)。 | ||
+ | |||
+ | modeは、16色モードでは0x8001を、フルカラーモードでは0x8004か0x8024を指 | ||
+ | 定する。 | ||
+ | |||
+ | グラフィックボックス全体をflushする時 | ||
+ | x, y : グラフィックボックスオープン時に指定したx_pos, y_posの値 | ||
+ | sx, sy : グラフィックボックスオープン時に指定したx_size, y_sizeの値 | ||
+ | skip : 0 | ||
+ | p : グラフィックボックスのポインタ | ||
+ | (「グラフィックボックスのポインタについて」参照) | ||
+ | |||
+ | グラフィックボックスの一部分をflushする時 | ||
+ | x, y : flushする範囲の左上の座標(window内の座標系で指定する) | ||
+ | sx, sy : flushする範囲のサイズ | ||
+ | skip : (グラフィックボックスのx_size - この時のsx)*(1か2か4) | ||
+ | p : グラフィックボックスのポインタ + この時のy * グラフィックボックスのx_size + この時のx | ||
+ | (「グラフィックボックスのポインタについて」参照) | ||
+ | |||
+ | サンプル:mt_xor(introd), test043 | ||
+ | |||
+ | **[[gg00man/graphic]]/lib_drawline0 | ||
+ | void lib_drawline0(int opt, struct LIB_GRAPHBOX *gbox, | ||
+ | int color, int x0, int y0, int x1, int y1) : | ||
+ | |||
+ | 機能:直線の描画 | ||
+ | |||
+ | グラフィックボックスに直線を一本引く。クリッピングなどの処理は行われな | ||
+ | いため、始点・終点座標は必ずグラフィックボックスに収まるように注意する。 | ||
+ | opt : lib_drawpoint0と同様 | ||
+ | color : 描画する色(0~15) | ||
+ | x0, y0 : 直線の始点座標 | ||
+ | x1, y1 : 直線の終点座標 | ||
+ | |||
+ | サンプル:bballc0(introd) | ||
+ | |||
+ | ***グラフィックボックスのポインタについて | ||
+ | グラフィックボックスのポインタは、グラフィックボックスのモードによって異なるため、次のマクロを使うと便利である。 | ||
+ | |||
+ | /* グラフィックボックスのマクロ */ | ||
+ | #if (!defined(LIB_GBOX_BUF)) | ||
+ | #define LIB_GBOX_BUF(gbox) ((void *) ((char *) (gbox) + 64)) | ||
+ | #define LIB_GBOX_BUF8(gbox) ((unsigned char *) LIB_GBOX_BUF(gbox)) | ||
+ | #define LIB_GBOX_BUF16(gbox) ((unsigned short *) LIB_GBOX_BUF(gbox)) | ||
+ | #define LIB_GBOX_BUF32(gbox) ((unsigned int *) LIB_GBOX_BUF(gbox)) | ||
+ | #endif | ||
*コメント欄 | *コメント欄 | ||
+ | -lib_flushgraphboxは、modeの説明が不十分なので誰か修正お願いします -- [[あっきぃ]] &new{2005-06-04 (土) 21:59:09}; | ||
+ | -lib_drawline0は、これでよかったら[[gg00man/graphic]]に移します -- [[あっきぃ]] &new{2005-06-04 (土) 21:59:56}; | ||
+ | -用語が混乱していませんか…… グラフィックボックスというと, (a)LIB_GRAPHBOX構造体 (b)←の中の配列 (c)ウィンドウに描画される領域 の三つくらいが考えられるのですが, (b)と(c)が混ざってます。どう定義すべきなのか迷ったので, 川合さんの解説@mt_xor0.txtを見ました。(b)はグラフィックボックスのバッファ, (c)がグラフィックボックス と呼ばれているようです。これで統一しませんか? -- [[I.Tak.]] &new{2005-06-10 (金) 08:08:18}; | ||
+ | -「グラフィックボックス」については、(c)に限定しないで、(a)~(c)のどれにでも使える広い言葉だとなんとなく思います。(b)を「グラフィックボックスのバッファ」にしたほうがいいというのは、言われてみるとそうかなと思いました。 -- [[K]] &new{2005-06-10 (金) 13:36:23}; | ||
+ | -まあでも「グラフィックボックスへのポインタ」ってのを「グラフィックボックスのバッファへのポインタ」の省略形であると解釈すれば、用語の混乱はないともいえると思います。だからこのままでも問題ないような・・・。 -- [[K]] &new{2005-06-10 (金) 13:38:21}; | ||
+ | -lib_flushgraphboxのskipに書き足しました。 -- [[K]] &new{2005-06-10 (金) 13:46:27}; | ||
+ | -うーん, まあそうでもいいのかな>省略形。じゃ, あと一つ。「ビデオメモリに書き込んだ内容をグラフィックボックスに反映させる」って, 実際の機能の反対の意味に見えません? -- [[I.Tak.]] &new{2005-06-10 (金) 16:44:46}; | ||
+ | -見えちゃいますねえ。そこは直したほうがよさそうです。 -- [[K]] &new{2005-06-11 (土) 13:30:56}; | ||
+ | |||
#comment | #comment |
(This host) = http://osask.net