Commit graph

39 commits

Author SHA1 Message Date
Michael Natterer
5acdaac8e0 libgimp: remove getters and setters from GimpResourceSelectButton subclasses 2023-05-31 17:18:19 +02:00
Michael Natterer
8fba6da5db libgimp: remove gimp_resource_select_button_embed_interior()
and a whole bunch of useless code from all its subclasses.
2023-05-31 17:01:46 +02:00
Michael Natterer
9638102418 Introduce a global ID space for GimpData/GimpResource objects
Much like for images and items. Change the PDB to transmit IDs
instead of names for brush, pattern etc. and refactor a whole
lot of libgimp code to deal with it.

	modified:   libgimp/gimpplugin-private.h
2023-05-31 16:12:04 +02:00
Niels De Graef
00415bed6a libgimp: Always pass size to g_bytes_unref_to_data
Unlike `g_bytes_get_data()`, the out argument for the size is not
optional, so if we try to pass `NULL` there, we actually get a segfault.
2023-05-24 23:16:36 +02:00
Niels De Graef
89c359ce47 Remove GimpUint8Array in favor of GBytes
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
2023-05-23 23:37:50 +02:00
Jehan
24b955bf17 app, libgimp, pdb: various coding-style fixing and struct for final types…
… moved to the implementation file.

When declaring with G_DECLARE_FINAL_TYPE(), the whole concept is that the struct
is made private (which also allows the type to evolve without breaking ABI if we
some day decide to make the class derivable). For this to make sense, the struct
goes in the implementation file, not the header.

For the rest, it's mostly alignment bugs and the like.
2023-01-14 18:44:31 +01:00
lloyd konneker
d59a7af38c libgimp: API refactor GUI for GimpResource
Simplifies chooser widgets (e.g. GimpBrushSelect) by eliminating attributes (e.g. opacity) of chosen resource.
See #8745, but this commit fixes that by first refactoring the code.

Refactors GUI widgets (e.g. GimpBrushSelectButton and GimpBrushSelect etc.)

Refactor by "Extract class" GimpResourceSelectButton from GimpBrushSelectButton etc.
This moves common code into an inherited class (formerly called GimpSelectButton)
but the subclasses still exist.
The subclasses mainly just do drawing now.

Refactor by "Extract module" GimpResourceSelect from GimpBrushSelect etc.
Moves common code into one file, generic at runtime on type of GimpResource,
that is, the new code dispatches on type i.e. switch statements.
In the future, when core is changed some of that can be deleted.
The files gimpbrushselect.[c,h] etc. are deleted.
The module adapts the API from core to the API of callbacks to libgimp.

Note that core is running the resource chooser (select) widgets remotely.
Core is still calling back over the wire via PDB with more attributes
than necessary.
The new design gets the attributes from the resource themselves,
instead of receiving them from core callback.
The libgimp side adapts by discarding unneeded attributes.
In the future, core (running choosers for plugins) can be simplified also.

Fix gimp_prop_chooser_brush_new same as other resources.

Finish changes, and clean style.

Annotations
2023-01-14 16:38:40 +00:00
lloyd konneker
d720375e97 2.99 libgimp: add GimpResource, GimpBrush, GimpPropWidgetBrush
So procedures can declare args and GimpProcedureDialog show chooser
widgets

Fix so is no error dialog on id_is_valid for resources

Palette.pdb changes and testing

Memory mgt changes

Gradient pdb

Font and Pattern tests

Test  brush, palette

Cleanup, remove generator

Rebase, edit docs, install test-dialog.py

Whitespace, and fix failed distcheck

Fix some clang-format, fix fail distcheck

Fix distcheck

Cleanup from review Jehan
2023-01-14 12:58:05 +00:00
Jehan
1918736b99 Issue #6792: broken annotation for GimpRunBrushCallback.
As Massimo notes, the issue is not about the callback being broken in
bindings, but simply that bindings fail to handle random data without an
associated size. So let's just add the size. I confirmed testing API in
the Python binding that it now works fine.
2022-02-13 19:02:54 +01:00
Jehan
49e534247a app, libgimp*, pdb, plug-ins: use g_memdup2() instead of g_memdup()
Since it appeared with GLib 2.68.0, we could not change this until we
bumped the dependency which has only become possible a few days ago
(since Debian testing is our baseline for dependency bumps). Cf.
previous commit.

