Blob Blame History Raw
=== GLOBAL ATTRIBUTES ===

* Height (in tenths of a point) at 0x3C in the first record of the entire file.
* Width (same units) at 0x8 in the record of the first page only.

* Pagemaker doesn't appear to remember which number was entered first. (5.pmd, 5_input_flpped.pmd)
* This stuff doesn't care about portrait vs. landscape. (5.pmd, 5_wide.pmd) 
* Margins don't have an effect either. (2_2_halfinch_margins.pmd)
* For double-sided docs, the bounding box (in shape points, left,top,right,bot) of the left page starts at 0x36
in the global attributes record. The right page follows immediately. For single-sided docs, the bounding box 
is just repeated twice.

Since these are stated with respect to the origin, an easy way to check if the doc is double-sided is to check if
the word at 0x3A (left page right) or 0x3E (right page left) is zero.

=== SHAPE ATTRIBUTES ===
* Origin is the center of the page, or double-sided page combo. Positive y is down.
* Note that the first page is considered a right page, so
  if the doc is double-sided, the origin is the left edge.
* Units are 1/20 of a point (1/1440 of an inch)
* Offset is 0x06 for left position, then goes top, right, bottom. Each are words.
* Offset 0x00 determines type of shape (0x04: rectangle; 0x0c: polygon)
==== POLYGONS ====
* Offset 0x2E is the seqNum of a line set (=record type 0x11)
* Offset 0x38 is 0x3 if the polygon is closed, 0x1 if it is left open. (I think... haven't tested this thoroughly yet)

=== LINE SETS (0x11) ===
* Points are x, y, x, y, ...
* Each value in the above is a word (So 4 bytes total per point)
* Origin and units from "Shape Attributes" above still apply.