- 25 Mar, 2018 17 commits
-
-
Jehan authored
-
Jehan authored
Since error handling is based on preferences, the config needs to be loaded first. Otherwise the gimp->config object does not exist yet and we get a bunch of "'G_IS_OBJECT (object)' failed" assertion which recurse in error handling when trying to get the "debug-policy" property. Just init the error handling later. It means it won't handle early loading code, but that is not much of an issue.
-
Alexandre Prokoudine authored
-
Massimo Valentini authored
In gimp_brush_core_color_area_with_pixmap(), use the native area format when painting the brush, instead of always going through "RGBA float", and create the pixmap -> area fish only once, instead of once per scanrow. In gimp_brush_core_paint_line_pixmap_mask(), avoid modulus calculation at each pixel. See bug #694917.
-
Piotr Drąg authored
-
Alexandre Prokoudine authored
-
Ell authored
-
Jehan authored
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.
-
Ell authored
Add gimp_item_scale_by_factors_with_origin(), which is an extension of gimp_item_scale_by_factors(), taking the input/output points of origin for the transformation (both of which are (0, 0) in the case of gimp_item_scale_by_factors()). Implement gimp_item_scale_by_factors() in terms of the new function, and Use the new function when scaling group layers, instead of manually calculating the children boundaries, so that the behavior is uniform across whole-image scaling and group-layer scaling. The new function rounds all four edges of the boundary to the image-global pixel grid, instead of only rounding the top/left edges to the global grid, and the bottom/right edges to the item- local grid. This preserves layer-adjacency when scaling.
-
Ell authored
Use GimpObjectQueue, added in the previous commit, in various instances where we perform an action on a set of objects. This improves progress reporting, by using a single progress for the entire operation, rather than reporting the progress of each object individually, and by taking the relative cost of each object into account, instead of assuming a uniform cost for all objects. In particular, this affects the various whole-image operations (i.e., transformations and color conversions), operations on linked items, and operations on layer groups. This also affects layers with masks, whose progress is now reported together instead of individually. Additionally, this commit fixes erroneous group-layer mask cropping during undo when resizing the image, by properly calling {start,end}_move() on all the resized layers before starting the operation, and when scaling the image, by only scaling top-level layers, and letting group layers scale their children themselves.
-
Ell authored
GimpObjectQueue implements a queue of GimpObjects. It derives from GimpSubProgress, and hence can be used as a GimpProgress object. It keeps track of the total memsize of the objects that were pushed-to and popped-from the queue, and uses these numbers to set the corresponding subrange of the progress object when an object is popped. This provides an easy way to perform an operation on a set of objects, correctly reporting progress based on the relative sizes of the objects, which is assumed to be a good estimate of the relative cost of processing each object.
-
Ell authored
Make the parent GimpProgress object of a GimpSubProgress instance settable through a property during construction, so that we can use it as a base class.
-
Ell authored
In gimp_group_layer_{start,end}_move(), push corresponding undo steps, which perform the opposite operation during undo, and make sure that mask-cropping is frozen during group-layer move operations. This fixed erroneous group-layer mask cropping when undoing/redoing a group-layer move operation multiple times.
-
Jehan authored
GIMP 2.10 is 2.10.0 and "2.10 RC1" is "2.10.0-RC1". I also update directly the Polish msgid and msgstr (only language having a translation on time, though it's our fault!) to avoid the translation getting fuzzy uselessly. I let the "rc" as lowercase in version property of <release> tag, assuming the more official/parsable name should be lowercase. Not sure if it makes sense.
-
Jehan authored
-
Jehan authored
Seems it will be today after all!
-
Michael Natterer authored
...should really use last values When creating a layer or channel "from last values", really use the values last set be the user in the respective dialogs. In particular, don't use properties of the active layer or channel. I have no idea what we were thinking when adding that obscure logic.
-
- 24 Mar, 2018 6 commits
-
-
Ell authored
When pasting in place over a layer group or a content-locked item, change the paste type to NEW_LAYER_IN_PLACE, rather than NEW_LAYER, so that the new layer is still pasted in the right location. Additionally, avoid showing the "Pasted as new layer because ..." message when pasting over a layer group or a content-locked item, when the paste type is NEW_LAYER[_IN_PLACE] to begin with.
-
Jehan authored
I'm not sure how useful is this test if we have to just constantly tweak the sessionrc for it to pass. But well… here it is. Now make check fully passes.
-
Jehan authored
Not using %d in the singular form of English does not prevent other languages to use %d in any form they wish to. This will still work and will still be replaced by the relevant number of images. So I revert commit a0724783 because it is just prettier (in English) to write "An image" rather than "1 image", but this does not mean you have to do the same in other languages! Adding a comment so that translators know about it. Also directly modify the msgid in the Polish and Russian translations which already translated this string, so that the translations does not end up unnecessarily fuzzy.
-
Piotr Drąg authored
-
Jehan authored
The text was too long and increasing the minimum width of Preferences dialog.
-
- 23 Mar, 2018 14 commits
-
-
Alexandre Prokoudine authored
-
Piotr Drąg authored
-
Alexandre Prokoudine authored
-
Piotr Drąg authored
-
Michael Natterer authored
-
Piotr Drąg authored
-
Piotr Drąg authored
-
Ell authored
Fix a CRITICAL when calling gimp_layer_mode_get_format() with an AUTO composite space and a NULL preferred format, which is valid: it means the layer mode is composite-space agnostic (as DISSOLVE is), and that there's no preferred format. A NULL preferred format can occur during gimp_operation_layer_mode_prepare() if the layer's mode node is not yet attached anything through its "input" or "aux" pads, which is the case during the call to gimp_layer_update_mode_node() while constructing the layer's node in gimp_layer_get_node().
-
Jehan authored
-
Øyvind "pippin" Kolås authored
-
Jehan authored
It should use the last used layer mode instead.
-
Michael Natterer authored
-
Michael Natterer authored
Add signal GimpTextBuffer::color-applied which is emitted when text is inserted or when color is applied to a span of text. In GimpTextTool, connect to the signal and update the global color history. Unrelated: rename gimp_text_tag_get_color() to get_fg_color() and add boolean return values to get_fg_color() and get_fg_color() which indicates if a color is set on the tag at all. This ended up unneeded in the fix but is an improvement regardless.
-
Jehan authored
-
- 22 Mar, 2018 3 commits
-
-
Jehan authored
Since commit d916fedf, GIMP has had the hidden feature to salvage images (if possible) during a crash into a backup folder. This commit finishes the feature by opening a dialog proposing to try and recover the salvaged images. This is not perfect yet since it doesn't "remember" the XCF path (in case it was a previously saved image). The images open as new unsaved and dirty images, but directly from the contents at crash time. For now, it is up to people to figure out what they correspond to, if relevant.
-
Ell authored
In gimp_gegl_apply_scale(), use a CLAMP abyss policy for the scale op, to avoid leaking transparency into the image when scaling drawables. Note that this (intentionally) only affects whole-image/layer scaling, and not scaling done using any of the transform tools.
-
Ell authored
In gimp_gegl_apply_{border,grow,shrink,flood}(), which are used by the corresponding channel functions, pass crop_input = TRUE to gimp_gegl_apply_operation(), to clip the input to the output rect. These operations process the entire input in one go, regardless of the requested output region; however, the channel functions calculate the output region according to the known channel bounds, hence clipping the input to these bounds doesn't affect discard any information, while avoiding unnecessary work. In particular, this makes the corresponding operations on small selections in big images much faster.
-