Commit graph

16 commits

Author SHA1 Message Date
Jehan
bbb0be8413 Revert "libgimpwidgets: #pragma once, and formatting and ordering"
This reverts commit c71661bf24.

See https://gitlab.gnome.org/GNOME/gimp/-/issues/14668
2025-08-14 00:54:52 +02:00
Michael Natterer
c71661bf24 libgimpwidgets: #pragma once, and formatting and ordering 2025-07-13 12:23:24 +02:00
Jehan
d493f0537f Issue #8900 and #9923: reimplementing GimpUnit as a proper class.
This fixes all our GObject Introspection issues with GimpUnit which was
both an enum and an int-derived type of user-defined units *completing*
the enum values. GIR clearly didn't like this!

Now GimpUnit is a proper class and units are unique objects, allowing to
compare them with an identity test (i.e. `unit == gimp_unit_pixel ()`
tells us if unit is the pixel unit or not), which makes it easy to use,
just like with int, yet adding also methods, making for nicer
introspected API.

As an aside, this also fixes #10738, by having all the built-in units
retrievable even if libgimpbase had not been properly initialized with
gimp_base_init().
I haven't checked in details how GIR works to introspect, but it looks
like it loads the library to inspect and runs functions, hence
triggering some CRITICALS because virtual methods (supposed to be
initialized with gimp_base_init() run by libgimp) are not set. This new
code won't trigger any critical because the vtable method are now not
necessary, at least for all built-in units.

Note that GimpUnit is still in libgimpbase. It could have been moved to
libgimp in order to avoid any virtual method table (since we need to
keep core and libgimp side's units in sync, PDB is required), but too
many libgimpwidgets widgets were already using GimpUnit. And technically
most of GimpUnit logic doesn't require PDB (only the creation/sync
part). This is one of the reasons why user-created GimpUnit list is
handled and stored differently from other types of objects.

Globally this simplifies the code a lot too and we don't need separate
implementations of various utils for core and libgimp, which means less
prone to errors.
2024-08-02 10:46:38 +02:00
Alx Sa
acefb593c1 libgimpwidgets: Make GimpRuler a final type 2024-07-26 16:51:51 +00: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
844df2b4df libgimp*: add guards that #error out if individual files are included
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.
2011-04-28 14:30:41 +02:00
Michael Natterer
d155be622d libgimpwidgets: fix ruler motion event tracking on offscreen overlays
Add a list of "track widgets" to GimpRuler and connect to their
motion-notify-event. Correctly translate the motion event's x/y to the
ruler's coordinate system when updating the marker.
2011-01-20 20:26:35 +01: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
Michael Natterer
edcd1e7810 libgimpwidgets/Makefile.am libgimpwidgets/gimpwidgets.h
2008-08-29  Michael Natterer  <mitch@gimp.org>

	* libgimpwidgets/Makefile.am
	* libgimpwidgets/gimpwidgets.h
	* libgimpwidgets/gimphruler.[ch]
	* libgimpwidgets/gimpvruler.[ch]: remove separate H/VRuler classes.

	* libgimpwidgets/gimpruler.[ch]: add an "orientation" property
	instead. Add gimp_ruler_new().

	* libgimpwidgets/gimpwidgets.def: changed accordingly.

	* app/dialogs/resolution-calibrate-dialog.c
	* app/display/gimpdisplayshell.c
	* plug-ins/gfig/gfig-preview.c
	* plug-ins/imagemap/imap_preview.c: ditto.


svn path=/trunk/; revision=26810
2008-08-29 10:25:29 +00:00
Sven Neumann
fcc0dc50a0 libgimpwidgets/gimpruler.[ch] libgimpwidgets/gimphruler.c removed
2008-05-28  Sven Neumann  <sven@gimp.org>

	* libgimpwidgets/gimpruler.[ch]
	* libgimpwidgets/gimphruler.c
	* libgimpwidgets/gimpvruler.c: removed GimpRulerMetric struct from
	public API. Removed gimp_ruler_draw_pos() and gimp_ruler_draw_ticks()
	methods. Added a "unit" property with getter and setter.

	* libgimpwidgets/gimpwidgets.def: updated.

svn path=/trunk/; revision=25838
2008-05-28 11:49:24 +00:00
Sven Neumann
e7494c1c0f started to sanitize the ruler API.
2008-05-28  Sven Neumann  <sven@gimp.org>

	* libgimpwidgets/gimpruler.[ch]: started to sanitize the ruler 
API.

	* app/dialogs/resolution-calibrate-dialog.c
	* app/display/gimpdisplayshell-scale.c
	* plug-ins/gfig/gfig-preview.c
	* plug-ins/imagemap/imap_preview.c

	* libgimpwidgets/gimpwidgets.def: updated.


svn path=/trunk/; revision=25836
2008-05-28 10:18:43 +00:00
Sven Neumann
305e672d3c libgimpwidgets/gimpruler.[ch] libgimpwidgets/gimphruler.c enlarge the
2008-05-28  Sven Neumann  <sven@gimp.org>

	* libgimpwidgets/gimpruler.[ch]
	* libgimpwidgets/gimphruler.c
	* libgimpwidgets/gimpvruler.c: enlarge the array of scales to
	prevent ruler numbers from overlapping (bug #535039).


svn path=/trunk/; revision=25835
2008-05-28 09:48:07 +00:00
Sven Neumann
7efbde7f85 minor tweaks and constification
svn path=/trunk/; revision=25830
2008-05-27 13:41:48 +00:00
Sven Neumann
89cd2d483d libgimpwidgets/gimpruler.[ch] libgimpwidgets/gimphruler.c
2008-05-27  Sven Neumann  <sven@gimp.org>

	* libgimpwidgets/gimpruler.[ch]
	* libgimpwidgets/gimphruler.c (gimp_hruler_draw_ticks)
	* libgimpwidgets/gimpvruler.c (gimp_vruler_draw_ticks): use an
	extra small font for the tick labels.

	* themes/Default/gtkrc: don't hardcode a font size for the rulers.

svn path=/trunk/; revision=25829
2008-05-27 13:24:18 +00:00
Sven Neumann
ae67f09ddd libgimpwidgets/Makefile.am libgimpwidgets/gimpwidgets.h
2008-05-26  Sven Neumann  <sven@gimp.org>

	* libgimpwidgets/Makefile.am
	* libgimpwidgets/gimpwidgets.h
	* libgimpwidgets/gimpwidgetstypes.h

	* libgimpwidgets/gimpruler.[ch]
	* libgimpwidgets/gimphruler.[ch]
	* libgimpwidgets/gimpvruler.[ch]: added ruler widgets. These are
	mostly copied from GTK+ and work as a drop-in replacement for
	GtkRuler and friends.

	* libgimpwidgets/gimpwidgets.def: updated.

	* app/display/gimpdisplayshell.c
	* app/display/gimpdisplayshell-scale.c
	* app/dialogs/resolution-calibrate-dialog.c
	* plug-ins/imagemap/imap_preview.c
	* plug-ins/gfig/gfig-preview.c: use the GimpRuler widgets.


svn path=/trunk/; revision=25820
2008-05-26 21:20:16 +00:00