Based on original patches from Hartmut Kuhse and modified
by Michael Natterer. Changes include:
- remove libexif dependency and add a hard dependency on gexiv2
- typedef GExiv2Metadata to GimpMetadata to avoid having to
include gexiv2 globally
- add basic GimpMetadata handling functions to libgimpbase
- add image and image file specific metadata functions to libgimp,
including the exif orientation image rotate dialog
- port plug-ins to use the new APIs
- port file-tiff-save's UI to GtkBuilder
- add new plug-in "metadata" to view the image's metadata
- keep metadata around as GimpImage member in the core
- update the image's metadata on image size, resolution and precision
changes
- obsolete the old metadata parasites
- migrate the old parasites to new GimpMetadata object on XCF load
Source file ("unique.c") includes header file from subdirectory
("gui/gimpdbusservice.h") which includes generated header file
("gimpdbusservice-generated.h").
In off-root builds this file isn't created in the same directory,
therefore the directory needs to be explicitly added as an include path.
And along with it a lot of stuff like the drawable preview cache, the
gegl tile manager backend, temporary gimp_gegl_buffer_foo() stuff, and
the remaining bits of performance.
The projection is in an evil semi-ported state which makes it work
ok-ish for stuff like layer moving, but absolutely unbearable for
painting, there is also an off-by-one rendering glitch at some zoom
levels.
gimpdir goes to ~/Library/Gimp/x.y
thumbnails go to ~/Library/Caches/org.freedesktop.thumbnails
The thumbnail location is not standardized yet, but is the only
location that makes sense. Also fix user install to search old
gimpdirs to migrate in both Library and the classic location.
Remove the obsolete CABON_CFLAGS from all makefiles.
We must only generate a git-version.h if we have a .git dir or if we
have no git-version.h at all. Otherwise building from a tarball will
destroy the distributed git-version.h.
Also remove #define GIMP_GIT_LAST_COMMIT_YEAR, we don't use it.
Use `git describe` for verbose version, it provides more info than
just the commit ID, and it feels sane to use an existing command for
this. Note that the commit ID is prefixed with 'g'.
This step moves the %.rc.o pattern rule to a small include file in the
build/windows/ directory. Michael Natterer suggested this approach in
order to minimize the changes done to each executable's Makefile.am.
Eventually all executables will have the manifest and version resources
linked. In this initial step, the current resources are moved from the
app/ directory to a global build/windows directory.
Previously, git-version.h always recorded the latest commit on the
master branch. This change should record the current commit (which is
what gets built) regardless of the branch.
I've checked that it does "the right thing" regarding multi-parent
merges by checking out such a merge commit, generating git-version.h and
comparing it to the commit sha1 in the log.
In order to make a clear separation between the core modules and the
UI modules, move the necessary enums from display-enums.h and
widgets-enums.h to config-enums.h and the files
gimpdisplayoptions.[ch] from the display to the config module. This
removes the config -> display dependency.
This change has three main benefits
* It lets us remove includes of display files from the config module
* We don't have to link gimp-console and test-config with a subset of
object files from the display module
* It is reflected in devel-docs/gimp-module-dependencies.svg that the
application is made up of core modules and UI modules and that no
core module depends on any UI module
Add a VERSIONINFO resource to gimp.rc.in, use windres to create object files
for gimp and gimp-console with file-specific information.
Finally, add gimp.rc to .gitignore.
This resource file can potentially be used for all other exectuables and
shared objects, but some adjustments can become necessary.
Enable us to have regression testing by introducing a core testing
framework that uses the GLib JUnit-like test library.
Do this by adding a new subdir app/tests that will contain all our
tests (it contains one trivial test already). Also add app/tests.[ch]
with a new function gimp_init_for_testing() so that test cases can
easily setup the core object system.
Clean up subsystem linking dependencies by
* Rearranging LDADD entries to better match architectural layers
* Being clear about why we need to pass -u in LDFLAGS some times
* Adding FIXMEs when we have broken dependencies
* Introducing a helper variable so we can share LDADD between
gimp-console and gimp
2008-10-26 Michael Natterer <mitch@gimp.org>
Merge on-canvas GSoC project:
* configure.in: check for pangocairo.
* app/Makefile.am
* app/text/Makefile.am: add its CFLAGS and LIBS.
* app/text/gimptext-bitmap.[ch]
* app/text/gimptext-private.h
* app/text/gimptext-vectors.[ch]
* app/text/gimptextlayer.c
* app/text/gimptextlayout-render.c
* app/text/gimptextlayout.c: port to pangocairo.
* menus/Makefile.am
* menus/text-tool-menu.xml
* app/menus/menus.c
* app/actions/Makefile.am
* app/actions/actions.c
* app/actions/text-tool-actions.[ch]
* app/actions/text-tool-commands.[ch]: add a context menu for the
text tool similar to GtkEntry's context menu.
* app/tools/gimprectangletool.[ch]: add "narrow-mode" property.
* app/tools/gimptextoptions.[ch]
* app/widgets/gimptexteditor.[ch]: take a text buffer for the
standalone text editor window instead of creating one internally.
* app/tools/gimptexttool.[ch]: all the new wonderful on-canvas
text editing logic. Wheee!
svn path=/trunk/; revision=27419
2008-10-18 Sven Neumann <sven@gimp.org>
Applied patch from Alexia Death as attached to bug #471344:
* app/core/Makefile.am
* app/core/gimpcoords-interpolate.[ch]: new files with
interpolation code taken from ...
* app/vectors/gimpbezierstroke.c: ... here.
* app/Makefile.am (AM_LDFLAGS): make it link.
svn path=/trunk/; revision=27314
2008-10-13 Sven Neumann <sven@gimp.org>
* app/Makefile.am
* app/signals.[ch]: new files with code split out of main.c.
* app/main.c: changed accordingly.
svn path=/trunk/; revision=27270
2008-08-07 Tor Lillqvist <tml@novell.com>
* configure.in: Define WIN32_LARGE_ADDRESS_AWARE as
-Wl,--large-address-aware on 32-bit Windows, empty
otherwise. AC_SUBST() it.
* app/Makefile.am (win32_ldflags): Use WIN32_LARGE_ADDRESS_AWARE
instead of hardcoding the switch, as it isn't valid, and would be
pointless, when building a 64-bit GIMP.
svn path=/trunk/; revision=26411
2008-07-17 Tor Lillqvist <tml@novell.com>
* app/Makefile.am (win32_ldflags): Use -Wl,--large-address-aware
on Windows so that we can use more that 2 GB user data space (if
available; i.e. if running on a 64-bit OS, or a 32-bit OS booted
with /3GB). See discussion in bug #522073.
svn path=/trunk/; revision=26220
2008-07-11 Sven Neumann <sven@gimp.org>
* app/Makefile.am
* app/unique.[ch]: new files containing functionality to check
for
an already running instance of GIMP of notifying it about files
to
open. Code split out of main.c.
* app/main.c: changed accordingly.
svn path=/trunk/; revision=26117
2008-05-20 Michael Natterer <mitch@gimp.org>
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpimagemapconfig.[ch]: new GimpViewable subclass
which has a "time" property. Sets the object's name to a date
string if a time != 0 gets set. Has a compare function which first
sorts the objects with a timestamp in MRU order and then the
objects without timestamp by name.
* app/gegl/gimpbrightnesscontrastconfig.[ch]
* app/gegl/gimpcolorbalanceconfig.[ch]
* app/gegl/gimpcolorizeconfig.[ch]
* app/gegl/gimpcurvesconfig.[ch]
* app/gegl/gimphuesaturationconfig.[ch]
* app/gegl/gimplevelsconfig.[ch]
* app/gegl/gimpposterizeconfig.[ch]
* app/gegl/gimpthresholdconfig.[ch]: derive from GimpImageMapConfig.
* app/tools/gimpimagemaptool.c: sort the settings container with
above compare function.
* app/tools/gimpimagemaptool-settings.c: add utility functions
for loading and saving the settings container. In the settings
combo, add a separator between MRU items and favorites.
* app/Makefile.am: make the thing link.
svn path=/trunk/; revision=25724
2008-05-09 Simon Budig <simon@gimp.org>
* app/core/gimpscanconvert.[ch]: removed Libart usage,
replaced with Cairo. Dashed strokes do not yet work again, will
happen tomorrow. Also the blending modes need a second look at.
Also removed deprecated API which made it unnecessarily complicated.
* app/tools/gimpiscissorstool.c: use the current API.
* app/core/Makefile.am
* app/Makefile.am
* configure.in: removed libart dependency, added cairo dependency
where necessary.
svn path=/trunk/; revision=25591
2008-02-26 Sven Neumann <sven@gimp.org>
* app/Makefile.am (gimp_2_5_LDFLAGS): don't assume that global
AM_LDFLAGS and per-target LD_FLAGS would sum up and explicitly
add
AM_LDFLAGS to gimp_2_5_LDFLAGS.
svn path=/trunk/; revision=24987
2008-02-26 Tor Lillqvist <tml@novell.com>
* app/version.[ch]: New files. Rename gimp_show_version() to
gimp_version_show() and move here. When given both --version and
--verbose, print build-time and run-time versions of the most
important dependencies.
* app/Makefile.am: Add them.
* app/main.c: Call gimp_version_show().
* app/Makefile.am: Use -mwindows only for the GUI gimp, not for
gimp-console.
svn path=/trunk/; revision=24968
2007-12-29 Øyvind Kolås <pippin@gimp.org>
Added adapter GEGL operations for reading and writing to TileManagers.
* configure.in:
* app/Makefile.am: added gegl subdir.
* app/gegl/Makefile.am: added.
* app/gegl/gimpops.c: (gimp_gegl_ops_init):
* app/gegl/gimpoptilesink.[ch]: adapter GEGL operation for writing to
GIMP tile managers.
* app/gegl/gimpoptilesource.[ch]: adapter GEGL operation for reading
from GIMP tile managers.
* app/main.c: (main): call gimp_gegl_ops_init()
* app/gegl/gegl/: added some headers from GEGL that are not installed
since they are not public API yet.
svn path=/trunk/; revision=24458
2007-11-15 Michael Natterer <mitch@gimp.org>
* app/Makefile.am
* app/gimp-log.[ch]: new files implementing a log facility which
can be enabled using the GIMP_LOG environment variable.
* app/main.c: initialize it.
* app/display/gimpdisplayshell-callbacks.c: use it instead of
private debugging macros that need to be enabled at compile time.
svn path=/trunk/; revision=24160
2007-10-31 Michael Natterer <mitch@gimp.org>
* configure.in
* app/Makefile.am
* tools/Makefile.am: bump some more hardcoded 2.4 to 2.5
svn path=/trunk/; revision=24017
2007-09-03 Michael Natterer <mitch@gimp.org>
* Made 2.4.0-rc2 release.
* app/Makefile.am (dist-dump-gimprc): added some sed voodoo to
make sure the num-processors in the distributed gimprc and its
manpage don't depend on the machine that does make dist.
svn path=/trunk/; revision=23453
2007-08-30 Michael Natterer <mitch@gimp.org>
First version of global menubar support for OSX. Work in progress.
* app/gui/Makefile.am
* app/gui/sync-menu.[ch]: new files containing code that takes
a GtkMenuShell and proxies it in the OSX global menubar. Taken
from http://developer.imendio.com/projects/gtk-macosx/menubar
* app/gui/gui.c: put the global image popup menu to the menubar.
* app/dialogs/preferences-dialog.c
* app/display/gimpdisplayshell.c
* app/widgets/gimptoolbox.c: #ifdef out all menubars in windows.
* app/Makefile.am (AM_LDFLAGS): add $(CARBON_LDFLAGS)
svn path=/trunk/; revision=23408
2007-08-15 Sven Neumann <sven@gimp.org>
* configure.in: bumped the version to 2.4.0-rc1.
* README
* INSTALL: updated for the GIMP 2.4 release candidate(s).
* data/images/gimp-splash.png: added splash screen for the 2.4
release candidate(s).
* app/Makefile.am
* tools/Makefile.am: adjust targets for 2.4.
svn path=/trunk/; revision=23281
2007-06-25 Sven Neumann <sven@gimp.org>
* configure.in: removed extra check for gthread and fold it into
the GLIB and GTK checks.
* */Makefile.am: changed accordingly.
* app/main.c (main): always call g_thread_init().
svn path=/trunk/; revision=22832
2007-04-18 Sven Neumann <sven@gimp.org>
* app/plug-in/Makefile.am
* app/plug-in/gimppluginmanager.[ch]
* app/plug-in/gimppluginmanager-restore.[ch]: moved
gimp_plug_in_manager_restore() to it's own file.
* app/core/gimp.c: changed accordingly.
* app/Makefile.am (LDFLAGS): convince the linker to do its job.
svn path=/trunk/; revision=22286
2007-01-30 Michael Natterer <mitch@gimp.org>
* app/vectors/Makefile.am
* app/vectors/vectors-types.h
* app/vectors/gimpvectorspropundo.[ch]: new undo class which
implements GIMP_UNDO_VECTORS_REPOSITION.
* app/core/gimpimage-undo-push.c: use it here.
* app/Makefile.am: another lame linker hack to make it build with
the new file that is not used in app/vectors/ itself.
svn path=/trunk/; revision=21818
2007-01-19 Sven Neumann <sven@gimp.org>
* INSTALL
* configure.in: check for D-Bus GLib bindings.
* app/Makefile.am
* app/main.c: check if an interactive GIMP instance proposes
itself on the D-Bus and delegate to it. Allow this behaviour to be
overridden by using the --new-instance command-line option.
* app/widgets/Makefile.am
* app/widgets/gimpdbusservice.[ch]
* app/widgets/dbus-service.xml: added an object that offers a
D-Bus service.
* app/gui/Makefile.am
* app/gui/gui.c: connect to the D-Bus and export the GimpDBusService.
svn path=/trunk/; revision=21737
2006-10-27 Sven Neumann <sven@gimp.org>
* libgimpconfig/gimpcolorconfig-enums.[ch]
* libgimpconfig/gimpcolorconfig.c
* libgimpconfig/gimpconfig.def: removed unused enum
GimpColorFileOpenBehaviour.
* app/core/core-enums.[ch]: added enum GimpColorProfilePolicy.
* app/config/gimpcoreconfig.[ch]
* app/config/gimprc-blurbs.h: added property
"color-profile-policy".
* app/plug-in/Makefile.am
* app/plug-in/plug-in-icc-profile.[ch]: new files that wrap
usage
of the lcms plug-in.
* app/file/file-open.c: implement the user-configured policy for
embedded color profiles.
* app/widgets/gimpimageprofileview.c: use the wrapper to call
the
plug-in-icc-profile-info procedure.
* app/widgets/gimptoolbox-dnd.c: pass TRUE for "attach_comment"
parameter to gimp_create_image().
* app/core/gimptemplate.c
* app/file/Makefile.am: cosmetic changes.
* app/Makefile.am: some resorting to make the beast link again.