ページへ戻る

− Links

 印刷 

gg00man​/Draft のバックアップソース(No.4) :: OSASK計画

osaskwiki:gg00man編集/Draft のバックアップソース(No.4)

« Prev[4]  Next »[5]
[[GUIGUI00_man]]

*説明文の下書きページ
-(2005-06-04 : by [[あっきぃ]])
-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};

#comment

« Prev[4]  Next »[5]