314 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			314 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | Objects | ||
|  | +++++++ | ||
|  | 
 | ||
|  | The plug-in allows you to draw the following shapes:- | ||
|  | 
 | ||
|  | Lines | ||
|  | Circles | ||
|  | Ellipses | ||
|  | n sided regular polygons (n >=3) | ||
|  | Curves (arcs) | ||
|  | Spirals | ||
|  | N pointed stars | ||
|  | Simple Beizer curves | ||
|  | 
 | ||
|  | An object is constructed as a number of control points and these are used  | ||
|  | to select the object on the drawing area once it has been created. | ||
|  | 
 | ||
|  | The drawing area preview is currently set to  | ||
|  | 
 | ||
|  | 	MIN(650 x 650,img_width x img_height).  | ||
|  | 
 | ||
|  | You can change this altering the PREVIEW_SIZE item in the source code.  | ||
|  | 
 | ||
|  | Operations | ||
|  | ++++++++++ | ||
|  | 
 | ||
|  | The following operations can be performed on objects:- | ||
|  | 
 | ||
|  | The objects can either be moved independently around the drawing area or  | ||
|  | all together. | ||
|  | 
 | ||
|  | Each control point can be moved. | ||
|  | 
 | ||
|  | Objects can be copied. | ||
|  | 
 | ||
|  | Objects can be deleted. | ||
|  | 
 | ||
|  | N sided Polygons can be split into N line segments. This also works for N  | ||
|  | pointed stars. | ||
|  | 
 | ||
|  | The drawing area can be scaled. | ||
|  | 
 | ||
|  | Control points can be hidden. | ||
|  | 
 | ||
|  | To aid alignment of objects a "grid" can be placed on the drawing area. | ||
|  | This can be either a normal rectangular grid or a polar type grid centered  | ||
|  | in the drawing area.  | ||
|  | The spacings of the grid can be changed as well as the colors used to draw the | ||
|  | grid lines. When "Snap to grid" is checked then all operations will be  | ||
|  | constrained to fall on a grid intersection. (Fun when using the polar grid). | ||
|  | Additionally the third mouse button will constrain the point movement to be | ||
|  | on a horiz/vert (for rect grid) or radial/radius (for polar) only when  | ||
|  | "Snap to grid" is set. | ||
|  | 
 | ||
|  | The image that was selected when Gfig was started can also be shown (scaled) in | ||
|  | the drawing area. (Options tag). | ||
|  | 
 | ||
|  | Painting tab | ||
|  | ++++++++++++ | ||
|  | 
 | ||
|  | There are three possible mode when painting. | ||
|  | 
 | ||
|  | 1) Brush | ||
|  | 2) Selection | ||
|  | 3) Selection+fill  | ||
|  | 
 | ||
|  | Brush | ||
|  | ~~~~~ | ||
|  | When the paint button is pressed each object will be rendered/drawn onto  | ||
|  | the image using the currently selected ink color. The objects can be drawn  | ||
|  | onto the original layer or onto a new layer (either a single layer or  | ||
|  | multiple layers - latter is good for animations). When new layers are  | ||
|  | created the background can either be:- | ||
|  | 	 | ||
|  | Transparent. | ||
|  | Background (the current BG color). | ||
|  | White. | ||
|  | Copy. | ||
|  | 
 | ||
|  | The last option means that the layer is duplicated from the previous layer  | ||
|  | before the draw operation is performed (re good for animations). | ||
|  | 
 | ||
|  | Lines can be drawn in reverse order. This means that reg polygons/curves/lines  | ||
|  | that are normally constructed of lines can be drawn starting at either "end".  | ||
|  | This is only noticeable when the current brush has fading turned on. | ||
|  | The "Approx Circles/Ellipses" toggle allows the same effects when drawing these | ||
|  | types of objects. | ||
|  | 
 | ||
|  | Note that in the current version any selections present in the image are first  | ||
|  | de-selected when Gfig starts up. This is because selections are used to  | ||
|  | draw circles and ellipses (unless the Approx. Circles & Ellipses toggle is set). | ||
|  | 
 | ||
|  | Selection | ||
|  | ~~~~~~~~~ | ||
|  | With this method closed selections are made of the objects. See selection | ||
|  | tab for more details. | ||
|  | 
 | ||
|  | Selections can only be made on the current layer. | ||
|  | 
 | ||
|  | Selection+Fill | ||
|  | ~~~~~~~~~~~~~~ | ||
|  | This method first selects the objects and then fills the selection area. The | ||
|  | selection tab gives more details on how the selections are filled. | ||
|  | 
 | ||
|  | 
 | ||
|  | Brush Tab | ||
|  | +++++++++ | ||
|  | 
 | ||
|  | This tab now contains a preview of the selected brush in black ink. If the | ||
|  | brush is too large to fit in the preview use the mouse button to "move" it | ||
|  | around (as with the brush dialog in the main PIKA - until that brush  | ||
|  | patch went in!). | ||
|  | 
 | ||
