Commit Graph

4409 Commits

Author SHA1 Message Date
Michael Natterer 3ac3dcde48 app: add a GParamFlags parameter to gimp_prop_gui_new()
If non-0 flags are passed, create widgets only if the GParamSpec flags
have all the passed flags.
2016-02-06 01:04:40 +01:00
Michael Natterer 46da951b85 app: add an offset to GimpDisplayShell's mask
and set that offset in GimpRegionSelectTool when not in sample_merged
mode. Fixes live selection mask display for layers with a non-zero
offset.
2016-02-05 21:21:52 +01:00
Jehan e01d56969d app: move all guide styling to gimpcanvas-style. 2016-02-03 19:38:32 +01:00
Michael Natterer 3415d22e58 app: some cleanup in the new symmetry code, mostly harmless 2016-02-03 14:29:23 +01:00
Michael Natterer 023a732a3e app: simply call gimp_image_map_commit() in gimp_blend_tool_commit()
so the already computed result is used and not completely regenerated.
2016-02-03 00:22:15 +01:00
Jehan b8fadf3ad7 app: add a "custom" guide concept.
With gimp_guide_custom_new(), you can create a custom guide with a different
style on canvas (other pattern/color/width). A custom guide won't be saved
and could be used, for instance, for specific GEGL op guiding.
2016-02-02 21:15:13 +01:00
Michael Natterer 589dd3d485 app: rename gimp_blend_tool_update_preview_coords() to _update_graph() 2016-02-02 01:25:42 +01:00
Michael Natterer 49b4d6a220 app: clean up the blend-tool-fun branch to be usable on master
which essentially means some cleanup and no more regressions:

- add state POINT_BOTH for moving the entire line
- use the move cursor for moving the entire line
- reorder some functions
- set the tool to handle click events
- make clicks and no-motion releases behave properly
- #if 0 the code for "shapeburst handles", they don't work yet
- return to gimp:shapeburst until we have figured progress for GEGL ops
- indentation, stuff...
2016-02-02 00:46:42 +01:00
Michael Henning f545b7fe72 app: Place shapeburst buffers at the right offset. 2016-02-01 21:20:19 +01:00
Michael Henning 2cee41aabd app: Add shapeburst handles to the blend tool. 2016-02-01 21:20:19 +01:00
Michael Natterer 92bd0fb7e4 app: change minimum value of GimpBlendOptions::supersample-depth to 1
The old minimum of 0 resulted in a "subpixel" size of 1 which doesn't
make much sense.
2016-02-01 20:29:39 +01:00
Michael Natterer 6aa6406416 app: clean up tool_manager_tool_changed() a bit 2016-01-25 12:18:44 +01:00
Michael Natterer d2d2920af6 app: fix changing tools to not prematurely change the old tool
Commit the old tool before even creating the new tool. Old and new
tool might be the same and share tool options, and we don't want
the new tool's initialization to mess up the old tool's state.