As this is a drop-in replacement (just a guint parameter changed to
gsize to avoid integer overflow), search-and-replace with:

> sed -i 's/g_memdup\>/g_memdup2/g' `grep -rIl 'g_memdup\>' *`

… followed by a few manual alignment tweaks when necessary.

This gets rid of the many deprecation warnings which we had lately when
building with a recent GLib version.
2021-08-26 17:32:09 +02:00
lloyd konneker
f59feba611 Fix #6540 annotations on BrushSelectButton.get_brush() 2021-03-05 19:12:30 +00:00
Niels De Graef
1f3bcb9b49 libgimp: Always use g_object_notify_by_pspec()
`g_object_notify()` actually takes a global lock to look up the property
by its name, which means there is a performance hit (albeit tiny) every
time this function is called.  So let's encourage using
`g_object_notify_by_pspec()` instead.

Another nice advantage is that it's a bit safer at compile-time, since
now typos will at least be caught by the compiler (as the enum value has
to match).
2021-01-02 14:29:04 +01:00
Niels De Graef
73252da4f4 GIR: Add some missing (nullable) annotations 2020-12-25 15:02:09 +01:00
Niels De Graef
7f58f2d6e5 gir: Add more missing (array) and (out) annotations 2020-05-04 21:29:42 +02:00
Michael Natterer
89feeecc96 libgimp: make GimpFontSelectButton interpret NULL as the current font
like all other select buttons do.
2019-08-04 17:14:18 +02:00
Michael Natterer
ae7fa2a1de libgimp: clean up the instance private code in all select buttons 2019-08-04 17:04:22 +02:00
Michael Natterer
6e80a2324f libgimp: port gimp*select.[ch] to the new plug-in API
Use the new implementation only if a GimpPlugIn exists, use the old
code otherwise. Add a GDestroyNotify for the callabck's user_data.
2019-08-04 16:08:49 +02:00
Michael Natterer
c144cf69de libgimp*: use more g_clear_pointer() 2019-07-25 12:37:52 +02:00
Michael Natterer
aca5f806c4 libgimp*: lots of doc fixes and new docs for structs and enums 2019-07-24 01:18:30 +02:00
Ell
3b0040c043 app, libgimp*, modules: don't use g_type_class_add_private() ...
... and G_TYPE_INSTANCE_GET_PRIVATE()

g_type_class_add_private() and G_TYPE_INSTANCE_GET_PRIVATE() were
deprecated in GLib 2.58.  Instead, use
G_DEFINE_[ABSTRACT_]TYPE_WITH_PRIVATE(), and
G_ADD_PRIVATE[_DYNAMIC](), and the implictly-defined
foo_get_instance_private() functions, all of which are available in
the GLib versions we depend on.

This commit only covers types registered using one of the
G_DEFINE_FOO() macros (i.e., most types), but not types with a
custom registration function, of which we still have a few -- GLib
currently only provides a (non-deprecated) public API for adding a
private struct using the G_DEFINE_FOO() macros.

