Commit Graph

14464 Commits

Author SHA1 Message Date
Michael Natterer eb9fefe505 app; move GimpTransformTool's shutdown code to control(HALT)
and remove gimp_transform_tool_halt(), including all the duplicated
parent class shutdown code.
2011-04-01 22:56:33 +02:00
Michael Natterer 8a69d4f639 app: fix GimpCanvasProgress' position, extents, and drawing, gah... 2011-04-01 22:56:33 +02:00
Michael Natterer c48c77b2e0 app: NULLify GimpRectangleOptions widget pointers upon destruction
so the NULL checks in GimpRectangleTool work no matter what the
shutdown order is.
2011-04-01 22:56:33 +02:00
Michael Natterer 0c7cd5b8a1 app: GimpPaintTool: don't call paint_core_paint(FINISH) in control(HALT)
because that simply can't happen (we call paint(FINISH) in
button_release() already and press and release are always paired. Only
call paint_core_cleanup() in control(HALT).
2011-04-01 22:56:32 +02:00
Michael Natterer e1bc19faf6 app: make state checks on tool much more strict
so wrong calls will run into precondition checks and warnings. This is
optional, but currently enabled, to reduce the risk of introducing
permanent new warnings for 2.8. See STRICT_TOOL_CHECKS in gimptool.h.
2011-04-01 22:56:32 +02:00
Michael Muré 24c117082f gimp:cage-transform : prepare optimisation for when the Gegl bug #645810 is solved 2011-03-31 23:00:23 +02:00
Michael Natterer e4daf561ac app: return TRUE after handling double and triple click tool events
so we don't redundantly update the cursor again.
2011-03-31 10:21:55 +02:00
Michael Natterer 6a046d09e4 app: GimpBrushTool: don't split brush setting in two callbacks
The need to both connect() and connect_after() to "set-brush" is gone
because XOR drawing is gone.
2011-03-30 23:38:14 +02:00
Michael Natterer 0db785c36a app: don't call control_activate()/control_halt() in GimpRectangleTool
Instead, call it in all implementors.
2011-03-30 22:13:31 +02:00
Michael Natterer 884e4868a4 app: fix calls to control_activate() and control_halt() in GimpIScissorsTool 2011-03-30 21:48:37 +02:00
Michael Natterer 55f80cd758 app: fix GimpForegroundSelectTool pen cursor drawing
It seems some of the junk removed in the last commit did have a
purpose :) Also use a tool progress because it's the result of a
canvas interaction.
2011-03-30 21:24:04 +02:00
Michael Natterer cc63337be5 app: simplify gimp_foreground_select_tool_oper_update() a lot
by removing tons of cruft. Fixes both status messages and tool drawing
with multiple displays.
2011-03-30 20:39:00 +02:00
Michael Natterer 92d7c7d8d9 app: change about dialog role from "about-dialog" to "gimp-about" 2011-03-30 20:20:47 +02:00
Enrico Schröder 074e2c088a app: GimpRectangleTool: Rounding error when moving/resizing with keyboard
Fix for bug #653186: When a rectangle selection is created or moved by
mouse at certain zoom-levels (200%, 400%, 800%), its coordinates can
become exactly .500. By then using the keyboard to move/resize in
steps of one pixel, a rounding error occurs in
gimp_rectangle_tool_update_int_rect(). This leads to the coordinate
either not beeing changed at all or changed by 2 pixels at a time. The
patch changes the function from using RINT() to ROUND() for the
calculations, which prevents the rounding error from happening.
2011-03-30 19:45:46 +02:00
Enrico Schröder aae8787ee3 app: SIOX: algorithm ignores color sensitivity changes
Fix for bug #627062: When changing the color sensitivity settings of
the Foreground Selection Tool, the SIOX algorithm gets called with
refinement=SIOX_REFINEMENT_CHANGE_SENSITIVITY, which then triggers
refinement=SIOX_REFINEMENT_RECALCULATE. However, there is no
implementation for RECALCULATE so the change is ignored. The patch
sets refinement to SIOX_REFINEMENT_ADD_FOREGROUND and _ADD_BACKGROUND
which triggers a complete recalculation.
2011-03-30 19:35:38 +02:00
Michael Natterer 2e406872c4 app: GimpBrushTool: don't set a BAD cursor permanently
by chaining up after setting it. Instead, don't set it and call
gimp_tool_set_cursor() directly when there is no brush or no dynamics.
2011-03-30 19:18:29 +02:00
Michael Natterer 96c8c35575 app: GimpFreeSelectTool: remove if (tool->display != display) checks
This can't happen in motion() and release() because they won't be
called if we didn't activate the tool.
2011-03-30 19:01:11 +02:00
Michael Natterer 9755d7d06c app: GimpForegroundSelectTool: call control_activate() unconditionally 2011-03-30 15:05:33 +02:00
Michael Natterer 3d2fb51a63 app: GimpEditSelectionTool: call control_halt() in button_release()
Just for consistency, the tool is destroyed at the end of
button_release() anyway.
2011-03-30 12:08:38 +02:00
Michael Natterer 6899b0bf60 app: GimpCageTool: go to deform mode only if the user clicked the first handle
and not if it was only moved.
2011-03-30 11:51:51 +02:00
Michael Natterer f585788e46 app: tool control cleanup in GimpCageTool
Don't call tool_control functions twice in init(). Call activate() and
halt() only on button_press() and button_release() to indicate that
the tool wants motion events.
2011-03-30 11:48:05 +02:00
Michael Natterer 28c48b1857 app: GimpBrightnessContrastTool: don't call gimp_tool_control_pause()/resume()
It must not be called directly, and is entirely useless here anyway.
2011-03-30 11:44:12 +02:00
Michael Natterer d92b22c567 app: #include "widgets-types.h" so the GDK_KEY_foo defines are there 2011-03-29 22:39:34 +02:00
Michael Natterer 1cdaa2846f app: some forgotten s/GDK_foo/GDK_KEY_foo/ 2011-03-29 18:53:02 +02:00
Michael Natterer 7c60bb5181 app: use more of the new GDK_KEY_foo key names
and move the compat defines from display-enums.h to widgets-enums.h
2011-03-29 17:24:08 +02:00
Michael Natterer 2468f9fd55 app: cancel the align tool on Escape, and some more cleanup 2011-03-29 15:16:17 +02:00
Michael Natterer bb5dea615b app: some more cleanup and namespacing in GimpAlignTool 2011-03-29 14:32:00 +02:00
Michael Natterer 0c8ff468f6 app: remove empty GimpTool::initialize() impl from GimpAlignTool 2011-03-29 14:00:10 +02:00
Michael Natterer f7bb4afbd8 app: add gimp_image_pick_layer_by_bounds() and use it in GimpAlignTool
Also do some refactoring in the align tool, like adding
gimp_align_tool_halt() and using it to shut down the tool.
2011-03-29 13:58:23 +02:00
Michael Natterer 08e409d6e3 app: move the GimpAlignTool options GUI to GimpAlignOptions
which fixes a major uglyness, it should have always been there.
Also fixes warnins on quit if the align tool is active.
2011-03-29 13:26:18 +02:00
Michael Natterer c38eb0df4a app: core-enums.h: fix type macros of the align type enums 2011-03-29 12:45:54 +02:00
Michael Natterer f32e285ea3 app: more cleanup in GimpMeasureTool
- highlight the active point while dragging
- make sure the tool is only active while dragging
- misc formatting cleanup
2011-03-29 09:16:22 +02:00
Michael Natterer f59eeb95e7 app: remove GimpMeasureTool:active_handle and use the existing :point
Also don't re-find the active point in button_press().
2011-03-29 08:52:09 +02:00
Mikael Magnusson afb68c1cea app: fix return value from NULL to FALSE 2011-03-29 00:23:27 +02:00
Michael Natterer 2b9b737686 app: add gimp_measure_tool_oper_update() which should have always been there
and add the stuff that should not be done in cursor_update(). Also add
highlighting of the currently hovered handle.
2011-03-28 20:44:30 +02:00
Michael Natterer 44a6e4f07a app: use gimp_canvas_item_hit() in GimpMeasureTool 2011-03-28 20:13:18 +02:00
Michael Natterer 365902b582 app: use gimp_canvas_item_hit() in gimp_transform_tool_oper_update()
so all the extents calculation and parameter passing is not
duplicated for the first time \o/
2011-03-28 18:55:08 +02:00
Michael Natterer e03a25caeb app: add virtual function gboolean GimpCanvasItem::hit()
and implement it for GimpCanvasHandle and GimpCanvasGroup.
2011-03-28 18:54:02 +02:00
Michael Natterer b529d556fa app: add and use more GimpCanvasItem setters 2011-03-28 15:15:43 +02:00
Michael Natterer d96091d514 app: port GimpMagnifyTool away from draw_tool_pause()/resume() 2011-03-28 12:22:29 +02:00
Michael Natterer accc12a3ca app: change GimpCanvasItem setters to take GimpCanvasItem*
not GimpCanvasLine* etc. We keep them around as items, and their
constructors return items, and it's getting more code anyway when
porting away from pause/resume, so let's keep the casting minimal at
least.
2011-03-28 12:20:36 +02:00
Michael Natterer aa5d2f8082 app: port GimpBlendTool to pause()/resume()-less drawing
Instead, keep around the created GimpCanvasItems, and update them when
the blend coordiates change. Add setters to GipmCanvasLine and
GimpCanvasHandle which take care of calling begin_change() and
end_change() on the items around the change, so thes invalidate
properly.
2011-03-28 11:08:40 +02:00
Michael Natterer 1c0fe73da4 app: gimp_transform_tool_draw(): initialize the array of handles to NULL
And update/improve some comments in the entire file.
2011-03-28 10:16:00 +02:00
Michael Natterer 20bed2c609 app: add gimp_draw_tool_add_transform_preview() and use it 2011-03-28 02:18:00 +02:00
Michael Natterer fd80b90cf0 app: more minor GimpTransformTool cleanup 2011-03-28 02:10:33 +02:00
Michael Natterer 9f6b60c29d app: draw the perspective clone handles only when they can be used 2011-03-28 01:27:02 +02:00
Michael Natterer 4097825f3c app: some more code removal and cleanup in the transform classes 2011-03-28 01:20:47 +02:00
Michael Natterer dde7d6c0ee app: remove lots of junk from GimpPerspectiveCloneTool
This is an evil transform tool copy, so do the same changes here.
2011-03-28 01:20:47 +02:00
Michael Natterer babc2186c5 app: move the enum of indexes into the trans_info array to the .c files
and turn #defines from 0 to N into enums.
2011-03-28 00:50:46 +02:00
Michael Natterer 06e0183f96 app: right-align the perspective matrix labels with the right API
Use gtk_misc_set_alignment() instead of gtk_label_set_justify().
2011-03-28 00:39:39 +02:00
Michael Natterer d36887644d app: highlight the active transform tool handle 2011-03-28 00:13:14 +02:00
Michael Natterer 32f240fa4a app: prepare GimpTransformTool for highlighting the handles 2011-03-27 23:57:12 +02:00
Michael Natterer 18929f0865 app: lay out the GimpTransformOptions GUI more uniformly 2011-03-27 23:18:28 +02:00
Michael Natterer 8512675088 app: rename GimpTransformTool::recalc() to ::recalc_matrix() 2011-03-27 23:12:11 +02:00
Michael Natterer fb2ba3f289 app: remove display parameters from all virtual GimpTransformTool functions 2011-03-27 22:39:31 +02:00
Michael Natterer eb4f01039a app: add utility function gimp_transform_polygon_is_convex()
and use it in GimpTransformTool and GimpCanvasTransformPreview.
2011-03-27 22:04:33 +02:00
Michael Natterer caa8cdd4c1 app: add gimp_transform_options_show_preview()
which returns whether or not to show a transform preview. Also clean
up gimp_transform_tool_draw() a bit and add a stroke group for the
center handle.
2011-03-27 21:49:34 +02:00
Michael Natterer 8a09fd1f34 app: refactor GimpCanvasTransformPreview to not know GimpTransformTool any more
Instead, add drawable, transform, x1, y1 etc. properties. This is
cleaner and has the nice side effect of not leaving artifacts, because
the changed state of the transform tool doesn't affect the extents
calculation any longer.
2011-03-27 21:19:38 +02:00
Michael Natterer 6fe9430cab app: remove members "type" and "direction" from GimpTransformTool
and use the stuff from GimpTransformOptions directly. The copied
values were only there because of XOR drawing. Also did some more
cleanup and junk removal.
2011-03-27 17:38:49 +02:00
Michael Natterer 1d9f95ac98 app: code cleanup and streamlining in GimpCanvasTransformPreview 2011-03-27 16:54:21 +02:00
Michael Natterer 92aeeadecf app: remove unused macros from gimpdrawable-transform.c 2011-03-27 16:53:48 +02:00
Michael Natterer f09be52c1b app: turn the transform preview into a GimpCanvasItem
And remove all the complicated handling code entirely. This makes
GimpTransformTool a lot less complex. As a nice side effect, the
preview is now always 100% in sync with the grid and handles.
2011-03-27 16:40:41 +02:00
Michael Natterer cf28e07b64 app: move enum TransformAction from tools-enums.h to gimptransformtool.h
Moving it to tools-enums.h was a mistake, it's actually supposed to be
a private enum, accessible only by subclasses. And it's ugly.
2011-03-26 22:32:35 +01:00
Michael Natterer f632c4a8aa app: transform the transform grid lines on the fly
which is much less code than keeping the transformed lines around.
2011-03-26 22:14:07 +01:00
Michael Natterer 74f276fe4f app: make sure GimpTransformTool draws correctly after options changes 2011-03-26 21:53:06 +01:00
Michael Natterer deafe3d341 app: remove some entirely useless members from GimpTransformTool 2011-03-26 20:40:35 +01:00
Michael Natterer 6c524ea1db app: GimpSessionInfo: use brute force to position dialogs
Window managers are such a crap. So on top of all friendly hinting and
geometry setting, simply use gtk_window_move() whenever a session
managed GtkDialog is shown. It should be very hard to ignore that, but
of course the WM has the last word no matter how hard we try.

