|
|
1.1 root 1: Comments about FATPEL
2:
3:
4: Note:
5: -----
6:
7: You must run "make opendlg" and include the ..\dll directory in your
8: libpath before attempting to make or execute this application.
9:
10:
11: Description:
12: ------------
13:
14: FatPels displays a "magnified" coordinate space with some object
15: rendered into it.
16:
17: This program illustrates the diamond metric, which is:
18:
19: 1) Round control points to the nearest integer.
20: 2) Draw the mathematical object onto an imaginary grid where a diamond
21: surrounds each pel, the tips of which exactly touch the tips of
22: similar diamonds around each surrounding pel.
23: 3) If the object drawn enters the diamond of a pel, turn on the pel.
24: 4) In the case of a tie between pels, turn on the lower one
25: (in whichever dimension has the tie).
26:
27: Gpi actually restricts this rule by requiring that the object
28: touch the cross drawn between opposing vertices of the diamond.
29:
30: To see the effect of rendering different objects, click in the window
31: to add control points, or select a different output primitive from the
32: Primitive menu. You can add points by clicking with the left button,
33: remove them by clicking on them with the right. If you click on a point
34: and hold the button down, you can drag the point around the window, with
35: the mathematical and rendered curves following you. You can insert
36: points into a line segment by clicking on the line.
37:
38: To see the effect of rendering at different scales, resize the
39: pels (menu command: PelSize Set pel size and shape ...).
40: The dimensions of the target coordinate space are determined by how
41: many pels of the given size will fit in the program's window. The
42: sample control points follow the corners of the target space.
43: Resizing the window will cause a reevaluation of how many pels will fit.
44:
45: You can "touch up" a rendered object by entering "edit color" mode, by
46: selecting "Colors Edit pel colors". The cursor shape changes to a
47: hollow diamond to let you know that mouse clicks will affect pel color
48: rather than control point positions. Click on the left button to set a
49: pel to the foreground color (i.e. color of rendered object), or the
50: right button for the background (i.e. field) color.
51:
52: You can see the true (subject to the resolution of your monitor)
53: "mathematical" object by disabling rounding of control points.
54: The control points must be rounded for the object to correspond to
55: the rendered pels, according to rule (1), but it might interest you
56: to see how your intended object is distorted.
57:
58: Note: I repaint the window by drawing one pel into the lower left
59: corner, then calling GpiBitBlt to copy it up a column, then
60: copy the column across to the right. If the lower left corner
61: is clipped, then whatever happens to be covering it will get
62: copied all over the window. This "feature" is for speeding
63: up the repaint. To clean it up, bring the window to the top
64: and issue a redraw command.
65:
66:
67: Program commands:
68: -----------------
69:
70: File
71: Save bitmap ...
72: Allow current "fatpel" screen to be saved as a BMP format file.
73: Note: this command reads the bits that are on the screen, so
74: if there's garbage in the window, it will be saved.
75:
76: About ...
77: Show the credits and version number.
78:
79: Display
80: Rendered object
81: Display the mathematical object rendered into the small bitmap,
82: as fat pels.
83:
84: Mathematical object
85: Display the "mathematical" object, i.e. drawn to the original
86: coordinates in the window, rather than the transformed down
87: coordinates in the small bitmap.
88:
89: Control points
90: Display markers for the control points.
91:
92: Crosshairs
93: Display the crosshairs in the center of each pel.
94:
95: Pel borders
96: Draw a border (in the crosshair color) around each pel.
97:
98: Rounded control points
99: Round the control points before drawing, to mimic the way
100: Gpi does it. To see whether the curve follows the
101: diamond metric correctly, the mathematical object must be
102: drawn with its control points rounded to the nearest pel.
103: Note: Selecting control points is difficult with this option on,
104: because they are not displayed at their true locations.
105:
106: Auto redraw after changes
107: Automatically redraw the image after any changes.
108:
109: Primitive
110: None
111: Don't draw anything on the grid.
112:
113: GpiPolyline
114: GpiPolyFillet
115: GpiPolySpline
116: GpiPointArc
117: Draw with the given primitive. In the case of primitives which
118: require points in groups of a given size (e.g. GpiPolySpline),
119: some points may be truncated when calling GPI.
120:
121: Colors
122: Set colors ...
123: Allows various colors used by the program to be changed.
124: In RGB mode, the color values are presented in hexadecimal
125: notation, since it's easier to see the different color
126: components that way. You can still type in decimal numbers.
127: In RGB mode, dithering is allowed. Note that when going
128: from RGB to non-RGB (default color index table) mode, the
129: values are mapped to their nearest equivalents on your
130: display device.
131:
132: Edit pel colors
133: Sets the mouse pointer mode to "edit color". The pointer shape
134: will change to a hollow diamond. Click with the left button to
135: change a fat pel to the rendered object's color. Click with the
136: right button to set a pel to the field color. Select this command
137: again to return to "edit control point" pointer mode.
138:
139: PelSize
140: Set pel size and shape ...
141: Set the pel size to whatever is desired.
142:
143: Drag pel size
144: Allows the pel size to be specified by dragging a rectangle on the
145: window. The rectangle must be dragged from lower left to upper
146: right. The cursor will change when a button is held down, and
147: a tracking rectangle will appear. Clicking in the window with
148: this option on will cause the pel to be resized to 1 by 1.
149:
150: Redraw
151: Redraw the screen with the current selections.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.