|  | Four types of brush can be used:- | ||
|  | 
 | ||
|  | Normal brush | ||
|  | ~~~~~~~~~~~~ | ||
|  | Simply paints with the current brush - honors fading if any | ||
|  | The Fade option allows the "brush fading" to be selected. I am sure that some | ||
|  | nifty anims can be created with this option.  | ||
|  | 
 | ||
|  | Pencil brush | ||
|  | ~~~~~~~~~~~~ | ||
|  | Same as the PIKAS pencil.  | ||
|  | 
 | ||
|  | Airbrush | ||
|  | ~~~~~~~~ | ||
|  | As PIKAS airbrush. The "pressure" can be specified and this is reflected in the | ||
|  | preview window. | ||
|  | 
 | ||
|  | Pattern | ||
|  | ~~~~~~~ | ||
|  | The lines are drawn with the currently selected pattern. The preview will | ||
|  | show this pattern. | ||
|  | 
 | ||
|  | Note a patch to enable a couple of "hidden" paintbrush features was recently | ||
|  | posted to the PIKA developers list. The patch only allowed these features | ||
|  | to be called via the UI and not the PDB so they cannot be used by Gfig. If they were exported via the PDB then they would have probably broken a number of  | ||
|  | scripts and Gfig itself (number of args changes on the PDB call). | ||
|  | 
 | ||
|  | Select tab | ||
|  | ++++++++++ | ||
|  | 
 | ||
|  | This is enabled when using either Selection or Selection+fill types when | ||
|  | painting objects. | ||
|  | 
 | ||
|  | The anti aliasing and feather toggles apply to the selection made when  | ||
|  | "painting" the objects. The feather radius can be changed. | ||
|  | 
 | ||
|  | The default selection mode is to add to the current selection so each object | ||
|  | add to the overall selection. The other selection modes are also possible | ||
|  | but you must bear in mind the following:- | ||
|  | 
 | ||
|  | Subtraction/Intersection will not produce any selection if no selection is  | ||
|  | elect the area in the target window (AFTER starting Gfig up) and then paint  | ||
|  | using this method. | ||
|  | 
 | ||
|  | Replace will leave only the last object selection. | ||
|  | 
 | ||
|  | When the paint type is selection+fill then the objects will be selected  | ||
|  | and then filled. The opacity of the fill can be chosen. By default a fill | ||
|  | is performed after each section. If filling onto a single layer | ||
|  | then the fill will accumulate on the first objects painted. This will be  | ||
|  | noticeable when opacity != 100. To get around this then use replace mode | ||
|  | OR use a new layer for each selection/fill. (Paint tab). Additionally you can | ||
|  | set the fill to be performed after ALL objects have been selected (useful | ||
|  | for intersection type selections). | ||
|  | 
 | ||
|  | Selection of non-closed objects | ||
|  | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|  | For objects that are not closed the first & last points will be joined  | ||
|  | together to form the closed selection. For arcs you can either fill | ||
|  | as segments or sectors. Note straight lines will not cause any selection to be | ||
|  | made. This can be a little confusing when filling since the whole canvas will | ||
|  | be filled if any straight lines are present on it. | ||
|  | 
 | ||
|  | 
 | ||
|  | Scaling | ||
|  | +++++++ | ||
|  | 
 | ||
|  | When Gfig first comes up the selected group of objects are automatically scaled  | ||
|  | upwards to the image size. (If the source image is < 256*256 then no automatic  | ||
|  | scaling is performed - change PREVIEW_SIZE in source to alter this values). | ||
|  | By toggling the scale button the objects can then be scaled in the drawing  | ||
|  | area. This scaling will be reflected when the objects are drawn. | ||
|  | To reposition the objects on the drawing area use SHIFT + MOVE_OBJ operation. | ||
|  | 
 | ||
|  | 
 | ||
|  | Other ops | ||
|  | +++++++++ | ||
|  | 
 | ||
|  | Double click on reg polygon object selection to get dialog with slider to  | ||
|  | selected the number of sides to draw. | ||
|  | 
 | ||
|  | Double click on star object selection to get dialog with slider to  | ||
|  | selected the number of points the star will have. | ||
|  | 
 | ||
|  | Double click on spiral object selection to get dialog with slider to  | ||
|  | selected the number of turns the spiral will have and it direction. | ||
|  | 
 | ||
|  | Double click on bezier object selection to get dialog which allows you to | ||
|  | control how the curve is displayed and if it is closed. | ||
|  | 
 | ||
|  | SHIFT + MOVE_PNT will break a reg polygon or star into a number of  | ||
|  | connected lines. | ||
|  | 
 | ||
|  | When drawing lines if the SHIFT modifier is used then connected lines  | ||
|  | can be drawn. | ||
|  | 
 | ||
|  | SHIFT + MOVE_OBJ will move all objects. Note if "snap to grid" is selected then | ||
|  | the new point will be constrained to fall on a grid intersection. | ||
|  | 
 | ||
