Sunday, December 26, 2010

Clixmaker Object Editing

Today I read the Holiday edition of the Globe and Mail, went for a walk, and designed how Clixmaker objects are edited (I modified this post the following Thursday Dec. 30). All Clixmaker objects in a given segment (part of a field) are stored in a list from back to front. Every page (an off-screen area where objects may be stored) also has an object list. Each object is either composed of a single primitive or a group (if this object contains more than one primitive). Each group contains one or more primitives and/or other groups, stored in a list from back to front. A primitive is a rectangle, rounded rectangle, ellipse, polygon, bitmap, or text box, and every primitive has a bounding rectangle. Every object/group/primitive has an optional 3 x 3 linear transformation matrix. Some groups are stored as a link to a group stored in another object. Here are the available commands:
  1. Parent (Left Arrow)
  2. Current Child (Right Arrow)
  3. Up/Next (Up Arrow)
  4. Down/Previous (Down Arrow)
  5. Delete
  6. Cut (Ctrl+X)
  7. Copy (Ctrl+C)
  8. Paste (Ctrl+V)
  9. Insert Rectangle
  10. Insert Rounded Rectangle
  11. Insert Ellipse
  12. Insert Polygon
  13. Insert Bitmap
  14. Insert Text Box
  15. Insert Group
  16. Insert Border
  17. Insert Door
  18. Insert Page/Field
  19. Bring to Front
  20. Send to Back
  21. Move Up (closer to front)
  22. Move Down (closer to back)
  23. Zoom In
  24. Zoom Out
  25. Paste As Link
  26. Merge Group
  27. Merge Segments
  28. Split Segment
  29. Scale
  30. Rotate
  31. Shear Horizontal
  32. Shear Vertical
  33. Identity Matrix
  34. Page/Field
  35. Page Up
  36. Page Down
  37. Select (Click)
  38. Select Beneath (Ctrl+Click)
  39. Edit Name Info
  40. Undo (Ctrl+Z)
The insert rectangle/ellipse/bitmap/text box commands allow the user to select a rectangular area by dragging the mouse cursor from one corner to the opposite corner. The newly inserted primitive is a sibling of the previously selected primitive/group/object, located at the top of the display order of the parent group/field/page. The Insert Group command inserts a temporary, empty placeholder group. To populate this empty group, simply invoke one or more insert commands. Borders are horizontal/vertical lines. Doors control access between segments and between fields. A field is treated as a MS Word table, with variable row heights and column widths. Segments are the cells of that table.

The Paste As Link command is used in conjunction with the Copy command to create a link to another object or part of an object (a group or primitive). The Merge Group command merges all primitives and subgroups of a selected group into one bitmap primitive. The transformation commands (scale/rotate/shear) modify the associated linear transformation matrix (or create a new one if none exists) of the selected object/group/primitive. The Identity Matrix command deletes the associated linear transformation matrix of the selected object/group/primitive. The Page/Field command toggles between the current page and the current field. The Page Up/Down commands traverse the page/field lists. Pressing Page Down at the bottom of the list appends an empty page/field. The Select commands select the primitive clicked on (control-clicking selects primitives beneath the currently selected primitive). Edit Name Info edits the name string and/or modifier strings of the current object.

When an object/group/primitive is selected, its bounding rectangle is surrounded by 8 small black squares at each corner and at the center of each edge. Dragging these squares stretches/squeezes whatever is selected, but has no effect on its associated transformation matrix, if any (however, lower-level transformation matrices may be affected). Dragging anywhere else on a selected object/group/primitive moves it to a new location.

No comments:

Post a Comment