                   ------------------------------
                   GNU Image Manipulation Program
                          Development Branch
                   ------------------------------

This is the unstable development branch of GIMP.  Here we are working
towards the next stable release, which will be GIMP 2.8.


Changes in GIMP 2.7.2
=====================


UI:

 - A lot of undeprecations due to GTK+ 2.22 and 2.24
 - Lots and lots of cairo porting, calls to gdk_draw_* are gone
 - Merge the cage transform tool from GSoC
 - Remove the old bitmap cursors completely and always use RGBA cursors
   also for compat cursors for old X servers
 - Add new GimpCanvasItem infrastructure with subclasses for everything
   that needs to be drawn on the canvas and port all tools to canvas items,
   this is a huge change that touches all tools and almost all display
   code, and which finally gets rid of XOR drawing altogether
 - Switch from purely idle-rendering the display to something that ensures
   a minimum framerate, so we don't fail to update under heavy load
 - Make the text tool handle RTL mode better
 - Change GimpColorMapEditor to use the newly added proxy GimpPalette
 - Replace the brush scale control in tool options by a brush size
   one that works in pixels, and does the right thing when the brush
   changes
 - Add new widget GimpSpinScale which is a scale with number entry,
   and use it in all tool options
 - Make the brush, pattern etc. selectors in tool options more
   compact and allow to directly jump to the editor dialogs
 - Make handle sizes in tools consistent
 - Add an on-canvas progress and use it for tool progress instead of
   the statusbar
 - Add a new GimpToolPalette class with lots of code that was
   in GimpToolBox
 - Allow to properly drop into and after a layer group
 - Refactor and clean up the dynamics editor widget, and add colors
   for the curves
 - Add support for F2 to rename items in lists
 - Clean up GimpDeviceStatus internally and visually
 - Allow to set GimpToolPreset's icon using the new GimpIconPicker widget
 - Make the text tool's style overlay show default values from the
   text object if there is no style active at the cursor position/selection
 - Show the the text size's unit in the text style overlay
 - Make tool dialogs transient to the image window again
 - Consistently add a "gimp-" prefix to all window roles
 - Make the preset buttons in tool options work on the global tool
   presets instead of the removed per-tool preset lists
 - Add GimpControllerMouse, which allows to bind extra mouse buttons to
   arbitrary actions


Core:

 - Add uniform API to turn any GimpItem's outline into a selection
 - Add support for color tags in text layers
 - Remove the selection_control() stuff from GimpImage and with it
   maybe last piece of UI code still not properly separated
 - Add more validation code for XCF loading
 - Add accessors to GimpPalette and use them globally
 - Keep a proxy GimpPalette around for the image's colormap
 - Don't scale SVGs when pasting or importing them
 - A lot of changes to the input device handling code, partly
   merged from the gtk3-port branch, add GimpDeviceManager class
 - Add smoothing of paint strokes
 - Fix display filters to work on a cairo surface
 - Fix and enhance GimpImage's URI/filename handling API
 - Unset "removed" flag on items when they get added back to
   the image from the undo stack
 - Change item creation to properly use GObject properties and
   remove item_configure() and drawable_configure()
 - Refactor tool event handling and move lots of stuff into
   utility functions
 - Clean up GimpViewRenderer API
 - Implement transforms on group layers
 - Clean up the transform tool a lot, and refactor away old junk
 - Tool and tool event cleanup: enforce tool activate/halt invariants,
   consistently shutdown all tools in control(HALT), and many other
   tool fixes
 - Remove GimpToolPresets object, this functionality got merged into
   the new GimpToolPreset system
 - Rename GimpFilteredContainer to GimpTaggedContainer and add a new
   GimpFilteredContainer parent class which is a generic filter
 - Remove the concept of an "offset" from TileManager and instead
   pass around the offsets explicitly when needed, like when
   transforming
 - Move GimpBezier desc from vectors/ to core/ and add API to create
   one from sorted BoundSegs
 - Change GimpBrush boundary API to return a GimpBezierDesc
 - Add GimpBrushCache object and use it to cache a brush's transformed
   pixels and its outline, remove the caching code from GimpBrushCore
 - Add GimpBezierDesc based API to GimpScanConvert and use it


