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