GLib has a specific type for byte arrays: `GBytes` (and it's underlying
GType `G_TYPE_BYTES`).
By using this type, we can avoid having a `GimpUint8Array` which is a
bit cumbersome to use for both the C API, as well as bindings. By using
`GBytes`, we allow other languages to pass on byte arrays as they are
used to, while the bindings will make sure to do the right thing.
In the end, it makes the API a little bit simpler for everyone, and
reduces confusion for people who are used to working with byte arrays
in other C/GLib based code (and not having 2 different types to denote
the same thing).
Related: https://gitlab.gnome.org/GNOME/gimp/-/issues/5919
… and s/gimp_parasite_flags/gimp_parasite_get_flags/
It is better to have a consistent API and the fact is that most
getter/setter functions use the _get|set_ naming, but these didn't.
I wondered if this was such a great idea to rename these anyway because
even though we are breaking API in GIMP 3, is it the best idea to rename
when no functional change happened? After discussing with Wormnest, we
still agreed it was still better to go for consistency rather than
regret later (and be stuck with these names for many more years).
Also this fixes these warnings:
> [649/1205] Generating gimp-3.0.vapi with a custom command
> Gimp-3.0.gir:24162.7-24162.56: warning: Field `Gimp.Parasite.flags' conflicts with method of the same name
> Gimp-3.0.gir:24318.7-24318.52: warning: Field `Gimp.Parasite.name' conflicts with method of the same name
… gimp_parasite_data_size().
gimp_parasite_data() was non introspection friendly because calling code
needs to know the size of returned data a way or another (the concept of
data pointer with random contents, no known size and no way to know the
end of the buffer is not usable in many languages other than C).
Now that all usage have been replaced by gimp_parasite_get_data(), we
can just remove the functions from the v3 API.
Allow @num_bytes to be nullable, but add text in the documentation that
this is only useful when you want to check if there is contents.
Also make @num_bytes into a guint32, and finally set it to 0 when there
is no parasite.
This only helps to maintain proper includes in app/ and shouldn't
affect plug-ins at all, because these are supposed to only include the
main headers from libgimp/ since the beginning of time.
The gimpfootypes.h files do not have these guards, so we can continue
to maintain app/'s include policy that is very likely to error out if
wrong things are included.
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
2006-06-02 Sven Neumann <sven@gimp.org>
* libgimpbase/gimpparasite.[ch]: hide the GimpParamSpecParasite
struct like we do with other custom param specs.
2006-04-02 Michael Natterer <mitch@gimp.org>
* app/core/gimpparamspecs.[ch]: removed GIMP_TYPE_PARASITE,
GIMP_TYPE_PARAM_PARASITE and the GimpRGB utility functions. Some
fixes/cleanup in the new array and string array code.
* libgimpbase/gimpbase.def
* libgimpbase/gimpparasite.[ch]
* libgimpcolor/gimpcolor.def
* libgimpcolor/gimprgb.[ch]: added the parasite and rgb stuff here.
* app/pdb/gimpargument.c: #include "libgimpbase/gimpbase.h"
* app/pdb/procedural_db.c: removed unused variable.
2003-07-01 Sven Neumann <sven@gimp.org>
* libgimp/gimp.[ch]
* libgimp/gimpchannel.[ch]
* libgimp/gimpdrawable.[ch]
* libgimp/gimpimage.[ch]
* libgimp/gimplayer.[ch]
* libgimp/gimpmisc.[ch]
* libgimp/gimpmiscui.[ch]
* libgimp/gimppixelrgn.[ch]
* libgimp/gimpproceduraldb.[ch]: added const qualifiers to the
libgimp API. Will cause lots of compiler warnings until the
generated PDB code has been constified as well.
* libgimpbase/gimpparasite.[ch]: use gconstpointer, not const
gpointer.
2003-06-23 Sven Neumann <sven@gimp.org>
* app/config/gimpconfig.[ch]
* app/config/gimpconfigwriter.[ch]
* app/config/gimpscanner.[ch]: added support for serializing to
and deserializing from strings. Had to do some smaller changes to
the GimpConfig API.
* app/config/test-config.c: added a simple test for the new
functions.
* app/config/gimpconfig-dump.c
* app/config/gimprc.c
* app/core/gimp-documents.c
* app/core/gimp-parasites.c
* app/core/gimp-templates.c
* app/core/gimpunits.c
* app/gui/session.c
* app/plug-in/plug-in-rc.c
* app/tools/tool_options.c
* app/widgets/gimpdevices.c: follow GimpConfig API changes.
* libgimpbase/gimpparasite.[ch]: declared the return value of
gimp_parasite_data() as gconstpointer.
2001-11-23 Sven Neumann <sven@gimp.org>
* configure.in: bumped version number to 1.3.1.
Require Glib/GTK+-1.3.11 and Pango-0.22. Removed GDK_DISABLE_COMPAT_H
and GTK_DISABLE_COMPAT_H from our default CFLAGS since they don't
exist any longer.
* RELEASE-TO-CVS.patch: removed since the glib/gtk+ API is supposed to
be frozen now.
* HACKING: removed reference to RELEASE-TO-CVS.patch
* app/gui/menus.c
* app/tools/gimptexttool.c: applied RELEASE-TO-CVS.patch to conform
to the new GTK+/Pango API.
* app/core/Makefile.am: generate marshallers with gimp_marshal prefix.
* app/core/gimpmarshal.list: added all marshallers we use.
* app/core/gimpmarshal.[ch]: regenerated.
* app/[lots of .c files]: use gimp_marshal_* for all marshallers.
* data/images/
* app/app_procs.c
* app/gui/splash.c:
* libgimpbase/Makefile.am
* libgimpbase/gimpbase.h
* libgimpbase/gimputils.[ch]: removed since they are no longer needed.
* app/gimprc.c
* plug-ins/common/ps.c
* plug-ins/gdyntext/gdyntext.c
* plug-ins/gdyntext/gdyntextcompat.c
* plug-ins/gfig/gfig.c
* plug-ins/gflare/gflare.c
* plug-ins/script-fu/script-fu-scripts.c: use glib functions instead
of gimp_strescape() and gimpstrcompress().
* cleaned up all header files: use G_BEGIN_DECLS/G_END_DECLS, declared
all _get_type function as G_GNUC_CONST.
* tools/pdbgen/enumcode.pl
* tools/pdbgen/lib.pl: make them generate header files using
G_BEGIN_DECLS/G_END_DECLS.
* pixmaps/Makefile.am
* pixmaps/wilber3.xpm: removed ...
* data/images/tips_wilber.png: ... and added here as PNG
* app/gui/tips-dialog.c: load the Wilber on demand using GdkPixbuf.
* data/images/gimp_splash.ppm: removed ...
* data/images/gimp_splash.png: ... and added as PNG
* app/app_procs.c
* app/gui/splash.[ch]: load the splash image using GdkPixbuf.
* app/gui/about-dialog.c: sink the GtkPreview.
2001-05-21 Michael Natterer <mitch@gimp.org>
* Makefile.am
* configure.in
* gimptool-1.4.in: added new directory libgimpbase/
* app/Makefile.am: link against the new lib.
* app/appenums.h: removed the PDB enums which are in
libgimpbase/gimpbasetypes.h now. They are all "Gimp" prefixed.
* app/apptypes.h: #include "libgimpbase/gimpbasetypes.h"
* app/[lots]
* app/core/[of]
* app/gui/[files]
* app/tools/: changed includes and all PDB types.
* app/pdb/*: regenerated.
* libgimp/Makefile.am: don't build libgimpi.a uglyness any more.
* libgimp/gimpenv.[ch]
* libgimp/gimplimits.[hh]
* libgimp/gimpparasite.[ch]
* libgimp/gimpparasiteio.[ch]
* libgimp/gimpprotocol.[ch]
* libgimp/gimpsignal.[ch]
* libgimp/gimpunit.h
* libgimp/gimputils.[ch]
* libgimp/gimpwire.[ch]: removed...
* libgimpbase/*: ...and added here as new library.
* libgimp/gimp.[ch]
* libgimp/gimpdrawable.[ch]
* libgimp/gimpenums.h
* libgimp/gimpimage.[ch]
* libgimp/gimptile.c
* libgimp/gimptypes.h
* libgimp/gimpunit.c: changed accordingly. Added the
gimp_*_add_new_parasite to gimp.[ch], gimpdrawable.[ch] and
gimpimage.[ch].
* libgimpwidgets/gimppatheditor.c
* libgimpwidgets/gimpquerybox.c
* libgimpwidgets/gimpsizeentry.c
* libgimpwidgets/gimpunitmenu.c
* libgimpwidgets/gimpwidgets.c
* libgimpwidgets/gimpwidgetstypes.h: changed includes accordingly.
* plug-ins/*/Makefile.am
* plug-ins/common/mkgen.pl: link against libgimpbase.
* tools/pdbgen/Makefile.am: scan libgimpbase/gimpbasetypes.h, so
the enums are known to pdbgen...
* tools/pdbgen/enumcode.pl: ...but don't write them out to
libgimp/gimpenums.h
* tools/pdbgen/app.pl: include libgimp/gimpbase.h in all *_cmds.c
files. Added GIMP_ to the type names ganerated in app/.
* tools/pdbgen/enums.pl: regenerated.
* tools/pdbgen/pdb.pl
* tools/pdbgen/pdb/fileops.pdb
* tools/pdbgen/pdb/procedural_db.pdb
* tools/pdbgen/pdb/unit.pdb: changed includes.
2000-12-29 Michael Natterer <mitch@gimp.org>
* app/Makefile.am
* app/channel_pvt.h
* app/drawable_pvt.h
* app/gdisplayF.h
* app/gimpdrawableP.h
* app/gimpimageP.h
* app/layer_pvt.h
* app/toolsF.h: removed these files.
* app/apptypes.h
* tools/pdbgen/enums.pl: added tons of opaque typedefs and enums.
* tools/pdbgen/pdb/brush_select.pdb
* tools/pdbgen/pdb/brushes.pdb
* tools/pdbgen/pdb/channel.pdb
* tools/pdbgen/pdb/color.pdb
* tools/pdbgen/pdb/convert.pdb
* tools/pdbgen/pdb/display.pdb
* tools/pdbgen/pdb/drawable.pdb
* tools/pdbgen/pdb/fileops.pdb
* tools/pdbgen/pdb/gradient_select.pdb
* tools/pdbgen/pdb/gradients.pdb
* tools/pdbgen/pdb/help.pdb
* tools/pdbgen/pdb/image.pdb
* tools/pdbgen/pdb/layer.pdb
* tools/pdbgen/pdb/pattern_select.pdb
* tools/pdbgen/pdb/patterns.pdb
* tools/pdbgen/pdb/selection.pdb
* tools/pdbgen/pdb/tools.pdb
* app/*: chainsaw #include cleanup:
- Never (never!!) include stuff in header files except where we
need access to structures' contents (like derived objects).
- Added prototypes and proper formating in many files.
- The #include order in *all* *.c files is as follows:
#include "config.h"
#include <system stuff>
#include <gtk/gtk.h>
#include "apptypes.h"
#include "gimp stuff"
#include "libgimp stuff"
#include "libgimp/gimpintl.h"
By following this scheme we can easily see a file's dependencies
from it's #include's and can grep for the inclusion to find out
where a file is used.
* tools/pdbgen/app.pl: changed to follow the include scheme above.
* libgimp/Makefile.am
* libgimp/gimpuitypes.h: new file, included from libgimp/gimpui.h
and from app/apptypes.h.
* libgimp/gimpcolorbutton.[ch]
* libgimp/gimpdialog.[ch]
* libgimp/gimphelpui.[ch]
* libgimp/gimpparasite.[ch]
* libgimp/gimppatheditor.[ch]
* libgimp/gimpprotocol.c
* libgimp/gimpquerybox.[ch]
* libgimp/gimpsizeentry.[ch]
* libgimp/gimptypes.h
* libgimp/gimpui.h
* libgimp/gimpunit.h
* libgimp/gimpunitmenu.[ch]
* libgimp/gimpwidgets.[ch]: changed accordingly.
* plug-ins/FractalExplorer/Dialogs.c
* plug-ins/gdyntext/message_window.c
* plug-ins/imagemap/imap_default_dialog.c
* plug-ins/imagemap/imap_file.c: these files used to include
"libgimp/gimpui.h" without including "libgimp/gimp.h". This is
no longer possible because the libgimpui headers don't inlcude
"libgimp/gimpunit.h" any more.
2000-05-31 Michael Natterer <mitch@gimp.org>
* app/gimpunit.c
* libgimp/*: all libgimp headers are included via gimp.h or
gimpui.h, so include <gtk/gtk.h> there and in the *.c files.
Various cleanups.
* Makefile.am: added spec file to EXTRA_DIST
* docs/Makefile.am: added undo.txt to EXTRA_DIST
* app/interface.c: removed the DODGY warning, doesn't look dodgy to me
* libgimp/*.h: missed an s/Library/Lesser/
* tools/pdbgen/*: lots of work on the libgimp portion
-Yosh
* app/edit_selection.c: removed some nonfunctional code.
* app/paint_core.c: remove the alt toggles perfectmouse behaviour.
* app/paintbrush.c: when ctl (or alt) is held set the fg (or bg) color.
* app/gimpparasite.[ch]: made char *name parameters const.
* app/parasitelist.c: removed unused static variable.
* app/gimpdrawable.c, app/gimpimage.c, app/undo.[ch]: added
support for undoing parasite changes.
* libgimp/gimp.h, libgimp/gimpimage.c: added
gimp_undo_push_group_start and gimp_undo_push_group_end
* libgimp/parasite.[ch]: added undoable flag.
* plug-ins/gdyntext/font_selection.c: fixed c++ style comment.
* plug-ins/gdyntext/gdyntext.c: use the new undoable parasites.
* plug-ins/rcm/rcm_misc.c: arctg can't be inline because it is
used in other .c files
* plug-ins/waterselect/waterselect.c,
* plug-ins/rotators/rotators.c, app/tips_dialog.c, app/plug_in.c:
fixed some warnings
* app/Makefile.am: build color_cmds, lut_funcs, and pixel_processor
* app/app_procs.c: feedback in the splash screen when loading
parasites.
* app/boundary.c: Optimized find_empty_segs.
* app/brightness_contrast.[ch]
* app/levels.[ch]
* app/posterize.[ch]:
moved pdb and lut calculation code. These files now contain only
GUI functions.
* app/channel.c: Optimized channel_bounds (fewer compares, better
use of registers). Use color_region instead of channel_*_segment
in channel_combine_rect. Optimized channel_combine_ellipse by
skipping pixels inside of the ellipse. Use
pixel_region_process_parallel in channel_combine_mask. Use a
GimpLut in channel_invert, and channel_sharpen.
* app/invert.c
* app/equalize.c: moved the lut functions to lut_funcs.c
* app/gimpdrawable.c, app/gimpdrawableP.h
* app/gimpimage.c, app/gimpimageP.h: removed unused gimpmatrix
variables/includes.
* app/gimplut.[ch]: added new function gimp_lut_process_inline
that operates on a single PixelRegion.
* app/gimpparasite.[ch]: new functions to save/load parasiterc
* app/parasitelist.[ch]: new functions to save/load ParasiteLists
in/from files.
* libgimp/parasite.[ch]: new functions to load/save parasites.
* app/internal_procs.c: get some procs from new location in
color_cmds.h.
* app/pixel_region.[ch]: moved pixel_regions_process_parallel
related functions to a new file.
* app/color_cmds.[ch]: new files for PDB
definitions/implementations of color correction functions.
* app/lut_funcs.[ch]: new files to hold lut creation functions.
* app/pixel_processor.[ch]: new files that contain the
pixel_regions_process_parallel routines. Added some new
capabilities that are currently unused.
* app/gimplut.[ch]: new source files that implement pixel Look Up
Table functions.
* app/Makefile.am: build gimplut.[ch]
* app/brightness_contrast.c
* app/curves.c
* app/invert.c
* app/levels.c
* app/posterize.c: Use the new lut functions. Use
pixel_region_process_parallel in the PDB versions of these routines.
* libgimp/parasite.h
* libgimp/parasite.c: new functions parasite_name and
parasite_compare.
* app/gimpdrawable.c:
* app/gimpdrawable.h: new function
gimp_drawable_get_color_at(...) returns the RGBA[color index]
value at a specified position in the drawable. Don't set the dirty
bit on the image if a new parasite is the same as the old.
* app/gimpimage.c
* app/gimpimage.h new function
gimp_image_get_color_at(...) returns the RGBA[color index]
value at a specified position in the drawable. Don't set the dirty
bit on the image if a new parasite is the same as the old.
* app/by_color_select.c
* app/color_picker.c: use the new gimp_*_get_color_at
functions instead of messing with the tiles.
* app/layer.c: fixed a minor warning.
* app/commands.c:
don't scale the image if the new size == the old size
* app/channel.c: optimized channel_bounds by only checking the
pixels in a tile if it is not already entirely within the
currently computed bounds.
* libgimp/gserialize.c
* libgimp/gserialize.h: Changed the enum values to allow for
simpler future expansion.
* libgimp/parasite.c
* libgimp/parasite.h: s/persistant/persistent/.
new accessor functions for parasites. #defines for new flags.
* app/paintbrush.c: added timeing code for brush strokes.
It is #ifed out, and is only valid for shift clicks.
* app/parasite_cmds.h: fixed a warning
* app/parasitelist.h
* app/parasitelist.c: added _for_each and _length functions
* app/gimpdrawable.c: set the dirty flag when adding or removing a
persistent parasite
* app/gimpimage.c: set the dirty flag when adding or removing a
persistent parasite. Fixed bug and removed debug statements in
merge_down.
* app/xcf.c: save and load resolution, parasites, and tattoos.
* app/main.c: updated the deserialize test.
* plug-ins/tiff/tiff.c
* plug-ins/gif/gif.c: use PARASITE_PERSISTENT define instead of 1
* plug-ins/bmp/bmp.c
* plug-ins/bmp/bmp.h: declare some struct variable as extern.
* app/paint_funcs.c: Lots of optimizations aimed at speeding up
painting. Should see a 2-4X speed up on most painting
(depending on paint modes, brush size etc.)
* app/drawable.c: check for NULL drawable in drawable_ID.
this stops us from being crashed by ill-behaved plug-ins
* app/drawable_cmds.c, app/gimage_cmds.c
* app/parasite_cmds.c, libgimp/parasite.[ch],
* libgimp/gimp.c, libgimp/gimpprotocol.c
* tiff.c, gif.c, script-fu.c: removed all references to
parasite_error() and parasite_is_error(). Enable the
passing of null parasites in the pdb. Return a copy of the
parasite instead of the orginal in all pdb functions.