Hallo,
das Folgende ist ein Versuch, etwas Licht in das Koordinatensystem zu bringen. für die Test eignen sich gut die NavigonWaitCursorIntro.dat (Introanimation) und Keyboard-Layout_ABC.dat. Das animierte NavigonLogo bzw. das ButtonTemplate des ABC-keyboards habe ich einfach durch ein rotes Rechteck ersetzt. Mittels screenshots konnte man gut erkennen, wo die obere-linke Ecke letztlich tatsächlich gelandet ist. Der Test lief auf einem PDA mit VGA-Display (Portrait), die Erkenntnisse dürften jedoch aber auf QVGA und Querformat übertragbar sein (für QVGA dürften es jeweils die halbierten Werte sein). Die Koordinaten für das NavigonLogo beim Intro befinden sich in NavigonWaitCursorIntro.dat an der Stelle 10h, im Original stehen hier die Werte:
0000 5041 0000 8242
Wie schon in mehreren Beiträgen erwähnt sind die Zahlen 40h, 41h, 42h, 43h offensichtlich immer Bestandteil einer Koordinate. Um zu schauen, was es damit auf sich hat, habe ich die Werte nacheinander ausprobiert und bin dann mit der linken oberen Ecke des roten Rechtecks hier gelandet (die VorNullen laß ich ab jetzt der Einfachheit wegen weg):
x,y in DAT -> x,y in dezimal
-------------------------------
0000h,0000h -> 0,0
0040h,0040h -> 4,4
0041h,0041h -> 16,16
0042h,0042h -> 64,64
0043h,0043h -> 256,256
Ein Test mit 0044h ergab nix (noch nicht mal einen Absturz). Den Mathematikern unter uns springt gleich ein gewisser Zusammenhang ins Auge:
4^(0+1) -> 4
4^(1+1) -> 16
4^(2+1) -> 64
4^(3+1) -> 256
Zu erwähnen sei noch, daß ich mir die screenshots mit dem normalen Windows Paint angeschaut habe. Dessen Zählweise beginnt mit 0, d.h. die Ecke links oben ist hier "0,0". Andere Programme zeigen hier evtl. "1,1", spielt letztlich aber keine Rolle. Desweitern ist nicht zwingend die linke obere Ecke des PDA-displays der Ursprung "0,0". dieser kann sich auch woanders befinden (z.B. für das ABC-keyboard ist der Ursprung bei "4,354" (VGA) und die Angaben in der Keyboard-Layout_ABC.dat sind relativ zu diesem Punkt).
Die Zahlen 00h, 40h, 41h, 42h, 43h sind anscheinend also nix anderes als die Basis mehrerer Koordinatensysteme und einer darauf basierenden Vektorlogik, die hier offensichtlich verwendet wird. Die Ziffern vor diesen Zahlen scheinen ein Art "displacement" zu sein. Soweit ich herausgefunden habe, ist dieses auch linear aber für jeden der 40er Bereiche unterschiedlich. Ein Beispiel mit 0Ah (ist dezimal 10) ergab:
0A41h -> 17 = 16+1 = 4^(1+1)+1 bin mir nicht sicher ... es werden aber wohl die (VGA-)Koordinaten 16 bis 63 abgedeckt (QVGA entsprechend die Hälfte: 8 bis 31)
0A42h -> 69 = 64+5 = 4^(2+1)+5 scheinbar immer die Hälfte des displacements
0A43h -> 276 = 256+20 = 4^(3+1)+20 scheinbar immer das Doppelte des displacements
Ein paar mehr Tests konnte die Regeln soweit bestätigen. Der 40er Bereich dürfte die Koordinaten 4 bis 15 abdecken (habe ich nicht getestet). Das "displacement" ist also nur ein relativer Wert. Vielleicht kann das jemand nachtesten, ggf. auch unter QVGA.
der Form halber: Das Ganze ist nur ein Ansatz und noch nicht schlußendlich ausgetestet, d.h. KEINE GARANTIE für das oben Geschriebene !!
Viele Grüße ... Rene