Without this, there is no easy way to quietly check for existence of a resource by name.
Needed when plugin authors can name defaults for resource args by name.
Add tests to script-fu/test/tests
… and gimp_brush_get_mask().
gimp_brush_get_pixels() was a bit crappy, returning raw data with only
dimensions and bpp to go with (no color model/space, no bit depth…). So the
assumption is that we work with 8-bit per channel data, possibly with alpha
depending of number of channels as deduced from bpp, and very likely in sRGB
color space. It might be globally ok with many of the brush formats (and
historical brushes) but won't fare well as we improve brush capabilities.
- gimp_brush_get_pixels() is in fact made private.
- The 2 new functions are using this old PDB call _gimp_brush_get_pixels() to
construct buffers. This has some limitations, in particular that it returns
only 8-bit per channel sRGB data, but at least the signature won't change when
we will improve things in the future (so if some day, we pass fancy brushes in
high-bit depth, the method will stay the same).
- This new implementation also allows scaling down the brush (keeping aspect
ratio) which is useful when you need to fit a brush preview into a drawing
widget.
- Current implementation stores the buffers at native size in the libgimp's
GimpBrush object, hence save re-querying the core every time you need an
update. This can be improved as current implementation also means that you
don't get updates if the brush changed. This should handle most common use
cases for now, though.
- Also with this change, I move GimpBrush class implementation into its own
dedicated file.
Resources are stored by the plug-in infrastructure and their memory should not
be managed by plug-in code.
My commit 4f69995b46 was crappy and modified a generated function. I was just
too tired with all the heat in here, I guess!
Similarly to how we handled image items, all resources are handled and stored by
the plug-in infrastructure and should not be destroyed. This wrong annotation
was triggering bindings to unref resources when going out of scope, hence
crashing plug-ins.
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
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
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
Fix the dependency by making the stamp an actual (yet empty/no-op)
header file which is included by all generated source file. This way, we
ensure that meson rebuild .o files when the .pdb sources are changed.
This is the second solution proposed by eli-schwartz here:
https://github.com/mesonbuild/meson/issues/10196#issuecomment-1080053413
So a value array can now we created like this:
array = gimp_value_array_new_from_types (&error_msg,
G_TYPE_STRING, "foo",
G_TYPE_INT, 23,
G_TYPE_NONE);
Change PDB generation to use this, which makes for much nicer code in
the libgimp wrappers, and only set arrays separately instead of all
values.
Also generate comments like "Must be freed with g_free()" for all
return values instead of manually and inconsistently having them on
some return values only.
This reverts commit 833666d462.
The _pdb files are an implementation detail and we do not want
separate doc sections for them, the conflicts need so be resolved in
another way.
Otherwise we get a few duplicate sections since some of the non-PDB
files are named similarly.
Fix this GObject introspection warning and other similar warnings:
> libgimp/gimp_pdb.c:28: Warning: Gimp: multiple comment blocks
> documenting 'SECTION:gimp:' identifier (already seen at gimp.c:129).
All foo_pdb.c functions in libgimp regenerated. I have reviewed this a
dozen times, but please have a look, there might well be glitches and
our public API is sortof important...
Blurbs use third person and need a final point.
Some description were wrong or inaccurate. Add also units where
needed (radius in pixels, angle in degrees).
Some returned values have to be freed.
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.
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-02-07 Michael Natterer <mitch@gimp.org>
* tools/pdbgen/app.pl: add some perl evilness to make the includes
in the generated files look almost like they should.
* tools/pdbgen/pdb/*.pdb: remove inclusion of "core/gimp.h" where
not needed, clean up lists of includes and functions and reorder
some functions to make more sense. Zero logic changed.
* app/pdb/*_cmds.c
* libgimp/gimpcontext_pdb.[ch]
* libgimp/gimpbrush_pdb.[ch]: regenerated.
svn path=/trunk/; revision=24830
2006-04-02 Michael Natterer <mitch@gimp.org>
* tools/pdbgen/lib.pl: use the variable initializer defined with
the PDB type instead of figuring it manually. Removed a line of
code that checked for enums without "Gimp" prefix.
* libgimp/gimpbrush_pdb.c
* libgimp/gimpchannel_pdb.c
* libgimp/gimpcontext_pdb.c
* libgimp/gimpgradient_pdb.c
* libgimp/gimplayer_pdb.c
* libgimp/gimpunit_pdb.c
* libgimp/gimpvectors_pdb.c: all doubles are initialized with 0.0
instead of 0 now.
2005-08-03 Michael Natterer <mitch@gimp.org>
Changed naming scheme for PDB procedure names from
random_crap_that_traditionally_has_underscores to
enforced-canonical-identifiers. I'm pretty sure some things are
broken after this commit. More changes to come...
* libgimpbase/gimpbase.def
* libgimpbase/gimputils.[ch]: added gimp_canonicalize_identifier().
* app/pdb/procedural_db.[ch] (struct ProcRecord): added
"gchar *original_name" to keep a procedure's original name as
reigstered by plug-ins (compat cruft).
(procedural_db_init_procs): canonicalized list of deprecated
procedures.
* app/plug-in/plug-in-proc-def.c (plug_in_proc_def_free): free
original_name.
* app/plug-in/plug-in-message.c: canonicalize procedure names
which are received over the wire.
* app/plug-in/plug-in-rc.c: serialize the original_name and create
the canonicalized name on-the-fly when deserializing.
* app/plug-in/plug-in-run.c: pass the original_name to plug-ins
when running them because they strcmp() the passed procedure name.
* app/plug-in/plug-ins.c (plug_ins_add_to_db): pass
canonical procedure names to procedural_db_execute().
(plug_ins_file_proc_compare): special-case "gimp-xcf", not "gimp_xcf".
* app/xcf/xcf.c: changed static XCF procedures accordingly.
* tools/pdbgen/app.pl
* tools/pdbgen/lib.pl: do some trivial substitutions to generate
canonicalized names in app/, and C identifiers with underscores in
libgimp/.
* tools/pdbgen/pdb/brushes.pdb
* tools/pdbgen/pdb/fileops.pdb
* tools/pdbgen/pdb/gradients.pdb
* tools/pdbgen/pdb/image.pdb
* tools/pdbgen/pdb/palettes.pdb
* tools/pdbgen/pdb/patterns.pdb
* tools/pdbgen/pdb/plug_in.pdb
* tools/pdbgen/pdb/procedural_db.pdb
* tools/pdbgen/pdb/text_tool.pdb
* tools/pdbgen/pdb/transform_tools.pdb: canonicaloized procedure
names in calls to std_pdb_deprecated() and in procedure names in
generated C code.
* app/pdb/*_cmds.c
* libgimp/*_pdb.c: regenerated.
2004-10-06 Michael Natterer <mitch@gimp.org>
* tools/pdbgen/pdb/brush.pdb: return the mask's bpp and the
brush's pixmap data if it has one.
* tools/pdbgen/pdb/pattern.pdb: cleaned up.
* tools/pdbgen/pdb/image.pdb: added $deprecated = 1 to deprecated
functions even if they are not exported to libgimp any more.
* app/pdb/procedural_db.h (struct ProcRecord): added member
"gboolean deprecated".
* tools/pdbgen/app.pl
* app/xcf/xcf.c: fill it accordingly.
* app/plug-in/plug-in-message.c (plug_in_handle_proc_run): warn
not only for deprecated procedured which are in the compat hach
table, but also for procedures with deprecated flag set to TRUE.
* app/pdb/*_cmds.c
* libgimp/gimpbrush_pdb.[ch]
* libgimp/gimppattern_pdb.[ch]: regenerated.
* libgimp/gimpbrushmenu.c
* plug-ins/gfig/gfig-style.c: changed accordingly.
2004-10-04 Michael Natterer <mitch@gimp.org>
* tools/pdbgen/pdb/brush.pdb
* tools/pdbgen/pdb/gradient.pdb
* tools/pdbgen/pdb/palette.pdb: disallow the empty string for
new brushes, gradients and palettes and check the return value
of gimp_data_factory_data_new(). Cleanup.
* app/core/gimpbrushgenerated.c (gimp_brush_generated_new)
* app/core/gimpgradient.c (gimp_gradient_new)
* app/core/gimpdatafactory.c (gimp_data_factory_data_new): same
here. Fixes bug #154264.
* app/core/gimpdata.[ch] (gimp_data_set_filename): added boolean
"deletable" parameter because it's not derivable from "writable".
* app/core/gimpdatafactory.c (gimp_data_factory_load_data): need
to figure "deletable" separately from "writable" to be able to
delete unsavable stuff in the user-writable data directories.
Fixes bug #154410.
(gimp_data_factory_data_save_single): cleaned up.
* app/pdb/brush_cmds.c
* app/pdb/gradient_cmds.c
* app/pdb/palette_cmds.c
* libgimp/gimpbrush_pdb.c
* libgimp/gimpgradient_pdb.c
* libgimp/gimppalette_pdb.c: regenerated.