translate by 0.5,0.5 instead of adding 0.5 to all coordinates (we always
2007-11-05 Michael Natterer <mitch@gimp.org> * app/widgets/gimpcurveview.c (gimp_curve_view_expose): translate by 0.5,0.5 instead of adding 0.5 to all coordinates (we always want to draw on pixel centers here). Some cleanup. svn path=/trunk/; revision=24072
This commit is contained in:

committed by
Michael Natterer

parent
bd1db1a1c8
commit
36e1fa8d29
@ -1,3 +1,9 @@
|
|||||||
|
2007-11-05 Michael Natterer <mitch@gimp.org>
|
||||||
|
|
||||||
|
* app/widgets/gimpcurveview.c (gimp_curve_view_expose): translate
|
||||||
|
by 0.5,0.5 instead of adding 0.5 to all coordinates (we always
|
||||||
|
want to draw on pixel centers here). Some cleanup.
|
||||||
|
|
||||||
2007-11-05 Martin Nordholts <martinn@svn.gnome.org>
|
2007-11-05 Martin Nordholts <martinn@svn.gnome.org>
|
||||||
|
|
||||||
* app/tools/gimprectangletool.c (gimp_rectangle_tool_motion): Bail
|
* app/tools/gimprectangletool.c (gimp_rectangle_tool_motion): Bail
|
||||||
|
@ -131,7 +131,8 @@ static gboolean
|
|||||||
gimp_curve_view_expose (GtkWidget *widget,
|
gimp_curve_view_expose (GtkWidget *widget,
|
||||||
GdkEventExpose *event)
|
GdkEventExpose *event)
|
||||||
{
|
{
|
||||||
GimpCurveView *view = GIMP_CURVE_VIEW (widget);
|
GimpCurveView *view = GIMP_CURVE_VIEW (widget);
|
||||||
|
GtkStyle *style = widget->style;
|
||||||
cairo_t *cr;
|
cairo_t *cr;
|
||||||
gint border;
|
gint border;
|
||||||
gint width, height;
|
gint width, height;
|
||||||
@ -152,39 +153,40 @@ gimp_curve_view_expose (GtkWidget *widget,
|
|||||||
gdk_cairo_region (cr, event->region);
|
gdk_cairo_region (cr, event->region);
|
||||||
cairo_clip (cr);
|
cairo_clip (cr);
|
||||||
|
|
||||||
|
cairo_translate (cr, 0.5, 0.5);
|
||||||
cairo_set_line_width (cr, 1);
|
cairo_set_line_width (cr, 1);
|
||||||
|
|
||||||
gdk_cairo_set_source_color (cr, &widget->style->dark[GTK_STATE_NORMAL]);
|
gdk_cairo_set_source_color (cr, &style->dark[GTK_STATE_NORMAL]);
|
||||||
|
|
||||||
/* Draw the grid lines */
|
/* Draw the grid lines */
|
||||||
for (i = 1; i < 4; i++)
|
for (i = 1; i < 4; i++)
|
||||||
{
|
{
|
||||||
cairo_move_to (cr,
|
cairo_move_to (cr,
|
||||||
border + 0.5,
|
border,
|
||||||
border + 0.5 + i * (height / 4));
|
border + i * (height / 4));
|
||||||
cairo_line_to (cr,
|
cairo_line_to (cr,
|
||||||
border + 0.5 + width - 1,
|
border + width - 1,
|
||||||
border + 0.5 + i * (height / 4));
|
border + i * (height / 4));
|
||||||
|
|
||||||
cairo_move_to (cr,
|
cairo_move_to (cr,
|
||||||
border + 0.5 + i * (width / 4),
|
border + i * (width / 4),
|
||||||
border + 0.5);
|
border);
|
||||||
cairo_line_to (cr,
|
cairo_line_to (cr,
|
||||||
border + 0.5 + i * (width / 4),
|
border + i * (width / 4),
|
||||||
border + 0.5 + height - 1);
|
border + height - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
cairo_stroke (cr);
|
cairo_stroke (cr);
|
||||||
|
|
||||||
/* Draw the curve */
|
/* Draw the curve */
|
||||||
gdk_cairo_set_source_color (cr, &widget->style->text[GTK_STATE_NORMAL]);
|
gdk_cairo_set_source_color (cr, &style->text[GTK_STATE_NORMAL]);
|
||||||
|
|
||||||
x = 0;
|
x = 0;
|
||||||
y = 255 - view->curve->curve[x];
|
y = 255 - view->curve->curve[x];
|
||||||
|
|
||||||
cairo_move_to (cr,
|
cairo_move_to (cr,
|
||||||
border + 0.5 + (gdouble) width * x / 256.0,
|
border + (gdouble) width * x / 256.0,
|
||||||
border + 0.5 + (gdouble) height * y / 256.0);
|
border + (gdouble) height * y / 256.0);
|
||||||
|
|
||||||
for (i = 0; i < 256; i++)
|
for (i = 0; i < 256; i++)
|
||||||
{
|
{
|
||||||
@ -192,8 +194,8 @@ gimp_curve_view_expose (GtkWidget *widget,
|
|||||||
y = 255 - view->curve->curve[x];
|
y = 255 - view->curve->curve[x];
|
||||||
|
|
||||||
cairo_line_to (cr,
|
cairo_line_to (cr,
|
||||||
border + 0.5 + (gdouble) width * x / 256.0,
|
border + (gdouble) width * x / 256.0,
|
||||||
border + 0.5 + (gdouble) height * y / 256.0);
|
border + (gdouble) height * y / 256.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
cairo_stroke (cr);
|
cairo_stroke (cr);
|
||||||
@ -210,11 +212,11 @@ gimp_curve_view_expose (GtkWidget *widget,
|
|||||||
y = 255 - view->curve->points[i][1];
|
y = 255 - view->curve->points[i][1];
|
||||||
|
|
||||||
cairo_move_to (cr,
|
cairo_move_to (cr,
|
||||||
border + 0.5 + (gdouble) width * x / 256.0,
|
border + (gdouble) width * x / 256.0,
|
||||||
border + 0.5 + (gdouble) height * y / 256.0);
|
border + (gdouble) height * y / 256.0);
|
||||||
cairo_arc (cr,
|
cairo_arc (cr,
|
||||||
border + 0.5 + (gdouble) width * x / 256.0,
|
border + (gdouble) width * x / 256.0,
|
||||||
border + 0.5 + (gdouble) height * y / 256.0,
|
border + (gdouble) height * y / 256.0,
|
||||||
border,
|
border,
|
||||||
0, 2 * G_PI);
|
0, 2 * G_PI);
|
||||||
|
|
||||||
@ -222,17 +224,17 @@ gimp_curve_view_expose (GtkWidget *widget,
|
|||||||
{
|
{
|
||||||
cairo_fill (cr);
|
cairo_fill (cr);
|
||||||
|
|
||||||
gdk_cairo_set_source_color (cr, &widget->style->base[GTK_STATE_NORMAL]);
|
gdk_cairo_set_source_color (cr, &style->base[GTK_STATE_NORMAL]);
|
||||||
|
|
||||||
cairo_arc (cr,
|
cairo_arc (cr,
|
||||||
border + 0.5 + (gdouble) width * x / 256.0,
|
border + (gdouble) width * x / 256.0,
|
||||||
border + 0.5 + (gdouble) height * y / 256.0,
|
border + (gdouble) height * y / 256.0,
|
||||||
border - 2,
|
border - 2,
|
||||||
0, 2 * G_PI);
|
0, 2 * G_PI);
|
||||||
|
|
||||||
cairo_fill (cr);
|
cairo_fill (cr);
|
||||||
|
|
||||||
gdk_cairo_set_source_color (cr, &widget->style->text[GTK_STATE_NORMAL]);
|
gdk_cairo_set_source_color (cr, &style->text[GTK_STATE_NORMAL]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -243,17 +245,15 @@ gimp_curve_view_expose (GtkWidget *widget,
|
|||||||
{
|
{
|
||||||
gchar buf[32];
|
gchar buf[32];
|
||||||
|
|
||||||
gdk_cairo_set_source_color (cr, &widget->style->text[GTK_STATE_NORMAL]);
|
gdk_cairo_set_source_color (cr, &style->text[GTK_STATE_NORMAL]);
|
||||||
|
|
||||||
/* draw the color line */
|
/* draw the color line */
|
||||||
cairo_move_to (cr,
|
cairo_move_to (cr,
|
||||||
border + 0.5 +
|
border + ROUND ((gdouble) width * view->xpos / 256.0),
|
||||||
ROUND ((gdouble) width * view->xpos / 256.0),
|
border);
|
||||||
border + 0.5);
|
|
||||||
cairo_line_to (cr,
|
cairo_line_to (cr,
|
||||||
border + 0.5 +
|
border + ROUND ((gdouble) width * view->xpos / 256.0),
|
||||||
ROUND ((gdouble) width * view->xpos / 256.0),
|
border + height - 1);
|
||||||
border + 0.5 + height - 1);
|
|
||||||
cairo_stroke (cr);
|
cairo_stroke (cr);
|
||||||
|
|
||||||
/* and xpos indicator */
|
/* and xpos indicator */
|
||||||
@ -266,14 +266,14 @@ gimp_curve_view_expose (GtkWidget *widget,
|
|||||||
|
|
||||||
pango_layout_get_pixel_size (view->xpos_layout, &x, &y);
|
pango_layout_get_pixel_size (view->xpos_layout, &x, &y);
|
||||||
|
|
||||||
if ((view->xpos + border) < 127)
|
if (view->xpos < 127)
|
||||||
x = border + 4;
|
x = border;
|
||||||
else
|
else
|
||||||
x = -(x + 2);
|
x = -(x + border);
|
||||||
|
|
||||||
cairo_move_to (cr,
|
cairo_move_to (cr,
|
||||||
border + 0.5 + (gdouble) width * view->xpos / 256.0 + x,
|
border + (gdouble) width * view->xpos / 256.0 + x,
|
||||||
border + 0.5 + height - y - 2);
|
border + height - border - y);
|
||||||
pango_cairo_show_layout (cr, view->xpos_layout);
|
pango_cairo_show_layout (cr, view->xpos_layout);
|
||||||
cairo_fill (cr);
|
cairo_fill (cr);
|
||||||
}
|
}
|
||||||
@ -293,24 +293,24 @@ gimp_curve_view_expose (GtkWidget *widget,
|
|||||||
NULL, &view->cursor_rect);
|
NULL, &view->cursor_rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
x = border * 2 + 2;
|
x = border * 2;
|
||||||
y = border * 2 + 2;
|
y = border * 2;
|
||||||
w = view->cursor_rect.width + 4;
|
w = view->cursor_rect.width + 4;
|
||||||
h = view->cursor_rect.height + 4;
|
h = view->cursor_rect.height + 4;
|
||||||
|
|
||||||
gdk_cairo_set_source_color (cr, &widget->style->base[GTK_STATE_NORMAL]);
|
gdk_cairo_set_source_color (cr, &style->base[GTK_STATE_NORMAL]);
|
||||||
cairo_rectangle (cr, x + 0.5, y + 0.5, w + 1, h + 1);
|
cairo_rectangle (cr, x, y, w + 1, h + 1);
|
||||||
cairo_fill (cr);
|
cairo_fill (cr);
|
||||||
|
|
||||||
gdk_cairo_set_source_color (cr, &widget->style->text[GTK_STATE_NORMAL]);
|
gdk_cairo_set_source_color (cr, &style->text[GTK_STATE_NORMAL]);
|
||||||
cairo_rectangle (cr, x + 0.5, y + 0.5, w + 1, h + 1);
|
cairo_rectangle (cr, x, y, w + 1, h + 1);
|
||||||
cairo_stroke (cr);
|
cairo_stroke (cr);
|
||||||
|
|
||||||
g_snprintf (buf, sizeof (buf), "x:%3d y:%3d",
|
g_snprintf (buf, sizeof (buf), "x:%3d y:%3d",
|
||||||
view->cursor_x, 255 - view->cursor_y);
|
view->cursor_x, 255 - view->cursor_y);
|
||||||
pango_layout_set_text (view->cursor_layout, buf, -1);
|
pango_layout_set_text (view->cursor_layout, buf, -1);
|
||||||
|
|
||||||
cairo_move_to (cr, x + 2 + 0.5, y + 2 + 0.5);
|
cairo_move_to (cr, x + 2, y + 2);
|
||||||
pango_cairo_show_layout (cr, view->cursor_layout);
|
pango_cairo_show_layout (cr, view->cursor_layout);
|
||||||
cairo_fill (cr);
|
cairo_fill (cr);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user