Based on a patch by Hartmut Kuhse, run all strings through
gimp_any_to_utf8() which always returns something that's UTF-8, even
if it's only "(invalid UTF-8 String)". Better than crashing.
Also fix the errors that were discovered by it. Multiple
definitions of global variables are no longer silently combined by
the linker, and will be reported as errors.
If you see GIMP crash strangely (i.e, apart from the usual crashes),
please go see a head doctor.
Created a resource file for plug-ins and a rule to link it to them.
The application icon file is smaller than the default one, there's no
point in doubling the size of a plug-in executable just for an icon.
If no problems turn up, this will close the bug.
The new interface provides a common set of methods used by other gtk
widgets (e.g. GtkEntry). This interface is bound to the XMPModel
allowing writing/reading to and from the XMPModel utilised by the
widgets.
It is now possible to create an entry widget by using g_object_new and
provide three parameters: the schema_uri, the property name you want to
subscribe and an instance of an xmp-model.
I changed the name of the GimpXMPModelEntry, which reads now better as
GimpXmpModelEntry. I removed functions in the interface, which are not
in use anymore, because of the code improvements in the entry widget and
the XMPModel. The new entry widget is not build as a library anymore.
The XMPModel listens now on the row-changed event and checks if the row
belong to a property or schema change. If a property change occured a
detailed property-changed signal is emitted. A detailed schema-changed
signal is currently not emitted, because not implemented.
The client can now subscribe to a specific property-change signal. The
detail is provided as <xmp-schema-prefix>:<xmp-property-name>. The
xmpdump test program was used to verify that the implementation works.
The problem is that the parser adds an empty property value when
parsing an empty Alt-array, "<rdf:Alt/>".
But when it is encoded it is expected to be in the form of a NULL
terminated array of pairs of property values, with the result that the
NULL terminator is considered the second element of the first pair and
the loop encoding these properties goes beyond the end of the array,
thus dereferencing invalid pointers.
This commit alters the parser to avoid adding dummy values when empty
rdf:Alt, rdf:Bag and rdf:Seq elements are found.
Added a function to merge the Exif data into the xmp model. The function
is using the image id and to access the Exif data parasite. For each
Exif property a corresponding value in the XMP model is created.
2009-02-12 Michael Natterer <mitch@gimp.org>
* plug-ins/file-faxg3/Makefile.am
* plug-ins/help/Makefile.am
* plug-ins/metadata/Makefile.am: add $(libgimpconfig) to LDADD
where it was missing. Libgimp pulls in libgimpconfig and these
plug-ins were linking against the installed libgimpconfig under
some #$&%*#%&%$& .la file circumstances.
svn path=/trunk/; revision=28017
2009-01-17 Michael Natterer <mitch@gimp.org>
* all files with a GPL header and all COPYING files:
Change licence to GPLv3 (and to LGPLv3 for libgimp).
Cleaned up some copyright headers and regenerated the parsers in
the ImageMap plugin.
svn path=/trunk/; revision=27913
2008-10-19 Sven Neumann <sven@gimp.org>
* plug-ins/metadata/xmp-encode.c
* plug-ins/metadata/xmp-parse.c
* plug-ins/metadata/metadata.c
* plug-ins/metadata/xmpdump.c: removal of unused includes and
other minor cleanups.
svn path=/trunk/; revision=27332
2008-10-19 Sven Neumann <sven@gimp.org>
Bug 493778 – metadata plug-in crashes on some images
* plug-ins/metadata/xmp-encode.c (gen_property): introduced a
utility function to create XML elements. Deal gracefully with
NULL
and empty values. Does not fix the crash, but fixes a warning
that
has been reported in the same bug report.
svn path=/trunk/; revision=27323
2007-08-29 Raphael Quinet <raphael@gimp.org>
* plug-ins/metadata/xmp-encode.c (gen_property): escape the text
values output in the XMP packet. Based on a bug report and patch
by John Marshall. Fixes bug #455481.
svn path=/trunk/; revision=23398
2007-04-12 Raphael Quinet <raphael@gimp.org>
* plug-ins/metadata/xmp-parse.c: made the parser more tolerant and
accept XMP blocks that are not using the namespace prefixes
recommended by the XMP specification.
svn path=/trunk/; revision=22242
2006-05-30 Raphael Quinet <raphael@gimp.org>
* plug-ins/metadata/xmp-parse.c: protect against broken XMP blocks
using rdf:Alt instead of rdf:Seq. Fixes bug #343315.
* plug-ins/metadata/xmpdump.c (main): call g_set_prgname() to get
better messages from glib.
* data/images/gimp-splash.png: new splash screen, waiting for the
old animation feature to be restored.
2005-09-09 Michael Natterer <mitch@gimp.org>
Added parent window API to the GimpProgress interface and to
the libgimp progress stuff. Might look strange, but does
the right thing in almost all cases (image window, file dialog,
script-fu dialog etc). Fixes bug #62988.
* app/core/gimpprogress.[ch]: added GimpProgress::get_window()
which should return a toplevel window ID if the progress is in a
window that wants to be the transient parent of plug-in dialogs.
* app/widgets/gimpwidgets-utils.[ch] (gimp_window_get_native): new
function which returns the window handle of a GtkWindow's GdkWindow.
* app/widgets/gimpfiledialog.c: implement ::get_window().
* app/display/gimpdisplay.[ch]: ditto. Removed window handle API.
* app/gui/gui-vtable.c: changed accordingly.
* libgimpbase/gimpbaseenums.[ch] (enum GimpProgressCommand):
added GIMP_PROGRESS_COMMAND_GET_WINDOW.
* app/plug-in/plug-in-progress.[ch] (plug_in_progress_get_window):
new function. Also renamed some functions to match the
GimpProgress interface, and not the legacy PDB procedure names.
* tools/pdbgen/pdb/progress.pdb
* app/core/gimppdbprogress.c: implement get_window() on both
sides of the wire, keeping backward compatibility (hopefully).
* libgimp/gimpprogress.[ch]: deprecated gimp_progress_install()
and added gimp_progress_install_vtable() which takes a vtable with
padding to be extensible. Added get_window() vtable entry and
dispatch it accordingly. Also added pulse() which was implemented
in a hackish way before. Everything is of course backward
compatible.
* libgimp/gimpprogressbar.c: inmplement the get_window() stuff
so a plug-in dialog containing a progress can be the transient
parent of another dialog in another plug-in.
* libgimp/gimpui.[ch] (gimp_ui_get_progress_window): new function
which returns a foreign GdkWindow of this plug-ins progress
window.
Renamed gimp_window_set_transient_for_default_display() to
gimp_window_set_transient() and make it use the progress' window
handle instead of the display's (which is the right thing to do in
almost all cases).
* libgimp/gimp.def
* libgimp/gimpui.def: add the new functions.
* tools/pdbgen/enums.pl
* app/pdb/internal_procs.c
* app/pdb/progress_cmds.c
* libgimp/gimpprogress_pdb.[ch]: regenerated.
* libgimp/gimpexport.c
* plug-ins/*/*.c: follow API change.
2005-09-05 Sven Neumann <sven@gimp.org>
* plug-ins: Call gimp_window_set_transient_for_default_display()
for most plug-in dialogs. Not yet done are load and save dialogs
and dialogs created from language bindings.
2005-08-23 Sven Neumann <sven@gimp.org>
* app/base/siox.c: minor optimizations.
* app/actions/gradients-actions.c
* app/actions/patterns-actions.c
* plug-ins/metadata/interface.c: applied patch from Stephan Binner
that fixes wrong use of ellipsis (bug #309657).
2005-08-18 Michael Natterer <mitch@gimp.org>
* plug-ins/common/animoptimize.c
* plug-ins/common/pnm.c
* plug-ins/metadata/interface.c
* plug-ins/metadata/metadata.c: some forgotten canonical names.
* plug-ins/metadata/Makefile.am
* plug-ins/metadata/metadata.h: new header containing the
procedure name #defines for metadata.
2005-04-22 Raphael Quinet <raphael@gimp.org>
* plug-ins/metadata/xmp-model.[ch]: Fixed crash occuring after a
double free of some structured XMP properties. Added new type
XMP_TYPE_GENERIC_STRUCTURE for unknown structured properties. Be
more tolerant in parsing incorrectly written schema URIs and try
to extract a valid URI from them. Converted to use g_print().
Moved the definitions of standard XMP schemas from here...
* plug-ins/metadata/xmp-schemas.[ch]: ...to these new files.
* plug-ins/metadata/xmp-encode.[ch]: Rewritten using GString
instead of fixed buffers.
* plug-ins/metadata/metadata.c
* plug-ins/metadata/interface.c: Adapted to the new function
xmp_generate_block() using GString.
* plug-ins/metadata/base64.c (base64_encode): Fixed incorrect
encoding of bytes with the sign bit set.
* plug-ins/metadata/testbase64.c
* plug-ins/metadata/Makefile.am: Added xmp-schema.[ch] and test
program testbase64.c (testing base64 encoding and decoding).
* plug-ins/metadata/xmpdump.c: Converted to use g_print().
* plug-ins/metadata/xmp-parse.c: Added some #ifdef's around
debugging code, added more comments.
2005-04-18 Raphael Quinet <raphael@gimp.org>
* plug-ins/metadata/base64.[ch]: Added parameter 'columns' to
base64_encode() to add optional line breaks in the output.
Improved documentation.
2005-04-11 Raphael Quinet <raphael@gimp.org>
* plug-ins/metadata/base64.h
* plug-ins/metadata/base64.c: Added implementation of
base64_decode(), use gsize or gssize for sizes.
2005-04-11 Raphael Quinet <raphael@gimp.org>
* plug-ins/metadata/metadata.c: Register plug_in_metadata_import
and plug_in_metadata_export in the PDB.
* plug-ins/metadata/Makefile.am
* plug-ins/metadata/base64.h
* plug-ins/metadata/base64.c: Added base64 decoder, needed for
reading the thumbnail images (base64 encoded inside XML element).
* plug-ins/metadata/xmp-parse.h
* plug-ins/metadata/xmp-parse.c: Added XMP_PTYPE_ALT_THUMBS for
parsing a list of thumbnail images. Decode and store the base64
encoded images.
* plug-ins/metadata/xmpdump.c
* plug-ins/metadata/xmp-model.h
* plug-ins/metadata/xmp-model.c: Added support for thumbnails,
defined global symbols for standard XMP schema URIs.
* plug-ins/metadata/interface.c: Preliminary support for widget
cross-references just for testing - it does not save anything yet.
Added thumbnail tab, although the thumbnail image is not displayed
yet.
2005-03-04 Raphael Quinet <raphael@gimp.org>
* plug-ins/metadata/xmpdump.c: test program that tries to extract
XMP metadata from files (image files, AI files, PDF documents...)