Commit Graph

26 Commits

Author SHA1 Message Date
28e1a379e6 app: remove const qualifiers from all object parameters
They are unreliable because every type checking cast discards them,
they are useless anyway, visual clutter, added inconsistently, and
generally suck. Wanted to do this a long time ago, it was a bad idea
in the first place.
2016-05-19 23:54:14 +02:00
c6b6031f31 Bug 758049 - Please add canvas flipping
Enable flipping in the canvas rotate transform matrix, and add some
menu items to control it. Rename the "Rotate" menu to "Flip & Rotate".
2015-11-13 18:51:32 +01:00
37d589335f app: consolidate all transform API in gimpdisplayshell-transform.[ch]
Added complete API for zoom/unzoom (scale and scroll) and
rotate/unrotate, with the same set of functions as the existing
transform/untransform. Moved some special case functions to the
namespaces they belong.
2013-04-25 00:29:58 +02:00
b3a9a6a3e3 Bug 55367 - Rotated view of the canvas (view is rotated, not image contents)
First version of display rotation, inspired by gimp-painter.
The rotation always happens around the image's center.

The only "UI" for rotating is currently shift+middle-drag and
shift+space-drag. Control constrains the angle to 15 degrees
and is currently the only way to go back to "no rotation".
2013-04-20 15:11:01 +02:00
2c62644f94 app: BoundSeg -> GimpBoundSeg, boundary_foo() -> gimp_boundary_foo() 2012-05-02 17:46:02 +02:00
36cc10c4dc app: rename gimp_display_shell_[un]transform_coordiante() to _coords() 2011-02-20 16:29:20 +01:00
7bb58aedf9 app: make input GimpCoords const in gimpdisplayshell-transform.[ch] 2011-02-20 16:11:20 +01:00
dc39857238 app: add GimpSegment as replacement for GdkSegment 2010-10-15 12:37:36 +02:00
7db14ffca9 app: remove gimp_display_shell_transform_coords() 2010-09-26 23:09:23 +02:00
3b7999a218 app: remove gimp_display_shell_transform_points() 2010-09-26 23:06:35 +02:00
06da10bc08 app: change boundary drawing by tools to work like the selection
- GimpCanvasBoundary takes unsorted BoundSeg arrays now and uses
  gimp_display_shell_transform_boundary() and gimp_cairo_add_boundary().
- Nobody calls boundary_sort() any longer for the purpose of displaying
  a boundary.
- gimp_display_shell_transform_boundary() got offset parameters
  so it can transform things that are not in the image's coordinate
  system.
2010-09-26 22:41:04 +02:00
ddc63de6d6 app: remove "gboolean use_offsets" from gimpdisplayshell-transform.[ch] 2010-09-23 19:24:04 +02:00
cd192adf09 app: undo some of the previous refactorings and keep using GdkSegment
It's not going to be deprecated, so there is no harm in using it; get
rid of all the added _old() functions too.
2010-08-25 21:21:16 +02:00
3f6bb75129 app: pass transformed segments to gimp_display_shell_draw_layer_boundary()
and duplicate quite some code in the spirit of the previous commit
(rename stuff using GdkSegment to _old() and add new functions that
return arrays of BoundSegs, for the lack of a nicer struct). This is
all very ugly and will change.
2010-08-25 01:58:00 +02:00
3127d36216 app: rename gimp_display_shell_transform_segments()
to gimp_display_shell_transform_segments_old() as step one
of porting selection drawing to cairo.
2010-08-25 01:37:19 +02:00
d9b5207aa2 Change licence to GPLv3 (and to LGPLv3 for libgimp).
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
2009-01-17 22:28:01 +00:00
7865481ddf app/display/gimpdisplayshell-draw.[ch]
2008-08-10  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-draw.[ch]
	* app/display/gimpdisplayshell-render.[ch]
	* app/display/gimpdisplayshell-transform.[ch]
	* app/display/gimpdisplayshell-appearance.[ch]: Sprinkle as many
	const qualifiers we can without any implementation changes.

