Commit Graph

224 Commits

Author SHA1 Message Date
4a5f0508e9 libgimp: remove GimpParamRegion, it was never used 2019-07-26 02:37:52 +02:00
8a462e867d libgimp: add a GimpProcedure class
Mostly the same code as GimpProcedure in app/pdb/.

Move the "run" function to GimpProcedure. Add API to GimpPlugIn to
list and create procedures, and always keep a list of the plug-ins
procedures around. Still only using the old params and return_vals.
2019-07-26 02:11:35 +02:00
f2d399b17b libgimp: add initial version of a GimpPlugIn class
The new way of doing plug-ins:

- subclass GimpPlugIn in your plug-in
- implement its query() and run() methods, run() will move to a
  new GimpProcedure class soon
- instead of MAIN(), say GIMP_MAIN(YOUR_PLUG_IN_TYPE)

Instead of keeping around a GimpPlugInInfo struct, libgimp will
create an instance of your plug-in class, keep it around during
the plug-in's lifetime, and call its virtual functions.
2019-07-25 23:07:24 +02:00
c20645054c libgimp: update annotations for gimp_install_procedure() and...
... GimpRunProc function type.
In gimp_install_procedure(), make sure that @params and @return_vals are
processed as arrays, otherwise they are unusable.

As for the run procedure, make so that @return_vals and @n_return_vals
are considered as returned values. In Python binding for instance, that
makes these not parameters anymore, but actually returnable by the run
function.

With these changes, I made the first fully functional GI Python plug-in,
which just creates a new image and a display for this image. Still a lot
to improve clearly, but we are on the right track. :-)
2019-07-25 19:27:16 +02:00
74c69ae3c2 libgimp: update the def.
Also add a "Since: 3.0" and fix the query_proc docs.
2019-07-25 16:58:18 +02:00
febc1a843d libgimp: add gimp_plug_in_info_set_callbacks().
This is an alternative way to set up a plug-in callbacks, apart from
setting directly the PlugInInfo struct properties.
The reason is that setting directly the Gimp*Proc properties crashes the
plug-in, when done through the Python GI binding.