GEGL:

 - Add operations and gegl infrastructure for the cage tool


Libgimp:

 - Introduce an "item" type in the PDB and libgimp and deprecate
   lots of old API in favor of item API
 - Add procedures to create, traverse and manipulate layer trees
 - Add more state to the context API, and deprecate functions with
   too many parameters in favor of simpler ones that use context states,
   particularly the entire transform and selection API
 - Move GimpUnitStore and GimpUnitComboBox to libgimpwidgets, and
   use them in GimpSizeEntry, deprecate GimpUnitMenu.
 - Deprecate gimp_min_colors() and gimp_install_cmap()
 - Add API that enables GimpRuler to track motion events by itself
 - Add new selection API and deprecate all old selection functions
 - Move around and rename all parasite functions, deprecate the old ones
 - Add a generated PDB file in the "gimp" namespace and get rid
   of "gimpmisc"
 - Add unit conversion functions to libgimpbase
 - Add function to reset a plug-in's context to default values


Plug-ins:

 - Make script-fu server IPv6 aware
 - Follow libgimp deprecations in plug-ins and scripts
 - Add PDF export plugin
 - Lots of cairo porting here too
 - UTF-8 fixes in script-fu
 - Set the progress to 1.0 when done
 - Merge a lot of upstream fixes into script-fu's Tinyscheme
 - Add "New Layer" option to MapObject
 - Support loading of 16-bit raw PPM files
 - Add web-page, a new plug-in which renders images of web pages
 - Fix some more plug-ins to not warn if applied on an empty region


Data:

 - Remove "Untitled" from palette names entries


Developer documentation:

 - Move libgimp documentation from templates to inline comments
 - Generate standard deprecated sections


Source and build system:

 - Add more code documentation
 - Add more unit tests and refactor existing ones to use global
   test utility functions
 - Add a manifest to executables (app and plug-ins, Win32)
 - Depend on GLib 2.28, GTK+ 2.24, Cairo 1.10
 - Make WebKit available to all plug-ins, not just the help browser
 - Run UI tests on Xvfb if available
 - Check for GdkPixbuf separately because it's now a separate library
 - Allow tests to use uninstalled plug-ins from the build dir
 - Remove, comment out, or build for GIMP_UNSTABLE some stuff that
   should not be in a stable release


General:

 - Improve safety on Win32 by calling SetDllDirectory() and
   SetProcessDEPPolicy()
 - Switch from GtkObject::destroy() to GObject::dispose() all over
   the place
 - Various changes that make maintaining the gtk3-port branch easier,
   such as s/GtkAnchorType/GimpHandleAnchor/ and s/GtkObject/GtkAdjustment/
 - Don't use gtk_container_add() for adding to GtkBoxes
 - Inherit from GtkBox directly, not from GtkHBox/GtkVBox
 - Add namespace to the ink blob types and functions
 - Remove all useless calls to gtk_range_set_update_policy()
 - Use GObject::constructed() instead of GObject::constructor() all
   over the place
 - Move more members to private and add accessors for them
 - Stop using GdkNativeWindow, use guint32 instead
 - Plug memory leaks
 - Remove ps-menurc, we are not a PS clone
 - Use the new g_[s]list_free_full() instead of foreach() and free()
 - Don't use newly deprecated GTK+ API
 - Use the new GDK_KEY_foo key names
 - Lots of bug fixes and cleanup
 - Lots of translation updates


Changes in GIMP 2.7.1
=====================


