Int casting results to truncation. First this is a bit counter-intuitive
as we usually expect rounding to the nearest integer. Moreover with the
new GUI updates on curve and curve tool, we end up with a mismatch as
the new Input/Output spin buttons where indeed showing rounded integers
whereas the coordinate indicator was showing truncated integers.
Make all these show same rounded value.
Allow setting the type of GimpCurve control-points to either SMOOTH
or CORNER. Smooth points produce a smooth curve, while corner
points produce a sharp curve (previously, all points were smooth).
In GimpCureView, display corner points using a diamond shape,
instead of a circle.
In the Curves tool, allow changing the curve's point types.
(cherry picked from commit 33e47c85a2)
In GimpCurve, replace the use of a fixed-length control-point array
with a dynamically-sized array. Adapt GimpCurve's interface, and
the rest of the code.
In addition to simplifying the code, this fixes a bug where the
curve object could be broken by moving the mouse too fast (yep...),
and allows more accurate point placement, both in the GUI editor,
and through canvas interaction in the Curves tool (see issue #814).
(cherry picked from commit b6d829a1b2)
In GimpCurveView, when holding down Ctrl while adding/dragging a
point, snap the y-coordinate to the original curve (at the start of
the drag). This is particularly useful for adding points along the
curve, without changing their y-coordinate.
Likewise, have the coordinate indicator show the snapped
coordinate.
(cherry picked from commit 8357c9ad64)
In GimpCurveView, when dragging an existing curve point, don't
immediately move the point to the cursor position uppon button
press, but rather move it relative to its current position as the
cursor moves. This allows selecting a point without moving it, and
adjusting its position more easily.
Additionally, when the cursor hovers above a point, or when
dargging a point, have the coordinate indicator show the point's
position, rather than the cursor's.
(cherry picked from commit 0b9737a3ed)
More than 2000 lines of code less in app/, instead of
if (instance->member)
{
g_object_unref/g_free/g_whatever (instance->member);
instance->member = NULL;
}
we now simply use
g_clear_object/pointer (&instance->member);
Don't hardcode "black" for the "Value" curve in GimpCurvesTool.
Instead, pass a NULL color to GimpCurveView, which is then interpreted
as the theme's text color (the curve's background is the theme's text
background color). We still hardcode pure red, green and blue for the
other curves.
and redo how the curves tool sets its curves in order to support this
without code duplication. Also change the color of the yellow curve in
the dynamics output editor to orange because yellow is hardly visible.
by letting the histogram view always draw the background and the outer
borders. Also fix a lot of off-by-one problems in the curve view which
occur due to the 0.5,0.5 offset of cairo line drawing.
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
2008-05-14 Sven Neumann <sven@gimp.org>
* app/widgets/gimpcurveview.c (gimp_curve_view_motion_notify):
fixed use of uninitialized value.
svn path=/trunk/; revision=25668
2008-05-11 Sven Neumann <sven@gimp.org>
* app/core/gimpcurve.[ch]: renamed gimp_curve_map() to
gimp_curve_map_value(). Added new function
gimp_curve_map_pixels()
which will allow for better optimization.
* app/gegl/gimpoperationcurves.c
(gimp_operation_curves_process):
use gimp_curve_map_pixels().
* app/tools/gimpcurvestool.c
* app/widgets/gimpcurveview.c: follow API change.
svn path=/trunk/; revision=25641
2008-02-28 Michael Natterer <mitch@gimp.org>
* app/core/gimpcurve.[ch]: get rid of fixed-size arrays and
allocate the points and curve arrays dynamically. Added "n-points"
and "n-samples" CONSTRUCT_ONLY properties. Renamed member "curve"
to "samples". Lots of code changes to work with dynamic limits
rather than 17 and 256.
* app/core/gimpdrawable-curves.c
* app/gegl/gimpcurvesconfig.c
* app/tools/gimpcurvestool.c
* app/widgets/gimpcurveview.c: changed accordingly.
svn path=/trunk/; revision=24995
2008-02-11 Michael Natterer <mitch@gimp.org>
* app/core/gimpcurve.[ch]: add gimp_curve_get_point().
* app/gegl/gimpcurvesconfig.c
* app/widgets/gimpcurveview.c: use it instead of accessing the
points array directly.
svn path=/trunk/; revision=24857
2008-02-09 Michael Natterer <mitch@gimp.org>
* app/core/gimpcurve.[ch]: keep the anchor points as an array of
GimpVector2 instead of plain doubles.
* app/gegl/gimpcurvesconfig.c
* app/widgets/gimpcurveview.c: changed accordingly.
svn path=/trunk/; revision=24842
2008-02-09 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpcurveview.[ch]: port internal cursor stuff to
gdouble, fix off-by-one in curve drawing, fix drawing artefact in
handle drawing by starting drawing on the handle's outline and not
its center.
svn path=/trunk/; revision=24839
2008-02-09 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpcurveview.[ch]: port the "xpos" API
to [0.0..1.0] doubles too.
* app/tools/gimpcurvestool.[ch]: rename "col_value" member to
"picked_color" and use gdouble instead of gint. Also use GimpCurve
API to map the values instead of accessing the curve directly.
Fixes setting curve anchor points by color picking.
svn path=/trunk/; revision=24838