svn path=/trunk/; revision=26477
2008-08-10 10:09:03 +00:00
a384cca5f3 app/display/gimpdisplayshell-transform.[ch]
2008-02-26  Michael Natterer  <mitch@gimp.org>

	* app/display/gimpdisplayshell-transform.[ch]
	(gimp_display_shell_transform_points)
	* app/tools/gimpdrawtool.[ch] (gimp_draw_tool_draw_lines): take
	arrays of GimpVector2 instead of arrays of gdouble to represent
	the input points.

	* app/display/gimpdisplayshell-draw.c
	* app/tools/gimppolygonselecttool.c
	* app/tools/gimpfreeselecttool.c: don't cast the GimpVector2 arrays
	to double arrays when passing them to above functions.

	* app/tools/gimpiscissorstool.c: create a temporary GimpVector2
	array instead of a temporary gdouble array.


svn path=/trunk/; revision=24979
2008-02-26 17:30:33 +00:00
41237259c9 In all files, changed the standard copyright notice to say "GIMP - The GNU
2006-12-09  Sven Neumann  <sven@gimp.org>

        * In all files, changed the standard copyright notice to say
        "GIMP - The GNU Image Manipulation Program".
2006-12-09 21:33:38 +00:00
2b8ea21f36 added new function gimp_display_shell_transform_segments().
2006-08-09  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplayshell-transform.[ch]: added new function
	gimp_display_shell_transform_segments().

	* app/display/gimpdisplayshell-selection.c (selection_transform_segs)
	* app/tools/gimpregionselecttool.c
	(gimp_region_select_tool_calculate): use the new function instead
	of looping over the segments.
2006-08-09 14:05:00 +00:00
1c33f14bcf renamed transform_coords() to transform_coordinate(); same for the
2006-08-09  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplayshell-transform.[ch]: renamed
	transform_coords() to transform_coordinate(); same for the
	untransform variant. Added new functions transform_points() and
	transform_coords() that work on arrays.

	* app/display/gimpdisplayshell-autoscroll.c
	* app/display/gimpdisplayshell-callbacks.c: changed accordingly.

	* app/tools/gimpdrawtool.c (gimp_draw_tool_draw_lines)
	(gimp_draw_tool_draw_strokes): use the new transform functions.
2006-08-09 13:15:49 +00:00
9127a54dec Fixed several off-by-one problems in display:
2004-03-20  Pedro Gimeno  <pggimeno@wanadoo.es>

	Fixed several off-by-one problems in display:

	* app/display/gimpdisplayshell.h (PROJ_ROUND): New macro to apply
	to a float the same rounding method as the one used when rendering.
	(SCALEX, SCALEY): Use PROJ_ROUND instead of truncating.

	* app/display/gimpdisplayshell-transform.c
	(gimp_display_shell_transform_xy): Accept gdouble image coordinates
	even if the returned screen coordinates are integer. Use PROJ_ROUND
	instead of (gint) to apply proper rounding. Fixes bug #137566.

	* app/display/gimpdisplayshell-transform.h
	(gimp_display_shell_transform_xy): changed accordingly.

	* app/display/gimpdisplayshell-draw.c
	* app/tools/gimpdrawtool.c: make sure everywhere that PROJ_ROUND
	is used either directly or through gimp_display_shell_transform_xy,
	instead of using arbitrary rounding methods.