Fixes changing from one GEGL operation to another without explicitly
confirming the first operation. The bug only killed the cached filter
result, but that's bad enough.
2016-01-25 02:56:10 +01:00
Michael Natterer 6a2f200b34 app: rename more variables to "im_tool" in GimpImageMapTool 2016-01-25 02:56:10 +01:00
Alexandre Prokoudine 4ce063cf32 app: add gegl:high-pass as Filters > Enhance > High Pass 2016-01-25 02:54:05 +03:00
Alexandre Prokoudine 50daf44ef3 app: add gegl:saturation as Colors -> Saturation 2016-01-25 02:33:53 +03:00
Michael Natterer 56e032c1eb app: remove gimp_image_map_tool_dialog_get_label_group()
The "Settings:" label should never be aligned with a label in the UI
below, because that suggests that are related. Also consistently
rename all GimpImageMapTool parameters and variables to "im_tool".
2016-01-24 22:03:58 +01:00
Michael Natterer a4f005ba22 app: change widget grouping in the curves dialog like in levels 2016-01-24 21:41:03 +01:00
Michael Natterer 27cf1e5e6f app: finish the levels dialog widget grouping
seems I didn't consistently group things in indented GimpFrame widgets
last time I cleaned up here. Should be better now. Also change the
"Auto" button to "Auto Input Levels" to make things clearer.
2016-01-24 21:39:31 +01:00
Michael Natterer c8ee9f951d app: fix crash in gimp_gegl_tool_get_operation()
actually chain up, instead of calling ourselves recursively...
2016-01-23 22:06:19 +01:00
Michael Natterer bd9e59a9f0 app: add "title", "icon_name" and "help_id" to gimp_tool_gui_new()
so things are the same at the API and the inside, which makes
GimpImageMapTool's use of GimpToolGui a little more obvious.
2016-01-22 23:41:45 +01:00
Michael Natterer 8c09210d7d app: move stuff from GimpOperationTool to GimpImageMapTool
Add new string members to GimpImageMapTool and use them instead of the
resp. fields of GimpToolInfo. Change ::get_operation() to return the
operation name and a lot of strings for the UI, and create both the
GeglNode and the config object in GimpOperationTool. Lots of various
cleanups in GimpImageMapTool subclasses. This is an intermediate state
on the way of making the whole filter applying mechanism more generic
and less depending on subclasses.
2016-01-22 21:28:33 +01:00
Michael Natterer 39cc3eccd5 app: rename gimp-gegl-config-proxy.[ch] to gimp-gegl-config.[ch]
and rename its functions to make more sense.
2016-01-20 12:18:35 +01:00
Michael Natterer 06a5b2fa3f app: bring dialog titles and help IDs to GEGL filter dialogs
Add "title" and "help_id" parameters and members/properties to
GimpToolDialog, GimpToolGui, GimpOperationTool. Also make the order of
parameters more consistent.
2016-01-17 20:17:07 +01:00
Ell 350c7ca338 app: Add "Diagonal neighbors" option to the bucket fill tool
When checked, diagonally neighboring pixels are considered connected
when calculating the affected area.

This commit also adds a corresponding diagonal_neighbors parameter to
gimp_drawable_bucket_fill(), and modifies the callers, other than the
bucket fill tool, to pass FALSE for this parameter, to retain the
current behavior.
2016-01-17 00:46:54 +01:00
Ell 070007d891 app: Add "Diagonal neighbors" option to the fuzzy select tool
When checked, diagonally neighboring pixels are considered connected
when calculating the affected area.
2016-01-17 00:46:54 +01:00
Ell 93bf78b83e app: Add diagonal_neighbors parameter to...
...gimp_pickable_contiguous_region_by_seed(), in preperation
for adding a similar option to the relevant tools.

When this parameter is TRUE, all eight neighbors of each pixel
are considered when calculating the resulting region, instead
of just the four orthogonal ones.

This commit also modifies all callers to pass FALSE for this
parameter, to retain the current behavior.
2016-01-17 00:46:54 +01:00
Michael Natterer 149d3f441f app: turn the desaturate tool into a normal GEGL filter 2016-01-16 22:38:12 +01:00
Michael Natterer 6541c6b80b app: add icons to the generated gimp-gegl-config-proxy classes 2016-01-16 22:01:07 +01:00
Michael Natterer 7b009c6900 app: turn the posterize tool into an ordinary GEGL filter
which means replacing the whole thing by a few lines.
2016-01-16 21:41:00 +01:00
Michael Natterer 83fbd31f12 app: disable "Resize windows on zoom/resize" in single-window mode
They only make sense if the image is by itself in multi-window mode.
2016-01-10 20:09:28 +01:00
Michael Natterer dd171bbf0c Bug 760175 - paintbrush size not applied in python scripts in version 2.9
Remove the code that links size, spacing etc. to brush defaults from
the GimpPaintOptions class impl and add it to gimppaintoptions-gui.c
as a callback instead.