|  | Mouse button 3 + "snap to grid" will constrain the point to fall on one of the | ||
|  | two gridlines it was originally on. | ||
|  | 
 | ||
|  | The ">" and "<" buttons allow you to selective move through each of the  | ||
|  | objects in the collection. The "==" returns the display to normal. If the | ||
|  | "paint" button is pressed then only the single object displayed will be  | ||
|  | drawn into the target window. Also when in this mode pressing the shift button | ||
|  | will temporarily show all the objects in the collection. | ||
|  | 
 | ||
|  | The the options tab there is now a toggle that allows you to turn the  | ||
|  | position display on and off. | ||
|  | 
 | ||
|  | Gfig objects | ||
|  | ++++++++++++ | ||
|  | 
 | ||
|  | The upper right part of gfig contains a scroll region when different  | ||
|  | collection of objects can be found. When button 1 is pressed on an entry  | ||
|  | the small preview window will be updated with the objects contained in  | ||
|  | the selected figure. These objects can then be loaded into the main window  | ||
|  | by using the "Edit" button or the "Merge" button. In the former case  | ||
|  | the objects area will first be cleared before the new objects | ||
|  | are added. In the latter case the objects will be merged into the drawing area. | ||
|  | 
 | ||
|  | When a collection of objects is altered to small image of a floppy disc  | ||
|  | will be placed next to the entry signifying that this collection needs to be  | ||
|  | saved. If a red cross appears here then the file associated with the  | ||
|  | entry is read only and cannot be saved to (it can be copied however). | ||
|  | 
 | ||
|  | Button 3 brings up a popup menu that allows collections to be saved away to  | ||
|  | different files. (Accel. keys also exist for some functions). | ||
|  | 
 | ||
|  | The buttons on the right of the list area allow the following operations:- | ||
|  | 
 | ||
|  | Rescan:- | ||
|  | This popus up a window which allows you to add directories to the internal  | ||
|  | gfig-path.  A (re)scan of these directories can the performed. Note any  | ||
|  | modification to the gfig-path will NOT be mirrored in your ~/.pika/pikarc file. | ||
|  | 
 | ||
|  | Load:- | ||
|  | Allows you to load a single collection of objects. | ||
|  | 
 | ||
|  | New:- | ||
|  | Create a new collection. Note that until this is saved away to a file then no | ||
|  | filename will be associated with it. (See status area). | ||
|  | 
 | ||
|  | Delete:- | ||
|  | Popups a dialog asking if you wish to delete the entry selected in the list  | ||
|  | box as well as on disc. | ||
|  | 
 | ||
|  | Additionally button 3 over the list area allows the following:- | ||
|  | 
 | ||
|  | Save as...:- | ||
|  | Save collection to new filename. The collections filename is also  | ||
|  | changed to this new name. The original name is NOT deleted from the disc  | ||
|  | but it is effectively removed from the list selection area (actually it  | ||
|  | is overwritten internally). | ||
|  | 
 | ||
|  | Save:- | ||
|  | Save the currently selected entry to disc. | ||
|  | 
 | ||
|  | Copy:- | ||
|  | Make a copy of the collection. | ||
|  | 
 | ||
|  | Edit:- | ||
|  | Same as the "Edit button". | ||
|  | 
 | ||
|  | Double click on entry with Button 1 popups up a dialog that allows you to  | ||
|  | modify the nme of an entry (similar to other list areas in PIKA). | ||
|  | 
 | ||
|  | Bezier | ||
|  | ~~~~~~ | ||
|  | 
 | ||
|  | OK my maths is a little rusty. The bezier stuff is only very simple. However... | ||
|  | I have tried to abstract as much as possible the bezier calculations from | ||
|  | the drawing of the control points / painting on the screen and in the target | ||
|  | window.  | ||
|  | 
 | ||
|  | The bezier function is defined as:- | ||
|  | 
 | ||
|  | void | ||
|  | DrawBezier (gdouble (*points)[2], gint np, gdouble mid, gint depth) | ||
|  | { | ||
|  | ... | ||
|  | } | ||
|  | 
 | ||
|  | Points an array of pairs of doubles that define the control points | ||
|  | np is the number of points. Mid is always starts as 0.5 - and depth | ||
|  | defines how deep the recursion should go when calculating the line points. | ||
|  | 
 | ||
|  | The function should call fp_pnt_add() when a point on the curve has been | ||
|  | calculated.  | ||
|  | 
 | ||
|  | If anyone would like to produce a better/faster function then you | ||
|  | should be able to replace the DrawBezier function. (Only the first two args | ||
|  | are really needed).  | ||
|  | 
 | ||
|  | The algorithm the current code is based on was obtained by looking  | ||
|  | at the many many examples out on the web. | ||
|  | (Bezier drawing seems to be topic of the year for computer degrees  | ||
|  | and people learning java!!!) | ||
|  | 
 |