Note that this commit was 99% auto-generated (because I'm not
*that* crazy :), so if there are any style mismatches... we'll have
to live with them for now.
2018-09-18 14:39:56 -04:00
Michael Natterer
5f700549e7 Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:29:46 +02:00
Michael Natterer
f4f106ad26 libimp*: add private pointers to all instance structs
even if we don't have private members (yet). Also make class padding 8
pointers in all headers. This commit moves nothing to private, it just
makes all headers consistent and adjusts .c files accordigly.
2018-05-20 21:06:33 +02:00
Michael Natterer
1ed1d98a5a libgimp: undeprecate all GimpFooSelectButton classes 2018-05-20 21:06:32 +02:00
Elle Stone
aaed8a6eb9 app: Bug 753163 - Add blend mode "RGB Luminance"
This adds a blend mode similar to CIE Luminance - but that does not alter
saturation.
2017-02-20 13:54:37 +01:00
Michael Natterer
66060e3307 app, libgimp*, plug-ins: replace enum GimpLayerModeEffects by GimpLayerMode
with proper value names. Mark most values as _BROKEN because they use
weird alpha compositing that has to die. Move GimpLayerModeEffects to
libgimpbase, deprecate it, and set it as compat enum for GimpLayerMode.
Add the GimpLayerModeEffects values as compat constants to script-fu
and pygimp.
2017-01-08 23:00:19 +01:00
Michael Natterer
8005eea835 Remove the "GIMP" from all "Since: GIMP 2.x" API doc comments
because it confuses gtk-doc and breaks some links. Also change the
"Index of new symbols in GIMP 2.x" sections to be what seems to be the
modern standard (looked at the GLib and GTK+ docs), and update some
other stuff.
2015-05-31 21:18:09 +02:00
saul
cbce05f92c Bug 725325 - Drag and drop fails for patterns and brushes
The "drag-data-received" signal was connected wrongly
2014-02-27 18:46:26 +01:00
Michael Natterer
ec9879ea6e libgimp: also include <gegl.h> when we include "libgimpwidgets/gimpwidgets.h" 2013-11-01 22:29:46 +01:00
Michael Natterer
72b0ef397f libgimp: use gtk_box_new() 2011-09-30 10:53:32 +02:00
Michael Natterer
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
Michael Natterer
8cee9c66a7 Build with GSEAL_ENABLE and #undef it where accessors are missing 2009-10-17 18:55:14 +02:00
Michael Natterer
8becbc6568 libgimp/gimpbrushselectbutton.c libgimp/gimpexport.c
2009-03-22  Michael Natterer  <mitch@gimp.org>

	* libgimp/gimpbrushselectbutton.c
	* libgimp/gimpexport.c
	* libgimp/gimpfontselectbutton.c
	* libgimp/gimpgradientselectbutton.c
	* libgimp/gimpimagecombobox.c
	* libgimp/gimpitemcombobox.c
	* libgimp/gimppaletteselectbutton.c
	* libgimp/gimppatternselectbutton.c
	* libgimp/gimpprogressbar.c
	* libgimp/gimpui.c
	* libgimp/gimpzoompreview.c
	* tools/test-clipboard.c: use accessors for various members of
	GTK+ structures that don't exist any longer when GSEAL_ENABLE is
	defined.


svn path=/trunk/; revision=28191
2009-03-22 15:49:13 +00:00
Michael Natterer
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
Sven Neumann
c1c7afb03a libgimp/gimppatternselectbutton.c libgimp/gimpbrushselectbutton.c
2007-10-16  Sven Neumann  <sven@gimp.org>

	* libgimp/gimppatternselectbutton.c
	* libgimp/gimpbrushselectbutton.c
	* libgimpwidgets/gimpcolorarea.c
	* app/widgets/gimpdnd.c
	* app/widgets/gimpdockbook.c: set GDK_WINDOW_TYPE_HINT_DND on
	popup windows used to implement a DND cursor.