It's not a core thing and that magic with side effects should only be
applied to the GimpPaintOptions behind the tool options GUI.
2016-01-06 01:24:56 +01:00
Michael Natterer 2a43ab240b app: don't access GimpSamplePoint members directly
Use the new accessors instead. Clean up guide and sample point code in
image crop and resize a bit.
2016-01-04 22:06:27 +01:00
Michael Natterer 37de341099 Bug 759194 - Unified Transform Tool fails when layer is hidden
For the lack of a proper transform preview, add a HACK that allows to
make the transformed layer invisible while the tool is active.
2016-01-04 19:37:14 +01:00
Daniel Sabo ea66a7a974 app: mypaint: Include offset_by_random in the cursor calculation 2015-12-29 09:56:38 -08:00
Alexia Death ee9e0da72d app: correct outline calculation to match mypaint and add fallback 2015-12-29 19:37:45 +02:00
Michael Natterer e415b1cfab Bug 759939 - Ghost brush outline in FG Select tool
Undraw the outline when the pointer leaves the canvas.
2015-12-29 12:57:17 +01:00
Michael Natterer 2e40af5dcf app: remove virtual function GimpToolOptions::reset()
and use GimpConfig::reset() instead.
2015-12-29 12:47:04 +01:00
Daniel Sabo 677b1f2d82 app: mypaint: Add a toggle to change between erase & paint mode 2015-12-28 15:25:47 -08:00
Michael Natterer 8fa6e261d0 app: add a brush selector to the MyPaint brush options 2015-12-28 20:04:29 +01:00
Michael Natterer e9a38c320d app: fix the curves tool to not warn on layers without alpha
when adding control points to all channels with control-click. It was
looking up curve points based on a -1 alpha value.
2015-12-28 02:07:20 +01:00
Michael Natterer ab8f2c6d2b app: more s/mybrush/mypaint-brush/ in strings visible in config files 2015-12-22 19:39:11 +01:00
Michael Natterer d01ba07ed6 configure.ac, app: make libmypaint a hard dependency
and move the MyPaint brush tool out of the playground.
2015-12-21 21:39:48 +01:00
Michael Natterer ccd8ec5dee app: connect the MyPaint brush core with the new brush container
and remove all hackish temp code that did the same. Remove quite
some #ifdefs around code that doesn't depend on libmypaint.
2015-12-21 12:28:46 +01:00
Michael Natterer d4aa39a7cd app, libgimpwidgets, icons: rename mypaint brush icons and help ID
from "mybrush" to "mypaint brush".
2015-12-21 00:09:55 +01:00
Michael Natterer a5eff27149 app: add new GimpData subclass GimpMybrush and infrastructure around it
- GimpContext API and property
- a GimpDataFactory
- List and grid views with GimpDataFactoryView
- actions and a context menu

None of this is connected to the actual tool yet, or depends on
libmypaint in any way.
2015-12-20 23:51:44 +01:00
Daniel Sabo df21e07855 app: Fix MyPaint brush rendering, implement MyPaintSurface in a native format 2015-12-15 14:48:18 -08:00
Michael Natterer 9c3944d63b Bug 759212 - Warp tool must be disabled on group layers
Disable the warp tool on invisible, locked and group layers, and show
the "forbidden" cursor.
2015-12-09 20:30:32 +01:00
Michael Natterer 0c784559c8 app: improve the layout of GimpBufferSourceBox
and add a label with the selected pickable's name.
2015-11-30 02:46:22 +01:00
Michael Natterer baae27c786 app: note to self: don't push intermediate commits... 2015-11-29 19:56:32 +01:00
Michael Natterer 6040aa2b97 app: use GimpBufferSourceBox in GimpOperationTool
and support ops with an arbitrary number of aux inputs.
2015-11-29 19:30:58 +01:00
Michael Natterer 71e566fde7 app: add gegl:gaussian-blur-selective to Filters -> Blur 2015-11-26 11:20:44 +01:00
Thomas Manni 127b3de54a Bug 756775 - UnifiedTransformTool: nan value in handle geometry computation
Do not compute angle between 2 vectors if at least one of them is a null vector.
Return 0.0 instead.
2015-11-24 10:31:47 +01:00
Michael Natterer 96de700b43 app: add gegl:sepia to Colors -> Desaturate 2015-11-22 21:32:36 +01:00
Alexandre Prokoudine 70dd9102a0 Don't use double space in Unified Transform options 2015-11-22 17:45:25 +03:00
Michael Natterer 909ecd4e79 Bug 757905 - using select tool on image in one tab causes user to lose...
...selection on image in another tab

