and make them build again without any wrong symbols.
This does not enable the devel-docs build yet, I'll fix
module by module before enabling the build again.
Add a "markers" page to the performance-log viewer, which lists
the event markers contained in the log, and allows navigating
between them.
Update docs accordingly.
In the perofmance-log viewer, add header-bar buttons to clear and
invert the selection, and allow inverting the selection by ctrl-
right-clicking on the sample-selection area.
Update the docs.
This commit completely removes the "Edit -> Fade..." feature,
because...
- The main reason is that "fade" requires us to keep two buffers,
instead of one, for each fadeable undo step, doubling (or worse,
since the extra buffer might have higher precision than the
drawable) the space consumed by these steps. This has notable
impact when editing large images. This overhead is incurred even
when not actually using "fade", and since it seems to be very
rarely used, this is too wasteful.
- "Fade" is broken in 2.10: when comitting a filter, we copy the
cached parts of the result into the apply buffer. However, the
result cache sits after the mode node, while the apply buffer
should contain the result of the filter *before* the mode node,
which can lead to wrong results in the general case.
- The same behavior can be trivially achieved "manually", by
duplicating the layer, editing the duplicate, and changing its
opacity/mode.
- If we really want this feature, now that most filters are GEGL
ops, it makes more sense to just add opacity/mode options to the
filter tool, instead of having this be a separate step.
The NULL terminator of the tile-offset array of dummy buffer-levels
is erroneously written as an int32, instead of an offset, even in
version-11+ XCFs, in which offsets are 64-bit.
Since the dummy levels aren't actually used by GIMP, we're going to
keep these fields as int32 as an exception, in order to remain
consistent with existing XCFs, and just add a comment in the code,
and update the docs. If we ever make use of the higher buffer
levels, we should change these fields to offsets, and bump the XCF
version.
GimpSpinButton is a drop-in replacement for (and a subclass of)
GtkSpinButton. Unlike GtkSpinButton, it avoids updating the
adjustment value when losing focus, unless the entry text has
changed. This prevents accidental loss of precision, when the
adjustment value can't be accurately displayed in the entry.
Add devel-docs/performance-logs/performance-logs.md, which
describes how to record and view performance logs, and how to
report perofrmance-related issues.
Nicknames on IRC/gitlab are hard, even more when they change depending
on the media! I realize we are regularly asking them or unsure of who to
contact (for instance here for releases). Let's associate each package
with its current maintainer to make it easy to contact the right person
to prepare our official packages before a release.
Add a gimp-register-file-handler-priority procedure, which can be
used to set the priority of a file-handler procedure. When more
than one file-handler procedure matches a file, the procedure with
the lowest priority is used; if more than one procedure has the
lowest priority, it is unspecified which one of them is used. The
default priority of file-handler procedures is 0.
Add the necessary plumbing (plus some fixes) to the plug-in manager
to handle file-handler priorities. In particular, use two
different lists for each type of file-handler procedures: one meant
for searching, and is sorted according to priority, and one meant
for display, and is sorted alphabetically.
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.
GimpBusyBox is used to show a message indicating an operation is in
progress. It's basically just a spinner and a label, with some
styling.
We're going to use it both in app/ and in a plug-in.
Explaining in the intro that the reference is the code, and where to
find it.
Rather than writing uint32/64 for every offset, use "pointer" as a
proper and well defined basic data type, whose detailed description is
in the "BASIC CONCEPTS" section at the start of the file.
... for layer modes.
KDE developers asked me where the code was so that they could reproduce
actual algorithms in their XCF reader. This is obviously interesting
information to have around in our docs.
We should stop using MD5 sums altogether and push forward SHA256/SHA512
hash sums instead. The website is also being updated to display these in
favor of the deprecated MD5 sums.
We are most likely not going to remove previously computed MD5 sums, or
recompute SHA* hashes for older binaries, but at least we should stop
doing MD5 sums of any future binary.
Add new PDB group "drawable_edit" which has all procedures from the
"edit" group which are not cut/copy/paste.
The new group's procedures don't have opacity, paint_mode
etc. arguments but take them from the context instead. Unlike the old
gimp-edit-fill, gimp-drawable-edit-fill now uses the context's opacity
and paint_mode.
The new gimp-drawable-edit-gradient-fill procedure uses even more
context properties which are also newly added with this commit
(gradient_color_space, gradient_repeat_mode, gradient_reverse).
And some cleanup in context.pdb.
This is still WIP, nothing in the edit group is depcreated yet.
The upper text will be centered on the top quarter of the bottom quarter
of the splash image, whereas the bottom text will be centered on the
bottom quarter of the bottom quarter of the splash (unless the splash is
too small, in which case the double of the layout pixel extents will be
used). Basically don't use absolute pixel values anymore for
positionning. This should all be done relatively since there are
nowadays all kind of display size (and positionning the text 6 pixels to
the bottom, as it was done, may be ok on low density displays, yet will
look ugly on high density screens).
Also write this down in the splash requirements in the release howto so
that splash designers are aware that the bottom quarter of their image
will have to be adapted for printing text.
I create this file so that we can refer to it to know whether we can use
a OS-specific API, or if we want to know if we can safely bump a
dependency, etc.
Current splash is not right within these requirements. But that's all
right for this RC.
These requirements are meant to be followed from next release.
I completely forgot to rename the appstream file according to the new
ID. While doing so, I also make it a .in.in file, with initial
processing by the autotools. Indeed I need @GIMP_COMMAND@ to be replaced
by AC_CONFIG_FILES().
Finally I fix a badly closed XML tag (which reminds me I should always
test a commit, even when it's a simple non-C 1-liner change!).
Please don't forget to notify me too of an upcoming release. I need to
update the manifest (for stable releases at Flathub at least, since we
have not set the dev release process yet) and trigger a new build of our
flatpak.
Trying to manually read commits to acknowledge translators, designers,
developers, etc. is just ridiculous. Let's try to have a script doing
the work for us.
You use it like this:
- GIMP 2.9.8 stats: devel-docs/release-stats.sh GIMP_2_9_6 GIMP_2_9_8
- GIMP 2.10 stats: devel-docs/release-stats.sh GIMP_2_8_0
...of official binaries
Add this point right after "Announce on the GNOME I18N mailing list."
Also remove the "wait for mirrors" thing at the end, in a subsection
of that point we say "as fast as possible" and that contradicts each
other.
Move the "properly chilled beverage" to the end where i belongs
(or perhaps it belongs where the build starts...)
This will be a neat reminder for some of the hidden environment
variables helpful to debug GIMP in some cases, as well as some other
tricks, which we often have to tell people or even which we forget (or
don't even know sometimes) ourselves.
This will be less annoying to just remember to check this file if we
forget the name of some environment variable than to try and grep the
git log or the code.
If someone adds another environment variable which changes some behavior
of the code, please add it here. Also if you know some other helpful
tricks, share with all. Thanks.
I've made the download and home page of gimp-web as generic as possible
so that one will just have to update GIMP_VERSIONS in order to release a
new version. In particular, no boring editing of hardcoded versions in
html pages anymore.
Also adding an item to update the authors page as well (which is
generated so it's just a matter of moving a file).
The GNU coding standards rules can be found in:
https://gcc.gnu.org/wiki/FormattingCodeForGCC
I added a few rules, like if the file has existing tabs, we want to show
them as 8 columns. Yet typing tabs automatically expands to 2 spaces.
I also added a rule to highlight (in red) trailing whitespaces, but also
tabs (everywhere, not only trailing) making them easy to spot.
This file can be easily sourced from vimrc for the whole GIMP tree, but
I advise against setting VIM to automatic discover a locale .vimrc,
which is possible but a high security risk since a third-party vimrc
could contain random shell commands.
This explains a little better why some systems (i.e. GNOME…) would show
no icons in menus whereas other (i.e. Linux Mint, Windows…) would show
them. GIMP_ICONS_LIKE_A_BOSS environment variable is a developer trick
to show icons in menus anyway to see how things render on such systems.
Its API was too limited, and adding parameters for what we need next
would be equally random. It's a rarely used and mostly internal
widget, so simply use g_object_new().
The code refactoring allows better readability which will allow in turn
to add more complex specific features making good use of the save/export
split concept.
gimp_color_config_get_foo_profile() -> get_foo_color_profile()
because the old names clash with possible future accessors for the raw
filename properties.
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.
GIMP's OVERLAY mode was identical to SOFTLIGHT. This commit fixes the
issue and introduces a NEW_OVERLAY mode and enum value.
- change gimp:overlay-mode to be a real (svg-ish) overlay mode
- when compositing, map OVERLAY to gimp:softlight-mode
- when compisiting, map NEW_OVERLAY to gimp:overlay-mode
- bump the XCF version when NEW_OVERLAY is used
- map OVERLAY to SOFTLIGHT when loading and saving XCF
- map OVERLAY to softlight in all PDB setters
- map OVERLAY to softlight when deserializing a GimpContext
- change all paint mode menus to show an entry for NEW_OVERLAY
instead of OVERLAY
- change PSP, PSD and OpenRaster to use NEW_OVERLAY
These changes should (redundantly) make sure that no OVERLAY enum
value is used in the core any longer because it gets mapped to
SOFTLIGHT at all entry points, with the downside of introducing a
setter/getter asymmetry when OVERLAY was set in a PDB api.
XCF spec:
- Update to GIMP 2.8.10
- Clarify role of file formats in the save-vs.-export-context
- Rearrange outline
- Collect infos on basic concepts in one chapter
- Add table of contents
- Add File format version history
- Add note on image size
- Add open questions and TODOs
- Sort properties alphabetically
- Unify tiles and hierarchy examples
- Wording
- Cosmetic cleanups
Extract compositing.txt from xcf.txt
Update parasites.txt:
- Replace SVN->Git
- Update contact e-mail address
- Add table of contents
Cherry-picked from commit a83791be19
This item caused builds with --enable-gtk-doc-app to
fail because of a typo and it was also misplaced in
app-core-containers.(cherry picked from commit e1564c44a8)
Add -lm to the linker flags for the doc-shooter binary. Actually add a
whole snippet of makefile boilerplate that also deals with -mwindows,
all other makefiles seem to have it. I have no clue what it does.
(cherry picked from commit ae5f847a11)
Apply patch from Hartmut Kuhse that enables plug-in debugging on
Windows by stopping the process using Windows API, and providing a
small executable "gimp-plugin-resume.exe" to resume the stopped
plug-in.
gimp_font_util_pango_font_description_to_string() isn't needed any
longer as this was fixed long ago in pango itself (and we require a much
higher version anyway). See Pango bug #166540 (at GNOME Bugzilla).
In order to effectively collaborate on this huge porting task, the
first step is to agree on exactly what we want to do.
In an effort to organize this, add gegl-porting-plan.txt to
devel-docs. In this document, we can describe how we want the port to
be done. This is not only for ourselves, but will also be useful for
non-core contributors.
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.
Introduce gimp_vectors_get_bezier() which creates the bezier
representation on demand and then caches it for subsequent calls
until the vectors object is frozen.
At some point we should introduce GimpVectors::changed instead
of relying on the fact that a vectors object is always frozen
and thawn whenever it is changed...
In order to make a clear separation between the core modules and the
UI modules, move the necessary enums from display-enums.h and
widgets-enums.h to config-enums.h and the files
gimpdisplayoptions.[ch] from the display to the config module. This
removes the config -> display dependency.
This change has three main benefits
* It lets us remove includes of display files from the config module
* We don't have to link gimp-console and test-config with a subset of
object files from the display module
* It is reflected in devel-docs/gimp-module-dependencies.svg that the
application is made up of core modules and UI modules and that no
core module depends on any UI module
Some single-window mode tasks are completed, and some bugs on the 2.8
milestone have been postponed. New estimated release candidate date is
2010-12-27, but I expect more bugs and features to be de-scoped. The
updated estimates are put in a new snapshot, i.e. put in a new column.
Add an OpenOffice.org Calc document that contains a list of tasks that
needs to be done before GIMP 2.8 is ready for release. An estimate of
the time to complete each task, in 8-hour work days, is also
given. Based on this data an estimated date when we will have a GIMP
2.8 release candidate ready is calculated. The formula includes a
“days worked per week”-factor that specifies how many 8-hour work days
that the GIMP community together produces per week. There is also a
sheet where things planned for GIMP 2.10/3.0 is put. With this
document we will be able to better plan what features to include in
what version.
Add an SVG illustration of GIMP library and core modules and the
dependencies between them, created with
tools/module-dependencies.py. One obvoiusly evil dependency is
app/config -> app/display, if we get rid of that the cycle between
core modules might be broken.
This document describes how the GIMP UI framework functions and is
implemented. Here, "UI framework" refers to the system that saves the
UI layout between GIMP sessions, i.e. how docks, dockable dialogs etc
are setup.