UI:

 - Add "lock content" button to the layers, channels and paths dialogs,
   make the lock buttons more compact
 - Refuse to edit locked items
 - Add support for layer groups
 - Improve internals and GUI of the save/export functionality
 - Move the shortcut dialog's "clear" button into the entry
 - Clean up UI code by introducing GimpDockWindow and GimpImageWindow
   classes
 - Support multi-column dock windows
 - Get rid of docking bars, use highlights in existing widget hierarchy instead
 - Remove toolbox-window-hint gimprc setting and use dock-window-hint
   for both toolbox and docks instead
 - Move GimpDock::default-height style property to GimpDockWindow
 - Polish save+export path-part precedence rules
 - Merge the GSoC 2009 Advanced GUI for Brush Dynamics project
 - Default to non-fixed-aspect in Canvas Size dialog
 - Add a still incomplete and Single-window mode
 - Have an Export button, not Save, in export dialogs
 - Improve Free Select Tool handle highlighting
 - Support changing user interface language from preferences
 - Update ps-menurc with PS CS4 keyboard shortcuts
 - Reduce spacing around canvas and use it for the canvas itself
 - Put name of active dockables in dock window titles
 - Don't have Toolbox in list of Recently Closed Docks, handle that
   directly in the Windows menu
 - Support selecting and tagging multiple objects in resource lists
 - Improve on-canvas text editing and text attribute setting
 - Add GimpContainerTreeStore and use it in all GtkTreeStore based views
 - Add a new default "automatic" tab style that makes sure dockable tabs
   always show as much detail as possible
 - Remove the dockable title bar and add the menu arrow button next to the
   notebook tabs
 - Add an icon for the desaturate tool
 - Add 'Rule of fifths' crop guide overlay
 - Make Alt+Click on layers not affect active layer


Core:

 - Make all GimpItems lockable so their contents can't be changed
 - Make more sense when naming imported layers
 - Make group layers work except for layer masks and save them in
   the XCF
 - Change GimpProjectable::update to GimpProjectable:invalidate
 - Make sure we don't mix font backends (and crash) by explicitly
   asking for FT/Fontconfig backends
 - Move members of GimpObject to a private struct
 - gimp_object_get_name() takes a gconstpointer now, remove casts
   from all callers
 - Let drawables connect to their floating selection's "update" signal
   instead of letting the image do this job
 - Fix brush rotation artifacts at even 90 degree rotation
 - Don't leak shared tile memory on Solaris
 - Add a PDB procedure to access a text layer's markup
 - Remove legacy cruft from pdbgen and make sure number ranges are correct
 - Move all image creation functions to a common file
 - Add translation context to all undo descriptions


GEGL:

 - Make sure all nodes are added to their resp. graphs
 - Use GEGL for layer scaling if use-gegl is TRUE


Plug-ins:

 - Updated script-fu's scheme to latest upstream fixes
 - Don't store image-specific print settings globally
 - Add fundamental OpenRaster (.ora) import and export support
 - Add RGB565 support to the csource plug-in


Data:

 - Add texture/grunge brushes made by Johannes Engelhardt


Developer documentation:

 - Explain GimpContext
 - Add SVG graphic with GIMP application core module dependencies
 - Add a schedule for 2.8 development


Source and build system:

 - Add more code documentation
 - Clean up subsystem linking dependencies in app/
 - Add unit testing framework in app/tests/ and some basic tests,
   including basic UI tests and XCF tests
 - Tentatively introduce usage of using Glade + GtkBuilder
 - Depend on GLib 2.24.0 and GTK+ 2.20.0
 - Add git commit hash in --verbose --version output
 - Don't version control gtk-doc.m4, get it from gtkdocize
 - Add GimpObject tracking code
 - Plug memory leaks
 - Lots of bug fixes and cleanup
 - Lots of translation updates


Changes in GIMP 2.7.0
=====================