Fixed for rectangle select, ellipse select and crop, they now all
confirm the previous display's tool interaction instead of aborting it
when the tool is used on another display.
2015-11-20 20:51:23 +01:00
Michael Natterer 9cde7572b4 Bug 757905 - using select tool on image in one tab causes user to lose...
...selection on image in another tab

Make the free select tool behave when switching between displays.
Also clean up the code a bit and reduce utility function
fragmentation.
2015-11-20 19:17:45 +01:00
Jehan 011c6db39e app: enable GimpCurvesTool on construction.
The Curves tool is to be considered "enabled" as soon as it is selected,
not when it is initialized (usually at the first click on the image).
One of the main consequence of not being "enabled" was that the tool
cursor was wrong at selection.
2015-11-05 18:31:06 +01:00
Michael Natterer ace40d125d Bug 735891 - color areas in the color picker info window are half transparent
Add code to GimpOverlayChild which can render arbitrary children of
the widget fully opaque, ignoring the configured opacity.

Add gimp_widget_get,set_fully_opaque() which gets/sets a per-widget
boolean flag to trigger that code.

Set the color picker's and the text tool style widget's color areas to
fully opaque.
2015-10-27 21:41:32 +01:00
Michael Natterer ded7c8f585 app: add gimp_display_shell_scale_to_rectangle()
and move the magnify tool's rectangle zoom logic to the new function.
2015-10-18 14:59:30 +02:00
Michael Natterer 7ec04e4afe app: get rid of hardcoding GDK_SHIFT_MASK in tools/
gimp_suggest_modifiers(): change "shift_format" and "control_format"
parameters to "extend_selection_format" and "toggle_behavior_format",
which fixes the longstanding problem that the function did the right
thing only by accident.

tools: use gimp_get_extend_selection_mask() instead of GDK_SHIFT_MASK
which is not 100% semantically correct in all cases, but at least a
step in the right direction to make the tool modifiers easier to
improve.
2015-10-17 15:31:08 +02:00
Jonathan Tait 7167586919 Bug 754998 - Warp Transform Tool > Animation> Frames...
...spinbox does not step/page correctly

Correct the increments to be integers not floats.
2015-09-28 20:22:57 +02:00
Michael Natterer 29fee56914 app: fix visibility of the color picker tools info window
Since commit 867b1f7e the window did always pop if it was set to
visible once, even if closed and "Use info window" disabled.

Fix this by adapting the show logic to the fact that we now keep the
widget alive across images/displays.
2015-09-20 00:37:05 +02:00
Michael Natterer 867b1f7efa Bug 754713 - On-canvas dialog of color picker tool always displays...
...in initially active tab

We intend reuse the dialog across displays, so don't destroy the
dialog in GIMP_TOOL_CONTROL_HALT, only hide it. This way the dialog
keeps its detached state.
2015-09-09 01:24:19 +02:00
Michael Natterer 22fc50c279 app: rename all values of enum GimpContextPropMask
from GIMP_CONTEXT_FOO_MASK to GIMP_CONTEXT_PROP_MASK_FOO.
Also rename the FIRST and LAST values of enum GimpContextPropType.
2015-09-08 21:18:49 +02:00
Michael Natterer 3f02b2aaf2 app: add gegl:maze to Filters -> Render -> Pattern 2015-09-03 22:12:23 +02:00
Michael Natterer ebcd7cacbb app: redo widget grouping in the levels dialog, still far from good
but a bit more logical. This totally needs to change again.
2015-09-01 22:33:42 +02:00
Michael Henning 0ff7ab3712 app: Fix typo
Pointed out by prokoudine on irc after it was introduced in e2bdfd41
2015-08-31 20:24:50 -04:00
Michael Natterer e2bdfd41e2 Bug 750954 - Make tips of the "Black point" and "White point" buttons...
...in the Levels dialog explain the difference between them

