<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
                       "http://www.docbook.org/xml/4.3/docbookx.dtd">
<!--  section history:
  2007-09-02 lexa: split out from history.xml
 -->
<sect1 id="gimp-introduction-history-2-0">
  <title>Version 2.0</title>

  <para>
    First, a statistic: the <acronym>GIMP</acronym> code base
    contains about 230,000 lines of C code, and
    most of these lines were rewritten in the
    evolution from 1.2 to 2.0. From the user's point of view, however,
    <acronym>GIMP</acronym> 2 is fundamentally similar to
    <acronym>GIMP</acronym> 1; the features are similar enough that
    <acronym>GIMP</acronym> 1 users won't be lost. As part of the
    restructuring work, the developers cleaned up the code greatly, an
    investment that, while not directly visible to the user, will ease
    maintenance and make future additions less painful. Thus, the
    <acronym>GIMP</acronym>
    2 code base is significantly better organized and more
    maintainable than was the case for <acronym>GIMP</acronym> 1.2.
  </para>
  <variablelist>
    <varlistentry>
      <term>Basic tools</term>
      <listitem>
        <para>
          The basic tools in <acronym>GIMP</acronym> 2 are not very
          different from their predecessors in
          <acronym>GIMP</acronym> 1. The
          <quote>Select Regions by Color</quote> tool
          is now shown in the <acronym>GIMP</acronym> toolbox, but
          was already included in <acronym>GIMP</acronym> 1 as a
          menu option in the Select menu. The Transform
          tool has been divided into several specialized tools:
          Rotation, Scale, Shearing and Perspective. Color operations
          are now associated with layers in the menu
          <menuchoice>
            <guimenu>Layer</guimenu>
            <guisubmenu>Colors</guisubmenu>
          </menuchoice>,
          but this is merely a cleanup: they were already present in
          the Image menu (illogically, since they are layer
          operations). Thus no completely new tools appear in this
          release, but two of the tools have been totally revamped
          compared to the older versions: the Text tool and the Path
          tool. More on this below.
        </para>
        <para>
          The user interface for tools has also changed significantly.
          The <quote>Tool Options</quote> dialog box was modified to
          not resize
          itself when a new tool is chosen. Most users felt that the
          window changing size when a new tool was selected was
          annoying. Now, by default the <quote>Tool Options</quote>
          dialog is
          constantly open and docked under the toolbox, where it can
          easily be found.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term>Tool options</term>
      <listitem>
        <para>
          The <quote>Tool Options</quote> for many tools have new
          possibilities that weren't available in
          <acronym>GIMP</acronym> 1. Without being exhaustive,
          here are the most noticeable improvements.
        </para>
        <para>
          All selection tools now have mode buttons: Replace, Add,
          Subtract and Intersect. In <acronym>GIMP</acronym> 1 the
          only way to change the
          selection mode was to use the
          <keycap>Ctrl</keycap> or <keycap>Shift</keycap>
          buttons, which
          could get very confusing because those buttons also had
          other functions. For example, pressing and holding the
          <keycap>Shift</keycap>
          key while using the Rectangle selection tool forces the
          rectangle to be a square. Thus, to add a square selection
          you would first press <keycap>Shift</keycap>, then click
          the mouse, then release <keycap>Shift</keycap>, then press
          <keycap>Shift</keycap> again, then sweep out the
          selection with the mouse, then release <keycap>Shift</keycap>.
          It can now be done more easily.
        </para>
        <para>
          For transformation tools, buttons now control which object
          (layer, selection or path) is affected by the
          transformation. You can for example transform a rectangular
          selection to various quadrilateral shapes. Path
          transformation in particular is now easier than it was
          before.
        </para>
        <para><quote>Fade out</quote> and
          <quote>Paint Using Gradient</quote> are now available for
          all drawing tools. In fact, all drawing tools now have their
          own individual brush, gradient and pattern settings, in
          contrast to <acronym>GIMP</acronym> 1 where there was a
          single global setting
          that applied to all drawing tools. Now you can select
          different brushes for the Pencil and the Paint Brush, or
          different patterns for the Clone and Fill tools. You can
          change these setting by using your mouse wheel over the
          relevant resource button (this is most useful for quickly
          and easily choosing a brush).
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term>User Interface</term>
      <listitem>
        <para>
          The most visible changes in <acronym>GIMP</acronym> 2
          concern the user interface. <acronym>GIMP</acronym> now
          uses the <acronym>GTK2+</acronym> graphical toolkit in
          place of <acronym>GTK+</acronym>. One of the nice features
          brought by the new
          libraries is dockable dialogs, and tab navigation between
          dialogs docked in the same window — a feature present in
          several popular web browsers. <acronym>GIMP</acronym> 1
          was famous for opening dialogs anywhere on your screen;
          <acronym>GIMP</acronym> 2 can be told to use
          fixed boxes. Dialogs now include a little tab-customization
          menu, which provides maximum flexibility in organizing your
          workspace.
        </para>
        <para>
          The Image window has some interesting new features. These
          are not necessarily activated by default, but they can be
          checked as options in the
          <menuchoice>
            <guimenu>Preferences</guimenu>
            <guisubmenu>Interface</guisubmenu>
            <guisubmenu>Image Windows</guisubmenu>
          </menuchoice>
          menu. <quote>Show Brush Outline</quote>, for example,
          allows you
          to see the outline of the brush when using drawing tools. In
          the <quote>Appearance</quote> sub-section, you can toggle
          whether a menu
          bar is present at the top of image windows. You can set an
          option to work with the new fullscreen mode. Viewing options
          are also available from all image windows using right click
          to bring up the menu, then selecting <quote>View</quote>.
          The so-called <quote>image</quote> menu is also available
          by clicking on a little
          triangle in the top left corner of the drawing space. The
          setting you choose in the <quote>Preferences</quote>
          dialog is used as
          the default value, and options you set from an image are
          used only for that image. (You can also toggle fullscreen
          mode by using the <keycap>F11</keycap> key; the
          <keycap>Esc</keycap> key also exits fullscreen mode).
        </para>
        <para>
          <acronym>GIMP</acronym>
          2 features keyboard accelerators to ease menu access. If you
          find that navigating through menus using your mouse is
          onerous, the solution may be to use the keyboard. For
          example, if the menu bar is present, to create a new image
          just hit
          <keycombo>
            <keycap>Alt</keycap>
            <keycap>F</keycap>
            <keycap>N</keycap>
          </keycombo>. Without the menu bar, hit
          <keycombo><keycap>Shift</keycap><keycap>F10</keycap></keycombo>
          to open the top-left menu, and use direction keys or
          <keycap>F</keycap> then <keycap>N</keycap>
          to create the new image. Keyboard accelerators are different
          from shortcuts: accelerators are useful to navigate through
          menus, whereas shortcuts call a specific menu item directly.
          For example,
          <keycombo><keycap>Ctrl</keycap><keycap>N</keycap></keycombo>
          is a shortcut, and the quickest way to open a new image.
        </para>
        <para>
          To ease access to your most commonly used menu items, the
          <acronym>GIMP</acronym> has provided dynamic shortcuts for
          many years. When a
          menu is open, you can hover over the desired menu item and
          hold down your shortcut combination. This feature is still
          present, but is deactivated by default in the
          <acronym>GIMP</acronym> 2.0, to
          avoid accidental re-assigning of existing shortcuts.
        </para>
        <para>
          The <acronym>GIMP</acronym> also ships with a number of
          sets of key-bindings
          for its menus. If you would like to replace the default
          <acronym>GIMP</acronym>
          keybindings by Photoshop bindings, for example, you can move
          the file <filename>menurc</filename> in your user data
          directory to <filename>oldmenurc</filename>, rename
          <filename>ps-menurc</filename> to
          <filename>menurc</filename> and restart
          <acronym>GIMP</acronym>.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term>Handling Tabs and Docks</term>
      <listitem>
        <para>
          The <acronym>GIMP</acronym>
          2.0 introduces a system of tabbed dialogs to allow you to make your
          workspace look the way you want it to be. Almost all dialogs can be
          dragged to another dialog window and dropped to make a tabbed dialog
          set.
        </para>
        <para>
          Furthermore, at the bottom of each dialog, there is a dockable area:
          drag and drop tabs here to attach dialogs beneath the bottom tab
          group.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term>Scripting</term>
      <listitem>
        <para><quote>Python-fu</quote> is now the standard external
          scripting interface for <acronym>GIMP</acronym> 2. This
          means that you can now use <acronym>GIMP</acronym>
          functions in Python scripts, or
          conversely use Python to write
          <acronym>GIMP</acronym> plug-ins. Python
          is relatively easy to understand even for a
          beginner, especially in comparison to the
          Lisp-like Scheme
          language used for Script-Fu in <acronym>GIMP</acronym> 1.
          The Python bindings
          are augmented by a set of classes for common operations, so
          you are not forced to search through the complete
          <acronym>GIMP</acronym>
          Procedural Database in order to carry out basic operations.
          Moreover, Python has integrated
          development environments and
          a gigantic library, and runs not only on
          Linux but also on
          Microsoft Windows and Apples Mac OS X. The biggest drawback,
          for <acronym>GIMP</acronym> 2.0, is that the standard user
          interface offered in
          Python-fu does not use the complete power of the
          Python
          language. The interface is currently designed to support
          simple scripts, but a more sophisticated version is a goal
          of future development.
        </para>
        <para>
          <acronym>GIMP</acronym>-Perl is no longer distributed with
          the standard <acronym>GIMP</acronym> 2
          distribution, but is available as a separate package.
          Currently, <acronym>GIMP</acronym>-Perl is supported only
          on Unix-like
          operating systems. It includes both a simple scripting
          language, and the ability to code more polished interfaces
          using the <acronym>Gtk2</acronym> perl module. Direct
          pixel manipulation is
          available through the use of <acronym>PDL</acronym>.
        </para>
        <para>
          Script-Fu, based on <quote>Scheme</quote>,
          has the same drawbacks as before: not intuitive, hard to use
          and lacking a real development environment. It does, however,
          have one major advantage compared to Python-fu: Script-Fu
          scripts are directly interpreted by <acronym>GIMP</acronym>
          and do not require any additional software installation.
          Python-fu requires that you install a package for the Python
          language.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term>The Text Tool</term>
      <listitem>
        <para>
          The big problem with the standard text tool in
          <acronym>GIMP</acronym>
          1 was that text could not be modified after it was rendered.
          If you wanted to change anything about the text, all you could
          do was <quote>undo</quote>
          and try again (if you were lucky enough to have sufficient
          undo history available, and then of course you would also undo
          any other work you had done in the meantime). In
          <acronym>GIMP</acronym> 1.2 there was also a
          <quote>dynamic text</quote>
          plug-in that allowed you to create special text layers and
          keep them around indefinitely, in a modifiable form, but it
          was buggy and awkward to use. The second generation Text tool
          is an enhanced combination of the old Text tool and the
          Dynamic Text plugin. Now all options are available in the
          <quote>Tool Options</quote>
          : font, font size, text color, justify, antialiasing, indent,
          spacing. To create a new text item, click in the image and a
          little editor pops up. Text appears on the image while you are
          editing (and carriage returns are handled properly!). A new
          dedicated layer is created; this layer resizes dynamically to
          match the text you key in. You can import plain text from a
          file, and you can even do things like writing from right to
          left in Arabic. If you select a text layer, clicking on it
          opens the editor, and you can then modify your text.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term>The Path Tool</term>
      <listitem>
        <para>
          The second generation Path tool has a completely new interface. The
          first major difference you notice is that paths are no longer
          required to be closed. A path can be made up of a number of disjoint
          curve segments. The next major difference is that now the path tool
          has three different modes, Design, Edit and Move.
        </para>
        <para>
          In Design mode, you can create a path, add nodes to an
          existing path and modify the shape of a curve either by
          dragging edges of the curve or dragging the
          <quote>handles</quote> of a node.
        </para>
        <para>
          In Edit mode, you can add nodes in the middle of curve edges, and
          remove nodes or edges, as well as change the shape of the curve. You
          can also connect two path components.
        </para>
        <para>
          The third mode, Move, is, as you might expect, used to move
          path components. If your path has several components, you
          can move each path component separately. To move all
          components at once, use the <keycap>Shift</keycap> key.
        </para>
        <para>
          Two other path-related features are new in the
          <acronym>GIMP</acronym> 2.0. The <acronym>GIMP</acronym>
          can not only import an SVG image as a raster image, but
          can also keep SVG paths intact as <acronym>GIMP</acronym>
          paths. This means that the <acronym>GIMP</acronym> is now
          more able than ever to complement your
          favorite vector drawing tool. The other feature which has
          made the path tool much better is the introduction of
          vector-based stroking. In previous versions, stroking paths
          and selections was a matter of drawing a brush-stroke along
          the path. This mode is still available, but it is now
          possible to stroke a curve accurately, using the vector
          library <acronym>libart</acronym>.
        </para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term>Other improvements</term>
      <listitem>
        <para>Some other improvements in brief:</para>
        <itemizedlist>
          <listitem>
            <para>
              Higher-quality antialiasing in some places — most notably in the
              Text tool.
            </para>
          </listitem>
          <listitem>
            <para>
              Icons and menus are skinnable. You can create your own
              icon set and apply it to the toolbox using the
              <menuchoice>
                <guimenu>Preference</guimenu>
                <guisubmenu>Interface</guisubmenu>
              </menuchoice>
              menu option. A theme called <quote>small</quote> is
              included with the standard distribution.
            </para>
          </listitem>
          <listitem>
            <para>
              An image can be saved as a template and used to create new
              images.
            </para>
          </listitem>
          <listitem>
            <para>
              There are four new combination modes for layers that lie
              one on top of another within an image:
              <quote>Hard Light</quote>, <quote>Soft Light</quote>,
              <quote>Grain Extract</quote> and
              <quote>Grain Merge</quote>.
            </para>
          </listitem>
          <listitem>
            <para>
              If there is an active selection, you can crop the image
              directly to the selection size using image menu
              <menuchoice>
                <guimenu>Image</guimenu>
                <guisubmenu>Crop</guisubmenu>
              </menuchoice>.
            </para>
          </listitem>
          <listitem>
            <para>
              As well as being able to create guides, there's now a grid
              functionality in <acronym>GIMP</acronym>.
              It is complementary to the guides functionality and makes it
              easier to position objects so that they align perfectly.
            </para>
          </listitem>
          <listitem>
            <para>
              The Layers dialog is more coherent, in that there are no more
              hidden functions accessed only with right click on the miniature
              image of the layer that appears there. You can now handle layer
              operations directly from the image menu: Layer Mask,
              Transparency, Transformation and Layer Color operations are
              directly in the Layer submenu.
            </para>
          </listitem>
          <listitem>
            <para>
              Color display filters are now available from the image
              menu
              <menuchoice>
                <guimenu>View</guimenu>
                <guisubmenu>Display Filters</guisubmenu>
              </menuchoice>.
              Using them, you can
              simulate different gamma values, different contrasts, or
              even color deficient vision, without altering your
              original image. This actually has been a feature of the
              <acronym>GIMP</acronym> developer versions for a long
              time, but it has never been stable enough to appear in
              a stable version of the <acronym>GIMP</acronym> before.
            </para>
          </listitem>
          <listitem>
            <para>
              The color selection dialog has a new CMYK mode, associated with
              the printer icon.
            </para>
          </listitem>
          <listitem>
            <para>
              Data stored in <acronym>EXIF</acronym>
              tags by digital cameras are now handled in read and write mode
              for JPEG files.
            </para>
          </listitem>
          <listitem>
            <para>
              MNG animations are now supported. The MNG file format can be
              considered as animated PNG. It has all the advantages of PNG
              over GIF, such as more colors, 256 levels of transparency, and
              perhaps most importantly, lack of patent encumbrance. The format
              is a web standard and all recent popular web browsers support
              it.
            </para>
          </listitem>
          <listitem>
            <para>
              The <acronym>GIMP</acronym> Animation package now does
              onion-skinning, a
              bluescreen feature was added as well as audio support.
            </para>
          </listitem>
          <listitem>
            <para>
              A channel mixer filter, previously available from the web as an
              add-on, appears in
              <menuchoice>
                <guimenu>Filters</guimenu>
                <guisubmenu>Colors</guisubmenu>
              </menuchoice>.
            </para>
          </listitem>
        </itemizedlist>
      </listitem>
    </varlistentry>
  </variablelist>
</sect1>
