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

[WitchTech 00852] カラーでの縦画面表示について



お久しぶりです、Rinjianと申します。
今ごろになってカラーライブラリに手を出しました。

さて、今回は縦画面表示させるための回転データ作成の方法に
ついてよくわからないのでご教授いただければ幸いです。

bmpcnv -m0 -cで出力したデータを書き換えるプログラムにより、
右に90度回転させたデータを得ようとしましたが、
実際に表示させてみると、崩れてしまっています。
(つまり、書き換え方が誤っているという。)

以下が問題のプログラムで、カラーモードのデータを操作する
ものです。

書き換え対象のデータを指すポインタを関数に与え、演算を
施します。

例えば、
p = bmp_hoge;
for(i=0; i<64; i++){
 ColorFontCnvRightAngle(p);
 p = p+8;
}
などとして、64キャラクタを書き換えたりします。
(pはunsigned long *として宣言。bmp_hogeは
bmpcnvで生成した配列の名称です。)

void ColorFontCnvRightAngle(unsigned long *p)
{
 int line,row;
 unsigned long *lwp;
 unsigned long tmp,longdata,mask;
 unsigned long linedata[] = {
  0,0,0,0,0,0,0,0,
 };

 lwp = p;
 for(line=0; line<8; line++){
  mask = 0x01010101;
  longdata = *lwp;
  for(row=0; row<8; row++){
   tmp = (longdata&mask)>>row;
   tmp = tmp<<(7-line);
   linedata[row] |= tmp;
   mask = mask<<1;
  }
  lwp++;
 }
 lwp = p;
 for(line=0; line<8; line++){
  *lwp = linedata[line];
  lwp++;
 }
}

上述のプログラムを呼び出さなければ、
横画面用のデータのままできちんと表示されます。
設定してあるモードとデータが食い違っているという
事ではありません。

マニュアル記載の「12.6カラーライブラリ概要」を元に
してはいるものの、とんでもない勘違いをしているのかも
知れないのですが・・・。

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:
Rinjian
E-mail: rinjian@hotmail.com
:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:





ML Archives