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!!!)
 | |
| 
 |