Note: this code should be more complex and the signal connection
should happen in GimpDialogFactory. Left it in GimpSessionInfo for now
until it got a bit of testing.
2011-03-26 19:47:44 +01:00
Michael Natterer c629cbeb89 app: some formatting cleanup in GimpDialogFactory 2011-03-26 19:32:59 +01:00
Michael Natterer 6606d10be1 app: gimp_transform_tool_transform(): don't unref NULL orig_tiles 2011-03-26 18:57:31 +01:00
Michael Natterer ae72971866 app: pass the orig_tiles and their offset to GimpTransformTool::transform()
instead of keeping them around as members. This is another artifact
from ancient times. Also get rid of some more legacy junk
code. Disable more code in GimpTransformToolUndo but keep it around
even though it does nothing at the moment.
2011-03-26 18:45:58 +01:00
Michael Natterer 88ee23aa29 app: move some of the new tile offset variables to local scopes 2011-03-26 18:37:34 +01:00
Michael Natterer 047d31fa68 app: gimp_drawable_transform: place new the tiles at offset_x, offset_y
and not at offset_y, offset_y (typo).
2011-03-26 16:50:38 +01:00
Michael Natterer bc8d5f84d6 app: remove the "offset" API from TileManager
It made the transform code hard to read and never belonged into the
tile manager anyway. It's a simple pixel buffer that should not know
about any position in an image. Instead, pass around the offsets of
tile managers explicitly, so everything is less obscure for the price
of having more parameters. This will also help replacing TileManagers
with GeglBuffers.
2011-03-26 08:30:15 +01:00
Mukund Sivaraman 41ab7d8e10 Remove broken include 2011-03-26 10:55:21 +05:30
Michael Natterer 6ec5190da2 app: remove unused files base/tile-manager-crop.[ch] 2011-03-26 00:10:19 +01:00
Michael Natterer 9424d42d36 pdb: apply recent fixes to the deprecated transform procedures
Don't transform the tiles of group layers, use the item transform API
instead. Go the same code path if there is no selection.
2011-03-25 22:35:46 +01:00
Michael Natterer 1a359a138d pdb: don't recommend deprecated replacement procedures for deprecated procedures 2011-03-25 22:03:14 +01:00
Michael Natterer 4d7dbe233d pdb: do the same optimization as in the transform tool in the commit below 2011-03-25 21:57:56 +01:00
Michael Natterer 3ed87015a6 app: if there is no selection, don't cut/transform/paste in the transform tool
instead, take the easy path that simply calls gimp_item_transform()
and does exactly the same, just less weird.
2011-03-25 21:50:58 +01:00
Michael Natterer bef6d5716a app: use a tool progress for GimpTransformTool 2011-03-25 21:35:19 +01:00
Michael Natterer f078a7416c app: remove some junk from GimpTransformTool
which was there for the purpose of transfomring the same buffer
multiple times (which would be nice but is broken and disabled for
ages). Also remove some junk that was there for unknown reasons, this
tool has a long history.
2011-03-25 21:32:08 +01:00
Michael Natterer a5549ece52 app: don't pause/resume the shell (and the active tool) around expose()
This was only there to make sure XOR drawing works, and is now
complete overhead since cairo drawing is done *in* expose, and not in
some hack around it.
2011-03-25 21:28:21 +01:00
Michael Natterer 6fdcc5f465 app: add a progress indicator for cage transform
- add a double "progress" property to GimpOperationCageTransform
  and update it every 20 rows
