GIMP Documentation outline of basic information for manual/tutorial Main sections: Introduction what is the gimp? a brief history -> current release what is it used for? what isn't it used for? Setup acquisition ftp sites: main, alternatives (sunsite, ftp.x.org, linux distributions) discussion of online resources such as homepage and homepages of various contributors binary vs. source distributions installation if binary, make install if source, make config, give details of compilation, make, make install gimp library directory/personal gimp directories gimprc location of default gimprc the various gimprc options (descriptions for each & default values) discussion of tiles/swap what are tiles? why are they useful to the gimp? what are reasonable settings for the tile cache size? what is the gimp swapfile/tmp directory? where should it be? (on /tmp or in ~/.gimp) discussion of color resolutions what are color resolutions? how do you find out which color resolutions are available to you? what color resolutions does the gimp require? why does the gimp "dither" in 8-bit color? why do the colormaps change between grayscale and color in 8-bit why don't indexed images use their own palette? discuss other alternatives for viewing images under X windows (xv) the color cube resource: how can the shades of color be controlled in 8-bit? discussion of fonts (type1/truetype/bitmap/standard X11) how are fonts used in the gimp? (gimp requires X to render them) what fonts can X render? (type1/bitmap) what fonts come standard with X? where can more fonts be obtained? Images the toolbox foreground background changing the colors/color select dialog main menu tool descriptor field new gimp works on "images" which are defined by a width, height, depth, a selection mask, a set of layers, and a set of auxillary channels image types: what are the options? what are the image types used for why can't an indexed image be created? why are indexed images a pain? how should indexed images be dealt with? a short example of "new" command image menus scrollbars rulers (options for hiding/showing rulers) ruler units (in gimprc) {pixels, inches, centimeters} concepts of layers bucket fill the new layer add a layer, blend it transparency what is it? how is it used? how can its appearance be controlled? (via preference dialog/gimprc) what file formats support it? undo/redo multiple (can be set via gimprc and preferences) on a per-image basis loading/saving loading and saving of images is accomplished through plug-ins most load/save plug-ins have no knowledge of the full set of attributes which the gimp needs for an image. In fact, most are limited to saving only 1 layer, and in some cases, an alpha channel such plug-ins are limited by their respective file formats (jpeg, tiff, etc) these plug-ins will save only the active layer of an image the xcf file format, however, can save all pertinent information about an image so that it can be stored and retrieved in full viewing viewing an image can be efficiently accomplished through a variety of features the image can be zoomed in or out with the magnify tool and the zoom hot-keys and menu-items the zoomed image can be panned using the scrollbars at the sides of the image or the middle mouse button multiple views can be created to view the image at different zoom ratios the image window can be expanded to reveal hidden areas and if necessary, the shrink wrap hot-key/menu-item can be invoked to limit the window borders to the image extents. the "always resize" option of the magnify tool and the gimprc can be enabled to cause the window to resize appropriately for each successive zoom resizing/scaling images can be resized or scaled resizing involves changing the width and height of the image by either cropping or adding area to its contents scaling involves actually changing the contents of the image, either "stretching" or "compressing" the layers and channels to fit to the new size Selections introduction what are selections? so is a selection just another channel? (what makes it special) how can selections be created? why are selections useful--they constrain operations by allowing regions of an image to be specified denoted by a boundary of marching ants--speed controlled in gimprc file selection mask extends over entire image if a layer in the image covers only part of the image extents, then the parts of the selection boundary which lie outside the active layer will be drawn, but will not march. brief description of selection tools pointer to channels section for information on how to "paint" selections common operations on selections feathering -- like a gaussian blur (can also be done with selection tools) bordering -- description of the algorithm sharpen -- gives all points of the selection values of 0 or 255 invert -- gives each point of the selection the value = (255 - value) stroke -- uses the current brush and foreground color and "strokes" the outline of the current selection clear -- if there is a selection, this clears the selected area of the active layer. if the active layer has an alpha channel, this clears to transparent. if not, this clears to the background color. if there is no selection, this affects the entire image fill -- similar to clear, except that it always fills to the background color. Tools what are tools? typically activated from toolbox, hot keys or menu items only one active at a time discussion of context sensitive cursors the tools dialog what is it? double clicking on the tool icon selecting from the dialogs menu what are the common features of their usage: always invoked with the left mouse button, and can be cancelled by pressing the right mouse button before you release the left shift, control keys are often used to modify the behavior of the current tool selection tools rectangular: creates rectangular regions of selection which can be added, subtracted, or used to replace the current selection. holding down the shift and control keys constrains the region to a square elliptical: creates elliptical selections similar to rectangular. holding the shift and control keys creates circles. this selection tool has an antialiasing option which is on by default and creates selections which appear smoother but contain intermediate selection values. that is, there are points in the selection which aren't completely "on" or "off". freehand: can create any kind of selections, but requires a steady hand possibility here for the (dynadraw option for much smoother input). when the left mouse button is released, the created polygon is closed automatically. there is an antialiasing option for this tool which produces smoother selections. bezier: the bezier selection tool can be used to create either polygonal or curved regions of selection. There are typically two stages to bezier selection. the first involves placing bezier control points. control points are point which the final curve will be constrained to pass through. these should be placed on the edges of the boundary which is desired. no selection can be made until a final control point is place atop the first control point. a selection can be made by clicking in the interior of the polygon. each control point has two additional points which control the curve segment which passes through. these two additional points can be manipulated by dragging on the control point. holding down shift while dragging constrains the movement to just one of the additional control points. holding down the "control" key while dragging one of the original control points translates that point. the bezier tool has an antialiasing feature which is useful for producing smooth output. fuzzy: the fuzzy selection tool is invoked by left-clicking in a region of interest it works using a seed fill algorithm and expands outwards from the initial point to adjacent pixels with similar color. its expansion is limited by a threshold parameter which limits the acceptable difference between neighboring pixels. this tool also contains an antialias option which, depending on the underlying image, can produce smoother selections. this tool also has an option "sample merged" which specifies that the underlying pixel information is to be taken from the image as it appears to the user, and not just from the active layer or channel holding down the left mouse button and dragging allows the threshold parameter to be dynamically adjusted. moving the mouse left or up decreases the threshold; moving the mouse right or down, increases. intelligent scissors: take the shit i wrote a long time ago by-color: this tool is invoked not through the toolbox, but through the menus it selects in a manner similar to the fuzzy selection tool, except that it searches the entire image for pixels of color similar to the initial point, instead of doing a seed fill. give an explanation of the by-color-select dialog and its uses for all selection tools, the produced region replaces the current selection by default however, holding down shift will "add" the new selection to the current holding down control will "subtract" the new selection from the current all selection tools and the move tool will translate the current selection if the "alt" key is depressed. magnify: allows easy zooming on portions of the image. a mouse click centers at the mouse click and zooms in one step. a shift-click centers at the mouse position and zooms out one step clicking and dragging with the mouse highlights an approximate rectangular area which will be fitted as closely as possible to the size of the window. move tool: primarily deals with layer translation including floating selections can be used to move selections when the "alt" key is depressed crop: crops through all layers, channels and selection mask operation of cropping extents (dragging vs expanding/contracting) transform tools: discussion about the method of operation of transform tools they float the current selection if there is one and transform the contents if there is no current selection mask, they simply transform the active layer if there is no selection mask and a channel is active, they have no effect with the exception of the flip tools, all transforming tools pop up a dialog box which gives information on the current transformation. with the exception of the flip tools, all transformations can be done with or without smoothing. smoothing results in a better final result, but takes additional time and can possibly introduce intermediate shades of the original colors to the final product. Smoothing cannot be used with indexed images. the degree (quality) of the smoothing algorithm can either be linear or cubic. cubic takes substantially more time but yields superior results. the degree of smoothing can be set as an option in the gimprc file. flip horz: flips horizontally flip vert: flips vertically rotate: rotates. shift constrains the angle of rotation to 5 degree intervals scale: scales. shift constrains the current height. control constrains the current width. shift-control constrains the original aspect ratio shear: shears. the direction of the shear (either horizontal or vertical) is determined by the direction the mouse is first dragged in perspective: allows the rectangular region to be mapped into any arbitrary quadrilateral. the corners of the rectangle can be dragged to any new locations and the resulting region is the mapping of the rectangle into the new quadrilateral bucket fill: if there is a selection, fills inside the selection bounds. if there is no selection, executes a seed fill from the point the mouse was initially clicked in. in the case of no selection, an antialiasing parameter may be set which can yield better results in the final fill. This option is similar to the one for the fuzzy selection tool. the bucket fill tool fills an area with the foreground color. If the shift key is depressed then the background color is used as the fill color. patterns are used in conjunction with the bucket tool and are tiled to fill the area. pattern dialog allows the selection of an active pattern the behavior of the bucket fill tool can be selected from the tools dialog to specify either pattern filling or color filling. the pattern dialog can be displayed from the dialogs submenu patterns are found in the directories listed in the gimprc new patterns can be defined by saving an image in one of the searched directories in the gimp pattern format. the list of directories can be reparsed at any time with the refresh button description of paint modes--tie in to paint tools/blend (they all use them too) bucket fills can also be done with a specified opacity which controls how the paint being applied from the tool interacts with the existing image blend: blend typically works by filling from the foreground to the background color the tool is activated by clicking and dragging in the desired direction and then releasing. while dragging, a rubber-banded line will appear which has different meanings depending on the current blending mode there are a number of different blend modes including linear: perpendicular lines to the drag line from foreground to background bilinear: perpendicular lines to the drag line from foreground to background in both directions radial: concentric circles outwards from the starting of the drag line to the end square: concentric squares outwards starting with FG and ending with BG conical (asymmetric): cone with rays extending outwards from the drag line's starting point. length of drag line has no meaning conical (symmetric): cone of rays goes from fg to bg in both directions shapeburst (angular, spherical, dimpled): shapeburst assigns a color to pixels somewhere between fg and bg depending on how far the pixel is from the nearest edge of the selection blend, like bucket fill has both a paint mode and an opacity blend does not necessarily work between the foreground and background colors. the gradient editor can be used to construct arbitrarily complex fades between as many colors as desired. complete description of gradient editor maybe a note about how all of the blend modes assign a value between 0 and 1 for each considered pixel and in the case of a simple blend, this corresponds to a color intermediate to bg and fg. in the case of a custom blend, it corresponds to a point on the collection of segments defined in the gradient editor. blends can be done in RGB space, HSV space, and from the fg color to transparent painting tools all painting tools are applied using the left mouse button and dragging paint is then applied as though the mouse cursor were a paintbrush applied paint can be blended with the underlying image using a number of different modes (as in bucket fill/blend) normal: the color being applied is independent of the existing image addition: the color is added to the existing subtract: color is subtracted multiply: color is multiplied, result is always darker screen: inverse of multiply, result is always lighter color only: hue and saturation of color are used, existing lightness kept hue only: only hue of color is used value only: only value is used saturation only: only saturation is used behind: color is applied "behind the existing image" meaning that painting only affects parts of the image which have some transparency lighten only: color is applied only if its value exceeds existing darken only: color is applied only if its value doesn't exceed existing whatever sort of paint the painting tool is applying (this can even be "erasing" paint, in the case of the eraser tool), the application is limited by a brush mask. a brush mask is a grayscale image which determines the amount of paint to apply at each stroke. there are a number of brush masks that come with the gimp brush masks are found from a list of directories specified in the gimprc brush masks can be created by saving a grayscale image with the gimp brush file loader/saver brush masks can be selected using the brush dialog which is invoked from the dialogs submenu. complete description of the brush dialog set paint mode paint opacity brush name, width, height, appearance brush spacing refresh feature for researching the brush paths when using indexed images, all brush masks are converted from grayscale to black and white so that additional colors are not introduced into the image the paint tools are as follows: paintbrush: applies the foreground color. a fade out parameter can be set in pixels which specifies how long a stroke can be before it begins to fade to transparency pencil: similar to paintbrush, but it uses non-antialiased brush masks for precise work which requires absolute pixel accuracy eraser: the eraser tool does not apply paint, but removes it. if an image has an alpha channel, paint is removed in favor of transparency. if an image does not have an alpha channel, the eraser tool is similar to the paintbrush, but paints in the background color. airbrush: the airbrush tool paints in the foreground color, but unlike the paintbrush which is constrained to apply an even coating of paint during a single stroke, the airbrush can apply as much paint as desired. a pressure parameter controls how quickly paint is applied, and a rate parameter controls how quickly paint is applied when the mouse is stationary. clone: the clone tool works by transfering paint from a source to a specified destination. the source can either be an image or a pattern. the type of source is selected through the clone tool dialog. if the source is an image, the actual source coordinates can be specified by shift clicking the mouse at the appropriate location. then, when painting, the image at the source coordinates is effectively copied from the source to the destination. cloning from image to image automatically adjusts between the different image types (ie grayscale-> RGB, RGB->indexed). The RGB->indexed conversion is complicated and can slow down the operation of the tool at times. when cloning from image to image, the source and destination can either be the same image or different images. if the clone source type is a pattern, the active pattern is used as a source of pixels to paint to the destination. the active pattern is selected the same way as with bucket fills. convolve: convolving can involve either sharpening or blurring. a pressure parameter in the convolve dialog allows the degree of sharpening and blurring to be set. Floating Selections floating selections are temporary layers which are "floating" above another layer or channel. only one floating selection at a time may exist in an image. floating selections appear in layers dialog as a temporary icon, but can be treated in many respects like a normal layer in the image (ie, opacity, combination mode) can't be raised or lowered, given layer masks, etc. created by pasting, floating a selection introduce concept of global edit buffer the edit/copy command saves region inside current selection the edit/cut command save region inside current selection and extracts the contents from the active drawable. if the layer has an alpha channel, extraction yields transparent pixels. otherwise, extraction yields the background color. if there is no selection, edit/cut copies and removes the entire layer or channel edit/paste copies the contents of the global edit buffer into an image. this stage automatically takes care of any conversions between image types when the contents of the global edit buffer are pasted, any current selection is removed edit/paste has a special option "paste into" which does not remove the current selection the appearance of floating selections--marching ants if there is a selection with a floating selection, the boundary of the selection does not march the selection mask acts as a mask when compositing the floating selection to the image. that is: any areas of the floating selection which lie within the selection mask are visible, while any areas which lie without the selection mask are masked out. if edit/paste or select/float are invoked while a floating selection exists, the current floating selection is "anchored" to the image the floating selection can be anchored at any time (which simply means it is composited permanently with the image) by clicking outside its boundary, or by invoking select/anchor the move tool translates floating selection exactly as it translates layers assuming no selection exists, transform tools transform the entire floating selection, yielding a new one. named buffers allow multiple edit buffers which can be recalled by name Layers introduction layers are the basic building block of images when a new image is created, a default layer is created layers can have any extents relative to the image image is like a frame, layers are cellophane overlays layers have transparency, except for the bottommost layer, which doesn't necessarily layers are composited with composite modes and opacities to form the final image layers allow separate elements of an image to remain independent for a final image, layers are composited into a final image the layers dialog (blending mode, opacity, ordering, visibility, activation, attributes) the layers dialog controls the layer compositing the active layer is the one which is highlighted when a tool is used, the active layer is the one affected the active layer can be set by clicking in the list box item the option menu controls the blending mode, (list all modes, uses) the opacity slider allows the overall transparency of a layer to be set each layer item has two icons on the left the first is a small eye, which controls the visibility of a layer the visibility allows layers to be hidden for clarity the second is a fleur, which controls layer "linkage" layer linkage is a feature which allows multiple layers to be translated simultaneously with the active layer layer list items are highlighted when active and their order in the list denotes the composite order. composition proceeds from bottom to top layer select feature like the windows 3.1 task manager shift-tab switches between layers works like a stack. last visited layer is the next to pop up layer previews the size of layer previews in the layer selector and the layers dialog can be controlled via the gimprc with the preview size setting smaller preview sizes are often not quicker to calculate, but do require less memory and allow more layers to be displayed simultaneously set layer preview size to "none" for efficiency merging layers are merged by combining the visible layers can be constrained by: image size, bottommost layer, or expanded as necessary flattening flattening is similar to merging, but removes transparency, and limits to image size delete removes the active layer duplicate makes a duplicate of the active layer, new layer is inserted above the active layer new new layer: specify size, name resizing layer can be resized so that additional border space is available, or the layer's contents can be cropped. dialog allows the contents of the layer to be positioned within the new layer scaling the layer is scaled to a new size lowering/raising allows the layers to be reordered preserve transparency an option which restricts all paint operations so that they have no affect on the transparency of the layer layer masks (all the modes of operation) layer masks are additional alpha channels for layers. they are essentially grayscale images with the same extents as the layer a layer is limited to at most one they allow independent localized changes to transparency control-click in the layer mask preview toggles the activation this creates a red border around the layer mask preview shift-click makes the layer mask visible instead of the layer this creates a green border around the layer mask preview to toggle between editing the layer mask or the layer itself, click the previews a border denotes which is currently active layer mask creation a layer mask is created for the active layer by selecting the layer mask menu item the initial layer mask can be completely white (all areas of the layer will be visible) completely black (the entire layer is invisible) or set initially to the layer's alpha channel (useful for some effects) layer mask application choosing the layer mask apply menu item removes the layer mask a choice is given between apply or discard. apply causes the layer mask to be composited with the layer's alpha channel discard removes the layer mask as though it never existed layer mask restrictions cannot transform a layer with a layer mask layer masks cannot be given to floating selection layers layer alpha to selection operation the select/layer alpha command causes a layer's alpha channel to be used as the basis for the image's selection mask Channels introduction the two kinds of channels (image components, auxillary channels) selection masks are channels image components for each type of image, the components are the independent channels. for RGB: red, green, blue. grayscale and indexed have 1 component alpha channels of images are not considered a component for the purposes of discussing channels auxillary channels auxillary channels are not involved with the image. they are used for storing selection masks and editing them as though they were images. they can be made visible by giving them a color and opacity. they are then composited on top of the layers composite interaction between active layer/active channel(s) any combination of image components may be active at a given time. the activation of image components acts to constrain the application of paint to the active layer. if a layer is active, no auxillary channels can be active if an auxillary channel is active, no layers are active, and the image components are insensitized the channels dialog invoked from the dialogs menu. for each image, the image components are displayed first auxillary channels are then displayed each item has one icon on the left of a small eye and controls the visibility of the channel or component new creates a new auxillary channel image components cannot be created duplicate duplicates the current channel. this can be done for image components and auxillary channel. the result is an auxillary channel delete deletes the active auxillary channel image components cannot be deleted double clicking an aux channel list item allows it's attributes to be edited auxillary channel attributes include name and composite color & opacity Image Correction image correction deals with changing the characteristics of whole regions of an image image correction tools operate on the contents of the current selection or the entire layer if there is no selection hue/saturation allows adjustment of hue saturation--more on this brightness/contrast more on this shit levels histogram curves maybe by 1.0! color balance slider controls the relative color shift Plug-ins introduction (why are they cool, what are they) how they work registration interface effects extensions file loaders/savers Very Large Images tiles tile size is compiled into the gimp tiles can be used to distribute gimp processing tiles can be used for quick loading of images at varying resolutions tiles are a nice mechanism for dealing with images >> physical memory size performance issues (getting the most out of GIMP) compositing is time consumptive--hiding layers when possible is a good idea viewing only a small portion of the image at 1:1 makes redisplays after big edits much faster tile cache size should be set as high as possible, but should still be sufficiently small that the system does not swap processes. tile cache swap should be located on a partition with sufficient space programming issues and approaches (plug-ins, extending GIMP) plug-ins can use put, get-pixel abstractions for efficiency, actual tiles should be dealt with in both plug-ins and GIMP programming, the pixel regions are useful for programming algorithms with tiles. register_regions, process_regions get_row, set_row get_col, set_col get_area, set_area Scripting--The Procedural Database introduction scripting is extremely useful for automating image creation or common editing functions there is no specific scripting language for the GIMP, instead procedural database this way, there are no limits to what can be done with GIMP functionality: imagine remote process servers which crunch through CPU intensive imaging tasks and return data. the flow of image information is controlled through the interface to the pdb. the procedural database all procedures which handle the GIMP's functionality are registered here all plug-ins and extensions must register themselves with the main database once registered, plug-ins & extensions can call other plug-ins or internal gimp procs. procedural database contains information on each procedure including: blurb, help, author, copyright, input & output arguments (with descriptions) all procedures are blocking internal procedures internal procedures constitute the inner workings of the main application. images, channels, layers, etc. can be created here and the functionality of almost all the tools can be accessed through internal procedures in fact, the entire plug-in interface simplifies calls to internal procedures plug-ins/extensions plug-ins and extensions are expected to register themselves in the procedural database upon initialization which occurs if the executable is found by the gimp in an appropriate directory. once registered, a plug-in or extension can be accessed in the same way as every other procedure. interface documentation can be automatically generated with procedural_db_dump call. then an elisp script creates a tex info file. registering a procedure with full information is important for these docs available scripting extensions give a list--probably will contain something for the siod interpreter siod-scheme in one defun all procedures in pdb are queried, scheme wrappers are auto-generated