2004-03-20 21:59:41 +00:00
0af39061b6 Fixed bug #78732 (don't paste off screen):
2004-01-15  Michael Natterer  <mitch@gimp.org>

	Fixed bug #78732 (don't paste off screen):

	* app/display/gimpdisplayshell-transform.[ch]: added new function
	gimp_display_shell_untransform_viewport() which returns the
	visible rectangle of the image in image coordinates.

	* app/core/gimp-edit.[ch] (gimp_edit_paste): added viewport
	parameters and changed positioning of the pasted layer as follows:

	- if there is a selection, center on the selection (just as before).
	- if there is no viewport, center on the active drawable.
	- if the viewport intersects with the active drawable, center
	  on the intersection.
	- if the viewport does *not* intersect with the active drawable,
	  center on the active drawable (off-screen, but better than pasting
	  something that will be invisible due to floating selection clipping).
	- if there is no active drawable, center on the viewport.
	- if there is no active drawable and no viewport, center on the image.

	* app/widgets/gimpbufferview.c (gimp_buffer_view_paste_clicked)
	(gimp_buffer_view_paste_into_clicked)
	* app/display/gimpdisplayshell-dnd.c (gimp_display_shell_drop_buffer)
	* app/gui/edit-commands.c (edit_paste_cmd_callback)
	(edit_paste_into_cmd_callback): ask the shell for the viewport
	and pass it to gimp_edit_paste().

	* app/display/gimpdisplayshell-dnd.c
	(gimp_display_shell_drop_drawable): center the created layer on
	the viewport.

	* app/tools/gimpmovetool.c (gimp_move_tool_button_release): use
	gimp_display_shell_untransform_viewport() (its code was taken from
	here).

	* tools/pdbgen/pdb/edit.pdb: pass "no viewport" to gimp_edit_paste().

	* app/pdb/edit_cmds.c: regenerated.
2004-01-15 14:36:43 +00:00
84e73fa4d1 removed gimp_display_shell_transform_boundary() again...
2003-07-10  Michael Natterer  <mitch@gimp.org>

	* app/display/gimpdisplayshell-transform.[ch]: removed
	gimp_display_shell_transform_boundary() again...

	* app/tools/gimpdrawtool.[ch]: ...and added as
	gimp_draw_tool_draw_boundary(). Removed the GimpDrawToolState enum
	and the "draw_state" member since they were redundant. Cleanup.

	* app/tools/gimpeditselectiontool.c: changed accordingly.

	* app/tools/gimppainttool.[ch]: added a brush preview so we
	finally see where we will paint. Fixes bug #32498. Cleanup.

	* app/tools/tool_manager.c: also look at draw_tool->gdisp, not
	only at tool->gdisp when deciding whether the active tool has to
	be suspended/resumed/halted. Fixes a couple of fnords with the
	line preview and the new brush preview.

	* app/tools/gimpcolortool.c: minor cleanup.
2003-07-10 16:01:45 +00:00
b14c364490 added new function gimp_display_shell_transform_boundary() which takes an
2003-07-09  Michael Natterer  <mitch@gimp.org>

	* app/display/gimpdisplayshell-transform.[ch]: added new function
	gimp_display_shell_transform_boundary() which takes an array of
	BoundSegs and returns an array of GdkSegments.

	* app/tools/gimpeditselectiontool.c: use it.
2003-07-09 22:40:27 +00:00
ec6c98656e bumped the version number to 1.3.12.
2003-01-03  Sven Neumann  <sven@gimp.org>

	* configure.in: bumped the version number to 1.3.12.

	* app/display/Makefile.am
	* app/display/gimpdisplayshell-cursor.[ch]
	* app/display/gimpdisplayshell-title.[ch]
	* app/display/gimpdisplayshell-transform.[ch]: new files with code
	that used to live in gimpdisplayshell.c.

	* app/display/gimpdisplay-foreach.c
	* app/display/gimpdisplay.c
	* app/display/gimpdisplayshell-callbacks.c
	* app/display/gimpdisplayshell-handlers.c
	* app/display/gimpdisplayshell-selection.c
	* app/display/gimpdisplayshell.[ch]
	* app/tools/gimpbezierselecttool.c
	* app/tools/gimpcroptool.c
	* app/tools/gimpdrawtool.c
	* app/tools/gimpeditselectiontool.c
	* app/tools/gimpfuzzyselecttool.c
	* app/tools/gimpmovetool.c
	* app/tools/gimptool.c: changed accordingly.
2003-01-03 18:01:30 +00:00