Improve the tooltips of the pick buttons to say

"Pick FOO point for {all channels|the selected channel}"
2015-08-31 00:09:22 +02:00
Michael Natterer 3ca15939ff app: fix signature of gimp_curves_tool_color_picked()
which I forgot in yesterday's color picking refactoring.
2015-08-25 23:51:33 +02:00
Michael Natterer 8c80ee14ff Bug 748749 - picked colors don't match image colors...
...when a color profile is active

This commit doesn't fix anything, but it prepares the code to do the
right thing:

It passes the actual raw image pixels through the entire color picking
mechanism to the widgets which display colors, particularly
GimpColorFrame.

This is needed for GimpColorFrame's "Pixel" mode (as opposed to its
RGB, HSV etc. modes) which is supposed to show the raw pixel values
from the image.

Before this commit, it was recreating the raw pixel values from the
GimpRGB value it knows, which will become impossible when we correctly
pick color managed GimpRGB values soon.
2015-08-25 00:05:59 +02:00
João S. O. Bueno 4f78fdd31c Fixes parent_instence typo 2015-07-25 03:26:56 -03:00
Jehan 43e4256d56 "gegl:seamless-clone" operation's properties "max-refine-steps" changed…
… into "max-refine-scale". See GEGL commit 346139b.
It does not fix the Seamless Clone tool, but at least now the slider
has a meaning.
2015-07-12 19:47:49 +02:00
Michael Natterer d6c578c567 app: change gimp_image_crop() to use x, y, width, height 2015-07-03 19:38:08 +02:00
Michael Natterer 4c2edf1841 app: use gimp_image_item_list_bounds() in GimpEditSelectionTool
the code was duplicated 4 times. Also merge the layer and vectors
cases for finding bounding boxes into one, they are the same now.
2015-07-03 19:38:08 +02:00
Michael Natterer e90e90265b app: port everything from gimp_channel_bounds() to gimp_item_bounds()
except gimpchannel.c itself.
2015-07-03 19:38:08 +02:00
Michael Natterer 7e90a3e4e5 app: use gimp_item_bounds() instead of gimp_vectors_bounds() 2015-07-03 19:38:06 +02:00
Michael Natterer bc525f39ee app: factor out a function in GimpEditSelectionTool, and move one around 2015-07-03 19:38:06 +02:00
Michael Natterer 7d220a56e0 app: free GimpEditSelectionTool's stuff in finalize() 2015-07-03 12:27:08 +02:00
Michael Natterer 3d7af8a184 app: remove the "exclude" paameter from gimp_image_item_list_get_list()
and from gimp_image_item_list_filter(). After the fixes for bug 735906
it's no longer needed, and it was harmful.
2015-06-28 23:49:47 +02:00
Michael Natterer 358f13f5b8 Bug 735906 - Transform tools give unexpected results when transforming...
...certain sets of linked layers

Fix the move tool (GimpEditSelectionTool) using the same principle
as the other "linked item" features, just a bit more complicated...

Never translate the active item and its linked items separately,
always translate the entire list at once.

The linked logic was distributed across the entire file. Changed the
code to prepare lists of items that are translated live (layers and
vectors), and items that are translated at the end (channels, masks
and the selection). In the motion and button release functions, simply
use the prepared lists without any further duplicated checking.

Also clean up the stuff a bit, there is more cleanup needed but first
the fix...
2015-06-27 12:34:19 +02:00
Michael Natterer 3c706d00c6 Bug 735906 - Transform tools give unexpected results when transforming...
...certain sets of linked layers

Fix for translating layers from the PDB, and with the cursor keys
for gimpeditselectiontool. Moving layers with the mouse is still broken.

The approach is exactly the same as in 25a696c7.
2015-06-26 12:00:45 +02:00
Michael Natterer 25a696c7f8 Bug 735906 - Transform tools give unexpected results when transforming...
...certain sets of linked layers

Fix this bug for flip, rotate and general transforms (not for move yet):

gimp_item_linked_flip,rotate,transform(): always transform the passed
item too (do not filter it out of the list of items), so these functions
do the entire job of transforming a linked group now. Transforming the
active item separately didn't work (and is not implementable) if both
a layer and its parent layer group were linked.

