[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 8 bit indexed color support



鈴木(康)です。
<00ea01bf926c$5af5ba80$0101a8c0@SHIN>の記事において
takemura@netbsd.orgさんは書きました。

  | MC-R500 などの color palette を持つマシンのために、
  | pbsdboot.exe で color map を設定するようにしました。
  | bivideo もこれに対応して WSDISPLAYIO_GETCMAP を
  | サポートしました。
  | 
  | 8bit color の場合には、/dev/ttyE? に対する ioctl で
  | 以下のようにすれば color map が取得できます。
  | 
  |     struct wsdisplay_cmap cmap;
  |     u_char r[256], g[256], b[256];
  |     cmap.index = 0;
  |     cmap.count = 256;
  |     cmap.red = r;
  |     cmap.green = g;
  |     cmap.blue = b;
  |     ioctl(fd, WSDISPLAYIO_GETCMAP, &cmap);
  | 
  | Takemura

了解しました。

# 対応は、ちょっとまってください。
# 最近 時間的にちょっと厳しくなってきています。

color map が取得できるのは嬉しいのですが、
以前の pbsdboot.exe との区別は可能ですか?

  1. ioctl がエラーになる?
  2. 全部 0 

ぐらいをイメージしていますが、どうでしょう?

あと、RGB のパターンは 変更の可能性が
あるのでしょうか?

だとすると 一番近い値を取るようにした方が良さそうですね。

欲しい RGB 値を r g b、
設定されている RGB 値を R G B とすると

      2        2          2
(R - r) + (G -g) + (R - r)

が一番小さいものを取って来れば良い?

たいした演算量ではないと思うんで、初期化のたびに計算してもよさそうですね。

--
					鈴木 康司 @NEC
					suz@hpc.bs1.fc.nec.co.jp
					TEL 0423-33-5381