It is most likely a bug in Pygobject, unless we need the proper
annotation (which I haven't found yet). See:
https://gitlab.gnome.org/GNOME/pygobject/issues/24#note_564968

Setting these callbacks from the C code works fine though, hence this
new API. It is to be noted that the '(scope async)' is the most
important part in this function annotations. Without these annotations,
the function pointers become invalid at the end of the set_callbacks()
call, hence the plug-in crashes when they are actually called.

Unfortunally I am also notified by ebassi that using (scope) at all (any
of the 3 possible values) is just wrong. An API change will be
necessary. For the time being, I leave this like this, for the sake of
testing further, but we'll need to improve things.
2019-07-25 16:23:07 +02:00
692272e580 libgimp: add some comment documentation to Gimp*Proc callback types.
It doesn't really help yet with the problem I encountered allowing to
set and run these Python callbacks from the C code (cf. pygobject#347),
but at least let's improve a bit the documentation.
2019-07-25 11:59:07 +02:00
6a59ccf840 libgimp: remove GimpTile from the public API, and kill the tile cache 2019-07-19 22:49:20 +02:00
60554eaed9 libgimp: remove GimpPixelRgn, it's now completely unused, yay! 2019-07-19 19:08:31 +02:00
eb11aefa20 libgimp: remove gimppixelfetcher.[ch] it was deprecated and now unused
except for pygimp, but that's another pile to port to GEGL anyway and
isn't built currently.
2019-07-08 21:27:33 +02:00
a7d86c572d libgimp: remove the deprecated gimpregioniterator.[ch]
it is now completely unused.
2019-07-07 17:16:40 +02:00
5f700549e7 Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:29:46 +02:00
fe648c87bd libgimp: remove gimp_gamma() 2018-06-18 03:06:34 +02:00
8c9c091021 Issue #701 - Add the ability to embed the GIMP built-in sRGB profile...
...upon exporting an image

Step 1: make it configurable just like "Export EXIF" etc.

app, libgimp: add "export-color-profile" config option

Add it to the preferences dialog, and pass it on to plug-ins in the
GPConfig message. Add gimp_export_color_profile() to libgimp.

Nothing uses this yet.
2018-06-18 02:19:41 +02:00
b36205176e app, libgimp*: remove the config option to disable tooltips
Also remove all traces of it from the plug-in protocol and raise the
protocol version to 0x0100 (we now allow features and therefore
version bumps in stable, and the master protocol version should always
be higher). Fix the code that aborts plug-in startup on protocol
version mismatch, we can't use gimp_message() because we have no
protocol.
2018-06-06 19:23:30 +02:00
Ell
97925de8eb libgimpbase, libgimp, app: pass icon theme dir to plug-ins through config
Pass the current icon theme directory to plug-ins through the
config message, and add a gimp_icon_theme_dir() libgimp function
for retrieving it.  Note that we already have a similar
gimp_icon_get_theme_dir() PDB function, which we keep around, since
it can be used to dynamically query for the current icon dir,
unlike the former, and since it returns a dynamically-allocated
string, while the rest of the config-related functions return
statically allocated strings.

Use the new function, instead of gimp_get_icon_theme_dir(), in
gimp_ui_init().  This allows gimp_ui_init() to run without making
any PDB calls.  Consequently, this allows us to start plug-ins that
call gimp_ui_init() without entering the main loop in the main app.
We're going to add a plug-in that displays an interactive dialog
while the main app is blocking waiting for an operation to
complete, and we need to be able to start the plug-in without
entering the main loop, to avoid the possibility of arbitrary code
being executed during the wait.

Bump the protocol version.
2018-05-29 16:04:28 -04:00
7549b6efe4 Bug 794132 - Make the plug-in protocol version part of the plug-in command line
Also clean GPConfig struct from deprecated members and bump the
plug-in protocol version number.
2018-05-20 21:06:30 +02:00
9525c646e1 libgimp: remove tons of deprecated cruft 2018-05-20 21:06:29 +02:00
2e18c80c58 libgimp: add gimp_get_pdb_status() to return the status of last...
... procedure call.
This is needed for plug-ins which depends on other plug-in's procedures.
If for instance, the second-level plug-in is interrupted interactively,
we don't want to process this as an error but as a cancellation.
Therefore we need to know the returned value of the plug-in. Currently
only way was to use gimp_get_pdb_error() but that was returning a
human-readable error, not a computer-processable error.
2018-01-19 14:19:55 +01:00
4c4fa84f85 app, libgimp, libgimpbase: new gimp_export_(exif|xmp|iptc)() functions.
These allows plug-ins to know the preferences regarding metadata.
2018-01-11 22:17:32 +01:00
406c0475bc libgimp: clean out some tabs. 2017-06-07 16:33:39 +02:00
66bc98d299 Revert "New GimpMetadata as subclass of GExiv2Metadata"
This reverts commit 3ab08c8bfd.
2017-01-03 19:36:22 +01:00
3ab08c8bfd New GimpMetadata as subclass of GExiv2Metadata 2017-01-03 19:26:35 +01:00
109e01dbdd pdb, app, libgimp: rename *-paste-as-new to *-paste-as-new-image
Keep the old function names around as deprecated compat wrappers.
2016-09-20 20:20:25 +02:00
6954e84065 libgimp: fix the GIMP_DEPRECATED_FOR() of the deprecated parasite API
the fixed ones were recommending to use the same deprecated function.
2015-07-13 02:29:45 +02:00
80093a85df pdb, app, libgimp: add new PDB group image_color_profile
Which will have proper API to deal with an image's color profile (no
parasites, no ICC blobs). So far contains gimp_image_get_color_profile()
and gimp_image_set_color_profile().
2015-06-05 12:51:46 +02:00
0d481702c7 libgimp*: add GIMP_DEPRECATED macros using G_DEPRECATED
and start using them instead of GIMP_DISABLE_DEPRECATED where possible.
2012-05-03 00:54:21 +02:00
21dfb8bd9f app/libgimp: enable plug-ins on high precision images
Add gimp_plugin_enable_precision() in libgimp which switches the
plug-in to deal with the drawables' real precision, call it from the
libgimp GeglBuffer and Babl format APIs. If it's not enabled, let the
core's plug-in convert the tiles to legacy formats when sending them
over the wire.
2012-05-02 17:51:14 +02:00
4bdbff08d7 libgimp: add a GeglBuffer backend for plug-ins
Also added an API to get GeglBuffers for drawables, you choose whether you
get.
2012-05-02 17:46:08 +02:00
856c89a845 libgimp: add guards that #error out if individual files are included 2011-04-28 19:59:52 +02:00
374dd50c43 libgimp: add gimp_layer_new_from_surface()
and to enable that, make libgimp depend on Cairo.
2011-04-20 23:58:00 +02:00
26bf2b0cd7 Make libgimp depend on GdkPixbuf
Move the pixbuf layer and image thumbnail function from libgimpui to
libgimp and move gimp_layer_new_from_pixbuf() to gimplayer.[ch] where
it belongs. Change gimp-2.0.pc accordingly, adapt plug-in Makefiles
and update devel-docs.
2011-04-20 20:04:35 +02:00
bb6436cb44 libgimp: deprecate and rename the global pararasite functions
just as it was done for items and images. Remove the "parasite" PDB
group completely.
2011-03-08 14:31:04 +01:00
95e498e0c0 libgimp: rename gimp_pdb.h to gimp_pdb_headers.h 2011-03-08 13:42:05 +01:00
71ead96472 libgimp: deprecate gimp_min_colors() and gimp_install_cmap()
Also remove calls to gdk_rgb_set_min_colors() and gdk_rgb_set_install()
from gimp_ui_init(). These are considered obsolete nowadays.
2010-10-19 09:59:59 +02:00
97b35ab332 pdb: remove deprecated vectors procedures
that have a replacement with identical signature. Register them as
compat aliases with the PDB instead. Implement the libgimp API
manually, calling the new item functions.
2010-09-15 21:13:22 +02:00
94737aae8c libgimp: deprecate gimp_[drawable]_attach_new_parasite()
They were unused, and it's silly to have a "convenience" function
to replace three trivial lines of code.
2010-07-09 13:30:31 +02:00
2d6f808ff8 pdb: add a new PDB group "item" and move lots of functions to it
The item groups has all the duplicated functionality from drawable
and vectors (name, visible, linked etc).

Hijack the unused GIMP_PDB_REGION and turn it into GIMP_PDB_ITEM;
change all protocol aware files accordingly and bump the protocol
version number. Change script-fu to handle the new type.
2010-07-09 09:34:44 +02:00
c78e4c8d63 libgimp: move docs from template files to inline comments
Also split up the "tools" docs into separate files so it matches
the new autogenerated PDB section headers.
2010-07-07 11:48:10 +02:00
d9b5207aa2 Change licence to GPLv3 (and to LGPLv3 for libgimp).
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
2009-01-17 22:28:01 +00:00
b9ec59e455 fix docs: there is no such thing as gimp_query_procedure(), the function
2008-09-19  Michael Natterer  <mitch@gimp.org>

	* libgimp/gimp.[ch] (gimp_destroy_paramdefs): fix docs: there is
	no such thing as gimp_query_procedure(), the function is called
	gimp_procedural_db_proc_info().


svn path=/trunk/; revision=27012
2008-09-19 10:42:32 +00:00
2fcef8b03e Next step towards fixing bug #344818:
2008-08-16  Sven Neumann  <sven@gimp.org>

	Next step towards fixing bug #344818:

	* libgimp/gimp.[ch]: keep the last error status and error 
message
	in libgimp. Added new functon gimp_pdb_get_error() that allows 
to
	retrieve it.

	* libgimp/gimp.def: updated.

	* plug-ins/pygimp/gimpmodule.c (pygimp_vectors_import_from_file)
	(pygimp_vectors_import_from_string): use the new function to get
	a more useful error message.


svn path=/trunk/; revision=26602
2008-08-16 17:18:13 +00:00
c1d3d25ef2 Code built by the still unstable mingw-w64 toolchain gets bogus argc and
2008-08-07  Tor Lillqvist  <tml@novell.com>

	* app/main.c: Code built by the still unstable mingw-w64 toolchain
	gets bogus argc and argv when built as subsystem:windows, so use
	__argc and __argv instead, which seem to be OK.

	* libgimp/gimp.h: Similar change here.


svn path=/trunk/; revision=26420
2008-08-07 15:45:33 +00:00
81131c0bb4 Add new PDB data type PDB_COLORARRAY for using arrays of GimpRGB colors as
2008-07-14  Sven Neumann  <sven@gimp.org>

	Add new PDB data type PDB_COLORARRAY for using arrays of GimpRGB
	colors as argument or return value.

	* libgimpbase/gimpbaseenums.[ch] (enum GimpPDBArgType): replaced
	the unused GIMP_PDB_BOUNDARY with GIMP_PDB_COLORARRAY.

	* libgimpbase/gimpprotocol.h: increased GIMP_PROTOCOL_VERSION.
	(struct _GPParam): added d_colorarray entry to the union.

	* libgimpbase/gimpprotocol.c
	* libgimp/gimp.[ch]
	* app/pdb/gimp-pdb-compat.c
	* app/plug-in/plug-in-params.c
	* app/plug-in/gimpplugin-message.c
	* tools/pdbgen/pdb.pl: deal with the new data type.

	* tools/pdbgen/enums.pl: regenerated.

	* plug-ins/pygimp/pygimp-pdb.c
	* plug-ins/script-fu/scheme-wrapper.c: handle the new data type.


svn path=/trunk/; revision=26189
2008-07-14 14:09:16 +00:00
7f32955006 Revert accidential commit.
svn path=/trunk/; revision=25369
2008-04-04 15:47:17 +00:00
b5207f42d0 reorder functions so getters and setters are together, rename fontsize()
2008-04-04  Michael Natterer  <mitch@gimp.org>

	* tools/pdbgen/pdb/text_layer.pdb: reorder functions so getters
	and setters are together, rename fontsize() functions to
	font_size(), fix get_color() implementation.

	* app/pdb/text-layer-cmds.c
	* libgimp/gimptextlayer_pdb.[ch]: regenerated.

	* libgimp/gimp.def: changed accordingly.


svn path=/trunk/; revision=25368
2008-04-04 15:42:50 +00:00
26d1021e77 Properly pass the focus from the core to plug-in dialogs:
2008-03-27  Sven Neumann  <sven@gimp.org>

	Properly pass the focus from the core to plug-in dialogs:

	* libgimpbase/gimpprotocol.[ch]: added a user_time member to the
	GimpConfig struct. Bumped the protocol version to 0x0012.

	* app/core/gimp-gui.[ch]
	* app/gui/gui-vtable.c: added gimp_get_user_time() to get the
	timestamp of the last user interaction.

	* app/plug-in/gimppluginmanager-call.c
	(gimp_plug_in_manager_call_run): pass the timestamp to in the
	GimpConfig message.

	* libgimp/gimp.[ch]:
	* libgimp/gimp.def: added method to access the timestamp as set
	in the config message.

	* libgimp/gimpui.c (gimp_ui_init): construct a fake startup ID and
	set the DESKTOP_STARTUP_ID environment variable.

svn path=/trunk/; revision=25263
2008-03-27 16:30:29 +00:00
c2d1214551 Changed "The GIMP" to "GIMP" everywhere, where it's used as a name.
2007-06-06  Mukund Sivaraman  <muks@mukund.org>

        Changed "The GIMP" to "GIMP" everywhere, where it's used as a name.


svn path=/trunk/; revision=22715
2007-06-06 08:44:52 +00:00
9b9542a610 removed gimp_foo_version variables.
2006-11-28  Michael Natterer  <mitch@gimp.org>

	* libgimp/gimp.[ch]: removed gimp_foo_version variables.

	* libgimpbase/gimpenv.[ch]: added them here.

	* app/sanity.c: added sanity_check_gimp() and abort if the libgimp
	version gimp is compiled with is not exactly the same we encounter
	at runtime.
2006-11-28 11:57:05 +00:00
65a643bb20 Add prototype for WinMain to avoid gcc warning.
2006-11-24  Tor Lillqvist  <tml@novell.com>

	* libgimp/gimp.h (MAIN): Add prototype for WinMain to avoid gcc
	warning.
2006-11-24 12:47:24 +00:00