flip tool, transform tool, layer->transform callbacks: don't call
gimp_item_foo() *and* (if the item is linked) gimp_item_linked_foo().
Instead call gimp_item_linked_foo() if the item is linked, and
gimp_item_foo() otherwise.

This commit also kills the mis-feature of transforming the selected
pixels of the active layer, and then the linked items completely. We
now either only transform the selected area *or* the linked group.
2015-06-25 12:25:41 +02:00
Michael Natterer e58bf5138f Bug 751333 - Crash when moving cursor with ibus "Hangul" input method
Had a closer look at GtkTextView again and implemented the IM
callbacks like there. I don't know if this fixes the bug, please test.
2015-06-22 22:54:16 +02:00
Michael Natterer 6d6efbbf8b app: remove "remove_children" parameter from gimp_image_item_list_filter()
It was always TRUE. The function should be renamed now, but not until
the merging of linked item fixes to 2-8 is done.
2015-06-20 21:59:37 +02:00
Michael Natterer 64b24d169d app: remove "remove_locked" parameter from gimp_image_item_list_filter()
This is just removal of unused code before fixing bug 735906.
2015-06-20 16:03:40 +02:00
Michael Natterer 014cd08c5c Bug 750953 - The Curves dialog should present per channel lines...
...when opened by the "Edit these settings as Curves" button on the
Levels dialog

The code to configure the entire GUI correctly was not even called
when initially creating the curves dialog (the color bars probably
looked right just because of default values of their own).

Factor out gimp_curves_tool_update_channel() which properly updates
the GUI. Call it after the dialog has been created, and when the
active channel changes.
2015-06-15 00:11:13 +02:00
Michael Natterer 6487d0a26a app: move the seamless clone tool to the playground
It's not release material unless somebody comes and fixes its bugs,
and its speed.
2015-06-14 13:02:31 +02:00
Thomas Manni 22dbdbe1fb app, menus: add gegl:displace to Filters -> Map 2015-06-10 19:43:34 +02:00
Øyvind Kolås 7e6320497e follow gegl api changes from commit af5361ca8d, with an abyss policy argument
to gegl_buffer_copy.
2015-05-25 01:27:31 +02:00
Alexandre Prokoudine 1ac8f750ff Improve Foreground Select tooltips 2015-05-07 15:42:00 +03:00
Mikael Magnusson 9b30b1d744 gimptransformoptions: Mark strings for translation 2015-05-03 01:24:55 +02:00
Ville Pätsi c4cd3c6562 app/tools/gimpgegltool.c: blacklist lcms-from-profile 2015-05-02 10:15:41 -04:00
Ville Pätsi d6f916a3c2 app/tools/gimpgegltool.c: blacklist linear-gradient and radial-gradient 2015-05-02 00:23:42 -04:00
Michael Natterer 93414342c3 Bug 748762 - GIMP crashes when a selection is outside a layer boundary...
...and % is selected in rotate Tool

Refuse to start any transform tool (with an error message) if the
selection doesn't intersect with the layer.
2015-05-02 00:00:39 -04:00
Michael Natterer a110639233 app, menus: add gegl:tile-paper to Filters -> Map 2015-04-30 11:59:49 -04:00
Michael Natterer 9d510d8fff app: make the MyPaint brush path configurable in Prefs -> Folders
Keep the config values around even if compiled without MyPaint brush
support, so we remember the values between sessions of differently
compiled GIMP versions.
2015-04-25 21:14:22 -04:00
Michael Natterer fcf7a0f9f5 app: port MyPaint brush loading to GFileEnumerator 2015-04-22 11:31:31 +02:00
Michael Natterer 109d568b46 app: remove GimpOperationTool's "config" member
The same object is kept around by the GimpImageMapTool parent class.
2015-04-10 14:10:19 +02:00
Michael Natterer 8a95f32473 app: hide the region combo for operations which do not depend on the region
This fixes commit 62cbd3eac3.
2015-04-10 13:20:26 +02:00