View Single Post
Old 10-14-2008, 08:44 PM   #16
thomega
Connoisseur
thomega began at the beginning.
 
Posts: 56
Karma: 22
Join Date: Oct 2008
Location: Würzburg, Germany
Device: iRex DR1000S
BTW: here's what I know about the format so far (the short integers are store low byte before high byte):
Code:
scribble =
    { header : header;
      strokes : stroke list }

header =
    { b01_36 :      36bytes;
      (* 0x010000000000000000000000000000000000000000000000000000000004000000050000 *)
      num_strokes :  2bytes; (* more likely 16bit short than byte *)
      b38_39 :       2bytes  (* Always 0x0000? *) }

stroke =
    { stroke_header : stroke_header;
      points : point list }

stroke_header =
    { b01      	 : 1byte;    (* Always 0x00? *)
      b02_03   	 : 2bytes;   (* Always 3?  16bit short or byte?*)
      b04_05   	 : 2bytes;   (* Always 0x0000? *)
      b06_09   	 : 4bytes;   (* Always 0xB4276842 or 0x5A5A3143? *)
      b10_17   	 : 8bytes;   (* Always 0x0000000000000000? *)
      width      : 2bytes;   (* 16bit short or byte? (the latter would suffice) *)
      b20_21     : 2bytes;   (* Always 0x0000? *)
      num_points : 2bytes;   (* more likely 16bit short than byte *)
      b24        : 1byte     (* Always 0x00? *) }

point =
    { b01    : 1byte;        (* Always 0x00? *)
      y      : 2bytes;
      b04_05 : 2bytes;       (* Always 0x00? *)
      x      : 2bytes;
      b08_09 : 2bytes;       (* Always 0x00? *)
      b10_12 : 4bytes        (* Always 0x000000 for the first point,
             	                0x88D32F or 0xE8021B for the middle points and
                                0xF0B115 or 0xB8A215 for the final point? *) }
thomega is offline   Reply With Quote