=== 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.