mirror of https://github.com/GNOME/gimp.git
added new function gimp_preview_area_set_offsets().
2004-09-01 Sven Neumann <sven@gimp.org> * libgimpwidgets/gimppreviewarea.[ch]: added new function gimp_preview_area_set_offsets(). * libgimpwidgets/gimppreview.c: use the new function to let the checkerboard scroll with the preview.
This commit is contained in:
parent
6f7adcf985
commit
3a0e874522
|
@ -1,3 +1,11 @@
|
|||
2004-09-01 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* libgimpwidgets/gimppreviewarea.[ch]: added new function
|
||||
gimp_preview_area_set_offsets().
|
||||
|
||||
* libgimpwidgets/gimppreview.c: use the new function to let the
|
||||
checkerboard scroll with the preview.
|
||||
|
||||
2004-09-01 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* libgimpwidgets/gimppreview.[ch]: delay the emission of the
|
||||
|
|
|
@ -781,6 +781,7 @@ GimpPreviewArea
|
|||
gimp_preview_area_new
|
||||
gimp_preview_area_draw
|
||||
gimp_preview_area_fill
|
||||
gimp_preview_area_set_offsets
|
||||
gimp_preview_area_set_cmap
|
||||
<SUBSECTION Standard>
|
||||
GimpPreviewAreaClass
|
||||
|
|
|
@ -60,6 +60,16 @@ GimpPreviewArea
|
|||
@blue:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gimp_preview_area_set_offsets ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@area:
|
||||
@x:
|
||||
@y:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gimp_preview_area_set_cmap ##### -->
|
||||
<para>
|
||||
|
||||
|
|
|
@ -371,6 +371,9 @@ gimp_preview_h_scroll (GtkAdjustment *hadj,
|
|||
{
|
||||
preview->xoff = hadj->value;
|
||||
|
||||
gimp_preview_area_set_offsets (GIMP_PREVIEW_AREA (preview->area),
|
||||
preview->xoff, preview->yoff);
|
||||
|
||||
if (! preview->in_drag)
|
||||
gimp_preview_draw (preview);
|
||||
|
||||
|
@ -383,6 +386,9 @@ gimp_preview_v_scroll (GtkAdjustment *vadj,
|
|||
{
|
||||
preview->yoff = vadj->value;
|
||||
|
||||
gimp_preview_area_set_offsets (GIMP_PREVIEW_AREA (preview->area),
|
||||
preview->xoff, preview->yoff);
|
||||
|
||||
if (! preview->in_drag)
|
||||
gimp_preview_draw (preview);
|
||||
|
||||
|
@ -434,11 +440,13 @@ gimp_preview_area_event (GtkWidget *area,
|
|||
yoff = CLAMP (preview->drag_yoff - dy,
|
||||
0, preview->ymax - preview->ymin - preview->height);
|
||||
|
||||
gtk_adjustment_set_value (GTK_ADJUSTMENT (preview->hadj), xoff);
|
||||
gtk_adjustment_set_value (GTK_ADJUSTMENT (preview->vadj), yoff);
|
||||
if (preview->xoff != xoff || preview->yoff != yoff)
|
||||
{
|
||||
gtk_adjustment_set_value (GTK_ADJUSTMENT (preview->hadj), xoff);
|
||||
gtk_adjustment_set_value (GTK_ADJUSTMENT (preview->vadj), yoff);
|
||||
|
||||
gimp_preview_draw (preview);
|
||||
gimp_preview_invalidate (preview);
|
||||
gimp_preview_draw (preview);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -30,9 +30,10 @@
|
|||
#include "gimppreviewarea.h"
|
||||
|
||||
|
||||
#define CHECK_COLOR(row,col) \
|
||||
((((row) & GIMP_CHECK_SIZE) ^ ((col) & GIMP_CHECK_SIZE)) ? \
|
||||
(GIMP_CHECK_LIGHT * 255) : \
|
||||
#define CHECK_COLOR(area, row, col) \
|
||||
(((((area)->offset_x + (row)) & GIMP_CHECK_SIZE) ^ \
|
||||
(((area)->offset_y + (col)) & GIMP_CHECK_SIZE)) ? \
|
||||
(GIMP_CHECK_LIGHT * 255) : \
|
||||
(GIMP_CHECK_DARK * 255))
|
||||
|
||||
|
||||
|
@ -97,8 +98,8 @@ gimp_preview_area_init (GimpPreviewArea *area)
|
|||
{
|
||||
area->buf = NULL;
|
||||
area->cmap = NULL;
|
||||
area->dither_x = 0;
|
||||
area->dither_y = 0;
|
||||
area->offset_x = 0;
|
||||
area->offset_y = 0;
|
||||
area->width = 0;
|
||||
area->height = 0;
|
||||
area->rowstride = 0;
|
||||
|
@ -173,8 +174,8 @@ gimp_preview_area_expose (GtkWidget *widget,
|
|||
GDK_RGB_DITHER_MAX,
|
||||
buf,
|
||||
area->rowstride,
|
||||
area->dither_x - event->area.x,
|
||||
area->dither_y - event->area.y);
|
||||
area->offset_x - event->area.x,
|
||||
area->offset_y - event->area.y);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -310,7 +311,7 @@ gimp_preview_area_draw (GimpPreviewArea *area,
|
|||
switch (s[3])
|
||||
{
|
||||
case 0:
|
||||
d[0] = d[1] = d[2] = CHECK_COLOR (row, col);
|
||||
d[0] = d[1] = d[2] = CHECK_COLOR (area, row, col);
|
||||
break;
|
||||
|
||||
case 255:
|
||||
|
@ -322,7 +323,7 @@ gimp_preview_area_draw (GimpPreviewArea *area,
|
|||
default:
|
||||
{
|
||||
register guint alpha = s[3] + 1;
|
||||
register guint check = CHECK_COLOR (row, col);
|
||||
register guint check = CHECK_COLOR (area, row, col);
|
||||
|
||||
d[0] = ((check << 8) + (s[0] - check) * alpha) >> 8;
|
||||
d[1] = ((check << 8) + (s[1] - check) * alpha) >> 8;
|
||||
|
@ -364,7 +365,7 @@ gimp_preview_area_draw (GimpPreviewArea *area,
|
|||
switch (s[1])
|
||||
{
|
||||
case 0:
|
||||
d[0] = d[1] = d[2] = CHECK_COLOR (row, col);
|
||||
d[0] = d[1] = d[2] = CHECK_COLOR (area, row, col);
|
||||
break;
|
||||
|
||||
case 255:
|
||||
|
@ -374,7 +375,7 @@ gimp_preview_area_draw (GimpPreviewArea *area,
|
|||
default:
|
||||
{
|
||||
register guint alpha = s[1] + 1;
|
||||
register guint check = CHECK_COLOR (row, col);
|
||||
register guint check = CHECK_COLOR (area, row, col);
|
||||
|
||||
d[0] = d[1] = d[2] =
|
||||
((check << 8) + (s[0] - check) * alpha) >> 8;
|
||||
|
@ -423,7 +424,7 @@ gimp_preview_area_draw (GimpPreviewArea *area,
|
|||
switch (s[1])
|
||||
{
|
||||
case 0:
|
||||
d[0] = d[1] = d[2] = CHECK_COLOR (row, col);
|
||||
d[0] = d[1] = d[2] = CHECK_COLOR (area, row, col);
|
||||
break;
|
||||
|
||||
case 255:
|
||||
|
@ -435,7 +436,7 @@ gimp_preview_area_draw (GimpPreviewArea *area,
|
|||
default:
|
||||
{
|
||||
register guint alpha = s[3] + 1;
|
||||
register guint check = CHECK_COLOR (row, col);
|
||||
register guint check = CHECK_COLOR (area, row, col);
|
||||
|
||||
d[0] = ((check << 8) + (cmap[0] - check) * alpha) >> 8;
|
||||
d[1] = ((check << 8) + (cmap[1] - check) * alpha) >> 8;
|
||||
|
@ -535,6 +536,27 @@ gimp_preview_area_fill (GimpPreviewArea *area,
|
|||
gtk_widget_queue_draw_area (GTK_WIDGET (area), x, y, width, height);
|
||||
}
|
||||
|
||||
/**
|
||||
* gimp_preview_area_set_offsets:
|
||||
* @area: a #GimpPreviewArea
|
||||
* @x: horizontal offset
|
||||
* @y: vertical offset
|
||||
*
|
||||
* Sets the offsets of the previewed area. This information is used
|
||||
* when drawing the checkerboard and to determine the dither offsets.
|
||||
*
|
||||
* Since: GIMP 2.2
|
||||
**/
|
||||
void
|
||||
gimp_preview_area_set_offsets (GimpPreviewArea *area,
|
||||
gint x,
|
||||
gint y)
|
||||
{
|
||||
g_return_if_fail (GIMP_IS_PREVIEW_AREA (area));
|
||||
|
||||
area->offset_x = x;
|
||||
area->offset_y = y;
|
||||
}
|
||||
|
||||
/**
|
||||
* gimp_preview_area_set_cmap:
|
||||
|
|
|
@ -40,8 +40,8 @@ struct _GimpPreviewArea
|
|||
gint width;
|
||||
gint height;
|
||||
gint rowstride;
|
||||
gint dither_x;
|
||||
gint dither_y;
|
||||
gint offset_x;
|
||||
gint offset_y;
|
||||
guchar *buf;
|
||||
guchar *cmap;
|
||||
};
|
||||
|
@ -52,31 +52,32 @@ struct _GimpPreviewAreaClass
|
|||
};
|
||||
|
||||
|
||||
GType gimp_preview_area_get_type (void) G_GNUC_CONST;
|
||||
GType gimp_preview_area_get_type (void) G_GNUC_CONST;
|
||||
|
||||
GtkWidget * gimp_preview_area_new (void);
|
||||
GtkWidget * gimp_preview_area_new (void);
|
||||
|
||||
void gimp_preview_area_draw (GimpPreviewArea *area,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height,
|
||||
GimpImageType type,
|
||||
const guchar *buf,
|
||||
gint rowstride);
|
||||
|
||||
void gimp_preview_area_fill (GimpPreviewArea *area,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height,
|
||||
guchar red,
|
||||
guchar green,
|
||||
guchar blue);
|
||||
|
||||
void gimp_preview_area_set_cmap (GimpPreviewArea *area,
|
||||
const guchar *cmap,
|
||||
gint num_colors);
|
||||
void gimp_preview_area_draw (GimpPreviewArea *area,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height,
|
||||
GimpImageType type,
|
||||
const guchar *buf,
|
||||
gint rowstride);
|
||||
void gimp_preview_area_fill (GimpPreviewArea *area,
|
||||
gint x,
|
||||
gint y,
|
||||
gint width,
|
||||
gint height,
|
||||
guchar red,
|
||||
guchar green,
|
||||
guchar blue);
|
||||
void gimp_preview_area_set_offsets (GimpPreviewArea *area,
|
||||
gint x,
|
||||
gint y);
|
||||
void gimp_preview_area_set_cmap (GimpPreviewArea *area,
|
||||
const guchar *cmap,
|
||||
gint num_colors);
|
||||
|
||||
|
||||
#endif /* __GIMP_PREVIEW_AREA_H__ */
|
||||
|
|
Loading…
Reference in New Issue