UI:
 - Change the Text Tool to perform text editing on-canvas (GSoC 2008)
   and add the ability to mix different text styles in the same layer
 - Add support for tagging GIMP resources such as brushes and allow
   filtering based on these tags (GSoC 2008)
 - Separate the activities of saving an image and exporting it, there is
   now a 'File->Export...' for example
 - Port file plug-ins to new export API which gets rid of many
   annoying export dialogs
 - Add a simple parser to size entry widgets, images can be scaled
   to e.g. "50%" or "2 * 37px + 10in"
 - Arrange layer modes into more logical and useful groups
 - Added support for rotation of brushes
 - Make the Pointer dockable show information about selection position
   and size
 - Get rid of the Tools dockable and move toolbox configuration to
   Preferences
 - Allow closing the toolbox without closing the whole application
 - Add status bar feedback for keyboard changes to brush parameters
 - Add diagonal guides to the Crop Tool
 - New docks are created at the pointer position
 - Add support for printing crop marks for images
 - Move 'Text along path' from tool options to text context menu
 - Change default shortcuts for "Shrink Wrap" and "Fit in Window" to
   Ctrl+J and Ctrl+Shift+J respectively since the previous shortcuts
   are now used for the save+export feature
 - Make Alt+Click on layers in Layers dockable create a selection from
   the layer
 - Allow to specify written language in the Text Tool
 - Support custom mapping curves for input device properties like "Pressure"
 - New desktop launcher icon
 - Add 'Windows→Hide docks' menu item that does what 'Tab' does and also displays
   its state. Make the state persistent across sessions, too.
 - Make dock window title separators translatable


Plug-ins:

 - Map the 'Linear Dodge' layer mode in PSD files to the 'Addition'
   layer mode in GIMP
 - Add JPEG2000 load plug-in
 - Add X11 mouse cursor plug-in
 - Add support for loading 16bit (RGB565) raw data
 - Add palette exporter for CSS, PHP, Python, txt and Java, accessed
   through palette context menu
 - Add plug-in API for getting image URI, for manipulating size of
   text layers, for getting and setting text layer hint, and for
   unified export dialog appearance
 - Add an 'As Animation' toggle to the GIF export options
 - Add 'active_vectors' getsetter to Python 'gimp.Image'


Data:

 - Add large variants of round brushes and remove duplicate and
   useless brushes
 - Add "FG to BG (Hardedge)" gradient


GEGL:

 - Port the projection code, the code that composes a single image
   from a stack of layers, to GEGL
 - Port layer modes to GEGL
 - Port the floating selection code to GEGL
 - Refactor the layer stack code to prepare for layer groups later
 - Prepare better and more intuitive handling of the floating
   selection
 - Add File->Debug->Show Image Graph that show the GEGL graph of an
   image
 - Allow to benchmark projection performance with
   File->Debug->Benchmark Projection
 - When using GEGL for the projection, use CIELCH instead of HSV/HSL
   for color based layer modes


Core:

 - Make painting strokes Catmull-Rom Spline interpolated
 - Add support for arbitrary affine transforms of brushes
 - Add support for brush dynamics to depend on tilt
 - Add aspect ratio to brush dynamics
 - Add infrastructure to soon support vector layers (GSoC 2006)
 - Rearrange legacy layer mode code to increase maintainability
 - Drop support for the obsolete GnomeVFS file-uri backend
 - Allow to dump keyboard shortcuts with File->Debug->Dump Keyboard
   Shortcuts
 - Prepare data structures for layer groups
 - Remove gimprc setting "menu-mnemonics",
   "GtkSettings:gtk-enable-mnemonics" shall be used instead
 - Remove "transient-docks" gimprc setting, the 'Utility window' hint
   and a sane window manager does a better job
 - Remove "web-browser" gimprc setting and use gtk_show_uri() instead


General:

 - Changed license to (L)GPLv3+
 - Use the automake 1.11 feature 'silent build rules' by default
 - Lots of bug fixes and cleanup