svn path=/trunk/; revision=23841
2007-10-16 13:56:34 +00:00
Sven Neumann
606a97c862 reverted the change for bug #356901 and instead applied a patch from
2007-01-05  Sven Neumann  <sven@gimp.org>

	* libgimp/gimpbrushselectbutton.c: reverted the change for bug
	#356901 and instead applied a patch from Kyoichiro Suda that's
	actually a better fix and also plugs a memleak (see bug 
#393158).


svn path=/trunk/; revision=21658
2007-01-05 20:30:35 +00:00
Sven Neumann
de3130ca10 initialize opacity, spacing and paint mode as described by the API docs.
2007-01-03  Sven Neumann  <sven@gimp.org>

	* libgimp/gimpbrushselectbutton.c 
(gimp_brush_select_button_new):
	initialize opacity, spacing and paint mode as described by the 
API
	docs. Fixes bug #356901.


svn path=/trunk/; revision=21636
2007-01-03 13:39:59 +00:00
Sven Neumann
e85896c0fa use const for G_CONST_RETURN.
2006-07-05  Sven Neumann  <sven@gimp.org>

	* libgimp/gimp*selectbutton.[ch]: use const for G_CONST_RETURN.
2006-07-05 14:13:20 +00:00
Sven Neumann
a9bd28e458 libgimp/gimpfontselectbutton.[ch] libgimp/gimpgradientselectbutton.[ch]
2006-06-28  Sven Neumann  <sven@gimp.org>

	* libgimp/gimpfontselectbutton.[ch]
	* libgimp/gimpgradientselectbutton.[ch]
	* libgimp/gimppaletteselectbutton.[ch]
	* libgimp/gimppatternselectbutton.[ch]: for consistency with
	GimpBrushSelectButton dropped the _name suffix from the getter
	and setter API.

	* libgimp/gimpfontmenu.c
	* libgimp/gimpgradientmenu.c
	* libgimp/gimppalettemenu.c
	* libgimp/gimppatternmenu.c
	* plug-ins/gfig/gfig-style.c
	* plug-ins/script-fu/script-fu-interface.c: changed accordingly.

	* libgimp/gimpbrushmenu.c
	* libgimp/gimpbrushselectbutton.[ch]
	* libgimp/gimpselectbutton.c: cleanup for consistency.

2006-06-28  Sven Neumann  <sven@gimp.org>

	* libgimp/tmpl/gimpbrushselectbutton.sgml
	* libgimp/tmpl/gimpgradientselectbutton.sgml
	* libgimp/tmpl/gimppaletteselectbutton.sgml
	* libgimp/tmpl/gimppatternselectbutton.sgml
	* libgimp/tmpl/gimpselectbutton.sgml: new files.

	* libgimp/libgimp-docs.sgml
	* libgimp/libgimp-sections.txt
	* libgimp/libgimp.types: added docs for GimpSelectButton widgets.

	* libgimp/tmpl/gimpfontselectbutton.sgml: regenerated.

	* libgimpcolor/libgimpcolor-sections.txt: added docs for GValue API.

	* libgimpcolor/tmpl/gimprgb.sgml: regenerated.

	* libgimpwidgets/libgimpwidgets-sections.txt: updated.

	* libgimpwidgets/tmpl/gimppropwidgets.sgml
	* libgimpwidgets/tmpl/gimpstock.sgml: regenerated.
2006-06-28 10:35:22 +00:00
Manish Singh
68dfb3f223 libgimp/gimpuitypes.h abstract class for resource selection buttons.
2006-06-25  Manish Singh  <yosh@gimp.org>

        * libgimp/gimpuitypes.h
        * libgimp/gimpselectbutton.[ch]: abstract class for resource selection
        buttons.

        * libgimp/gimpfontselectbutton.[ch]: derive from GimpSelectButton.

        * libgimp/gimpbrushselectbutton.[ch]
        * libgimp/gimpgradientselectbutton.[ch]
        * libgimp/gimppaletteselectbutton.[ch]
        * libgimp/gimppatternselectbutton.[ch]: replacements for
        gimp_foo_select widgets, akin to GimpFontSelectButton.

        * libgimp/gimpbrushmenu.[ch]
        * libgimp/gimpgradientmenu.[ch]
        * libgimp/gimppalettemenu.[ch]
        * libgimp/gimppatternmenu.[ch]: deprecate old API, and reimplement
        in terms of GimpFooSelectButton.

        * libgimp/gimpfontmenu.[ch]: change to use the GimpSelectButton API.

        * libgimp/gimpuimarshal.list: new marshallers for the above new
        widgets.

        * libgimp/gimpui.h: add new headers.

        * libgimp/Makefile.am: add new files.

        * plug-ins/FractalExplorer/Dialogs.c
        * plug-ins/gfig/gfig-dialog.c
        * plug-ins/gfig/gfig-style.[ch]
        * plug-ins/script-fu/script-fu-interface.c: use new API.
2006-06-26 01:47:22 +00:00