地雷原からの脱出 for CE2
これで一区切りつきました。
WM5のW-ZERO3版(正確にはPPC2003版)から始まり、ポポペ版、CE1版と対応し、最後にCE2版で締めです。
なぜこのCE2版に時間が掛かったかというと、対応機種が多いからですね。
あとは、単純に四角を描くときと直線を描くときのドットのズレが上手く調整できなかったことです。
ドットのズレについては、直線で四角を描くときは、以下のように4本の線を引きますが・・・。
POINT ptArray[5];
ptArray[0].x = x1; ptArray[0].y = y1;
ptArray[1].x = x2; ptArray[1].y = y1;
ptArray[2].x = x2; ptArray[2].y = y2;
ptArray[3].x = x1; ptArray[3].y = y2;
ptArray[4].x = x1; ptArray[4].y = y1;
Polygon(hdcScreen, ptArray, 5);
四角を描くときは、対角線の座標を指定しますが、その時右下は、指定した座標の1ドット内側になります。その為、指定する時は+1して指定することにあります。
Rectangle(hdc, x1, y1, x2+1, y2+1);
ところが、実際にやってみるとなかなかうまく合わせることができず、エミュレータでは良いけど実機ではずれる、MIPSでは良いけどARMではダメ、というのを何度も繰り返していました。
対応機種については、eVC3のHCPproで作るとほとんどの機種で動いてしまいます。
そもそも、CE2の時代に機能が多様化して、爆発的に種類が増えたことにも関係します。
CE1を搭載するHandheldPC1.0(HPC1)は画面の大きさ、色数、形、機能、いろいろな部分で制約が多かった為、どの会社のものでもほとんど同じと言ってよいものしかありませんでしたが、CE2を搭載するHPC2になってから、画面サイズと色数についての制約が事実上消滅したことから多様な機種が作られました。
CE2でPalmSizePC(PsPC)という、後のPockePC(PPC)の原型が誕生しています。ちなみにPPCのOSはCE3とCE4ですね。
これらはやがて消滅し、今のWindowsMobile(WM)となっていきます。WMのOSはCE5とCE6ですね。
ということで、CE2~3の時代の有象無象すべてに対応させようと思うと一筋縄ではいかないということです。
それに比べ、PPC以降はそれらの混乱が収束し、限定された機能で実装する機種ばかりになったことからある意味リリースするのも楽になっています。
これで一区切りつきました。
WM5のW-ZERO3版(正確にはPPC2003版)から始まり、ポポペ版、CE1版と対応し、最後にCE2版で締めです。
なぜこのCE2版に時間が掛かったかというと、対応機種が多いからですね。
あとは、単純に四角を描くときと直線を描くときのドットのズレが上手く調整できなかったことです。
ドットのズレについては、直線で四角を描くときは、以下のように4本の線を引きますが・・・。
POINT ptArray[5];
ptArray[0].x = x1; ptArray[0].y = y1;
ptArray[1].x = x2; ptArray[1].y = y1;
ptArray[2].x = x2; ptArray[2].y = y2;
ptArray[3].x = x1; ptArray[3].y = y2;
ptArray[4].x = x1; ptArray[4].y = y1;
Polygon(hdcScreen, ptArray, 5);
四角を描くときは、対角線の座標を指定しますが、その時右下は、指定した座標の1ドット内側になります。その為、指定する時は+1して指定することにあります。
Rectangle(hdc, x1, y1, x2+1, y2+1);
ところが、実際にやってみるとなかなかうまく合わせることができず、エミュレータでは良いけど実機ではずれる、MIPSでは良いけどARMではダメ、というのを何度も繰り返していました。
対応機種については、eVC3のHCPproで作るとほとんどの機種で動いてしまいます。
そもそも、CE2の時代に機能が多様化して、爆発的に種類が増えたことにも関係します。
CE1を搭載するHandheldPC1.0(HPC1)は画面の大きさ、色数、形、機能、いろいろな部分で制約が多かった為、どの会社のものでもほとんど同じと言ってよいものしかありませんでしたが、CE2を搭載するHPC2になってから、画面サイズと色数についての制約が事実上消滅したことから多様な機種が作られました。
CE2でPalmSizePC(PsPC)という、後のPockePC(PPC)の原型が誕生しています。ちなみにPPCのOSはCE3とCE4ですね。
これらはやがて消滅し、今のWindowsMobile(WM)となっていきます。WMのOSはCE5とCE6ですね。
ということで、CE2~3の時代の有象無象すべてに対応させようと思うと一筋縄ではいかないということです。
それに比べ、PPC以降はそれらの混乱が収束し、限定された機能で実装する機種ばかりになったことからある意味リリースするのも楽になっています。