- connect to the notify::progress in the tool and display a tool
  progress
2011-03-25 15:41:53 +01:00
Michael Natterer 41b905baa8 app: make GimpTool implement the GimpProgress interface properly
and remove the previously added quick hack. Change the cage progress
code to standard progress code, and use the tool progress also in
blend.
2011-03-25 10:55:07 +01:00
Michael Natterer 8daee72518 app: various GimpCageTool fixes
- completely halt the tool before starting it
- bail out on options changes when the tool is not active
- initialy set the mode to CAGE_CHANGE
- indentation, formatting, various small cleanups
2011-03-25 10:18:56 +01:00
Michael Natterer e9dd30127a app: add an on-canvas progress facility to GimpTool
and use it in GimpCageTool.
2011-03-25 09:48:26 +01:00
Michael Natterer 927ce61ce1 app: use a data delete dialog in the tool options' preset delete menu 2011-03-24 21:54:40 +01:00
Michael Natterer 920d1a42e9 app: move the GimpData delete confirm dialog to its own files 2011-03-24 21:46:40 +01:00
Michael Natterer afa8a416c9 app: don't crash if GimpBrushTool has no dynamics to paint a brush outline
Also, set the BAD cursor when there isn't both brush and dynamics
available.
2011-03-24 20:21:57 +01:00
Michael Muré 8b87e633b3 gimp:cage-transform : iterate over y then x, to follow memory organisation 2011-03-24 19:57:47 +01:00
Michael Muré b6ef32f580 gimp:cage-transform : when pre-filling the buffer, do a check if the pixel is
inside of the bounding box before computing if it's inside the cage
2011-03-24 19:38:14 +01:00
Michael Muré 635d1ba37d gimp:cage-transform : fusion of two loop that didn't need to be seperate 2011-03-24 19:13:39 +01:00
Michael Muré b87e5c10b3 gimp:cagetransform : move a call to babl_format_n outside of loops 2011-03-24 19:00:45 +01:00
Mikael Magnusson 5a5f47d903 cagetool: move malloc out of inner loop 2011-03-24 17:02:57 +01:00
Michael Natterer b590804212 app: move GimpFilteredContainer's match logic to a utility function 2011-03-24 13:10:43 +01:00
Michael Natterer aec66d0c26 app: make GimpTaggedContainer properly memory manage the filter list
instead of leaking it. Also make the fact that tags in the list can
validly be NULL obvious by adding utility functions
gimp_tag_or_null_ref/unref().
2011-03-24 12:28:45 +01:00
Michael Natterer 7eda388fec app: fix possible GimpTagEntry crash by keeping the query idle ID around
Remove it in gimp_tag_query_dispose().
2011-03-24 09:55:32 +01:00
Michael Natterer ac7aab2376 app: forgot to remove member GimpTaggedContainer:src_container 2011-03-24 09:43:21 +01:00
Michael Natterer d64eae8c4e app: use gimp_tagged_has_tag() instead of imlementing the same
and some general cleanup.
2011-03-24 09:17:44 +01:00
Michael Natterer 39d2067058 app: add gimp_tagged_has_tag(), and some cleanup in GimpTagged 2011-03-24 09:17:39 +01:00