libgimp/color_display.h add bpl param for convert func

* libgimp/color_display.h
* app/gdisplay.c: add bpl param for convert func

* gdisplay_color.c: guard against head and tail cases in reorders

* app/gdisplay_color_ui.c: expose_full on all actions, so there is
immediate feedback. Check for no selection and do nothing on actions

* app/path_tool.c: #warning is not portable; change to /* XXX: */

* modules/cdisplay_gamma.c: make it so it actually works properly

-Yosh
This commit is contained in:
Manish Singh 1999-10-05 02:16:59 +00:00
parent 140f13e1d8
commit a3ef836860
14 changed files with 207 additions and 73 deletions

View File

@ -1,3 +1,17 @@
Mon Oct 4 19:13:39 PDT 1999 Manish Singh <yosh@gimp.org>
* libgimp/color_display.h
* app/gdisplay.c: add bpl param for convert func
* gdisplay_color.c: guard against head and tail cases in reorders
* app/gdisplay_color_ui.c: expose_full on all actions, so there is
immediate feedback. Check for no selection and do nothing on actions
* app/path_tool.c: #warning is not portable; change to /* XXX: */
* modules/cdisplay_gamma.c: make it so it actually works properly
Mon Oct 4 21:09:20 1999 Tim Janik <timj@gtk.org>
* plug-ins/common/csource.c: minor cleanups. fixed up alpha channel

View File

@ -1261,10 +1261,11 @@ gdisplay_display_area (GDisplay *gdisp,
int i, j;
GList *list;
guchar *buf;
int bpp;
int bpp, bpl;
buf = gximage_get_data ();
bpp = gximage_get_bpp ();
bpl = gximage_get_bpl ();
sx = SCALEX (gdisp, gdisp->gimage->width);
sy = SCALEY (gdisp, gdisp->gimage->height);
@ -1347,7 +1348,7 @@ gdisplay_display_area (GDisplay *gdisp,
while (list)
{
ColorDisplayNode *node = (ColorDisplayNode *) list->data;
node->cd_convert (node->cd_ID, buf, dx, dy, bpp);
node->cd_convert (node->cd_ID, buf, dx, dy, bpp, bpl);
list = list->next;
}

View File

@ -1261,10 +1261,11 @@ gdisplay_display_area (GDisplay *gdisp,
int i, j;
GList *list;
guchar *buf;
int bpp;
int bpp, bpl;
buf = gximage_get_data ();
bpp = gximage_get_bpp ();
bpl = gximage_get_bpl ();
sx = SCALEX (gdisp, gdisp->gimage->width);
sy = SCALEY (gdisp, gdisp->gimage->height);
@ -1347,7 +1348,7 @@ gdisplay_display_area (GDisplay *gdisp,
while (list)
{
ColorDisplayNode *node = (ColorDisplayNode *) list->data;
node->cd_convert (node->cd_ID, buf, dx, dy, bpp);
node->cd_convert (node->cd_ID, buf, dx, dy, bpp, bpl);
list = list->next;
}

View File

@ -43,7 +43,7 @@ struct _ColorDisplayDialog
GDisplay *gdisp;
};
static ColorDisplayDialog cdd = { NULL, NULL, NULL, 0, 0, FALSE, NULL, NULL };
static ColorDisplayDialog cdd = { NULL, NULL, NULL, -1, -1, FALSE, NULL, NULL };
typedef void (*ButtonCallback) (GtkWidget *, gpointer);
@ -202,7 +202,8 @@ color_display_ok_callback (GtkWidget *widget,
g_list_free (cdd.old_nodes);
}
gdisplays_flush ();
gdisplay_expose_full (cdd.gdisp);
gdisplay_flush (cdd.gdisp);
}
static void
@ -227,7 +228,8 @@ color_display_cancel_callback (GtkWidget *widget,
}
}
gdisplays_flush ();
gdisplay_expose_full (cdd.gdisp);
gdisplay_flush (cdd.gdisp);
}
static void
@ -238,8 +240,14 @@ color_display_add_callback (GtkWidget *widget,
ColorDisplayNode *node;
gint row;
if (cdd.src_row < 0)
return;
gtk_clist_get_text (GTK_CLIST (cdd.src), cdd.src_row, 0, &name);
if (!name)
return;
cdd.modified = TRUE;
node = gdisplay_color_attach (cdd.gdisp, name);
@ -247,7 +255,8 @@ color_display_add_callback (GtkWidget *widget,
row = gtk_clist_append (GTK_CLIST (cdd.dest), &name);
gtk_clist_set_row_data (GTK_CLIST (cdd.dest), row, node);
gdisplays_flush ();
gdisplay_expose_full (cdd.gdisp);
gdisplay_flush (cdd.gdisp);
}
static void
@ -255,6 +264,9 @@ color_display_remove_callback (GtkWidget *widget,
gpointer data)
{
ColorDisplayNode *node;
if (cdd.dest_row < 0)
return;
node = (ColorDisplayNode *) gtk_clist_get_row_data (GTK_CLIST (cdd.dest),
cdd.dest_row);
@ -268,7 +280,8 @@ color_display_remove_callback (GtkWidget *widget,
else
gdisplay_color_detach_destroy (cdd.gdisp, node);
gdisplays_flush ();
gdisplay_expose_full (cdd.gdisp);
gdisplay_flush (cdd.gdisp);
}
static void
@ -277,6 +290,9 @@ color_display_up_callback (GtkWidget *widget,
{
ColorDisplayNode *node;
if (cdd.dest_row < 0)
return;
node = (ColorDisplayNode *) gtk_clist_get_row_data (GTK_CLIST (cdd.dest),
cdd.dest_row);
@ -285,7 +301,8 @@ color_display_up_callback (GtkWidget *widget,
gdisplay_color_reorder_up (cdd.gdisp, node);
cdd.modified = TRUE;
gdisplays_flush ();
gdisplay_expose_full (cdd.gdisp);
gdisplay_flush (cdd.gdisp);
}
static void
@ -294,15 +311,18 @@ color_display_down_callback (GtkWidget *widget,
{
ColorDisplayNode *node;
if (cdd.dest_row < 0)
return;
node = (ColorDisplayNode *) gtk_clist_get_row_data (GTK_CLIST (cdd.dest),
cdd.dest_row);
gtk_clist_row_move (GTK_CLIST (cdd.dest), cdd.dest_row, cdd.dest_row + 1);
gdisplay_color_reorder_down (cdd.gdisp, node);
cdd.modified = TRUE;
gdisplays_flush ();
gdisplay_expose_full (cdd.gdisp);
gdisplay_flush (cdd.gdisp);
}
static void
@ -331,6 +351,12 @@ gdisplay_color_ui (GDisplay *gdisp)
cdd.gdisp = gdisp;
cdd.src_row = -1;
cdd.dest_row = -1;
/* gtk_clist_set_selectable (GTK_CLIST (cdd.src), 0, TRUE);
gtk_clist_set_selectable (GTK_CLIST (cdd.dest), 0, TRUE); */
gtk_widget_show (cdd.shell);
}

View File

@ -242,8 +242,11 @@ gdisplay_color_reorder_up (GDisplay *gdisp,
node_list = g_list_find (gdisp->cd_list, node);
node_list->data = node_list->prev->data;
node_list->prev->data = node;
if (node_list->prev)
{
node_list->data = node_list->prev->data;
node_list->prev->data = node;
}
}
void
@ -254,8 +257,11 @@ gdisplay_color_reorder_down (GDisplay *gdisp,
node_list = g_list_find (gdisp->cd_list, node);
node_list->data = node_list->next->data;
node_list->next->data = node;
if (node_list->next)
{
node_list->data = node_list->next->data;
node_list->next->data = node;
}
}
static gint

View File

@ -1261,10 +1261,11 @@ gdisplay_display_area (GDisplay *gdisp,
int i, j;
GList *list;
guchar *buf;
int bpp;
int bpp, bpl;
buf = gximage_get_data ();
bpp = gximage_get_bpp ();
bpl = gximage_get_bpl ();
sx = SCALEX (gdisp, gdisp->gimage->width);
sy = SCALEY (gdisp, gdisp->gimage->height);
@ -1347,7 +1348,7 @@ gdisplay_display_area (GDisplay *gdisp,
while (list)
{
ColorDisplayNode *node = (ColorDisplayNode *) list->data;
node->cd_convert (node->cd_ID, buf, dx, dy, bpp);
node->cd_convert (node->cd_ID, buf, dx, dy, bpp, bpl);
list = list->next;
}

View File

@ -242,8 +242,11 @@ gdisplay_color_reorder_up (GDisplay *gdisp,
node_list = g_list_find (gdisp->cd_list, node);
node_list->data = node_list->prev->data;
node_list->prev->data = node;
if (node_list->prev)
{
node_list->data = node_list->prev->data;
node_list->prev->data = node;
}
}
void
@ -254,8 +257,11 @@ gdisplay_color_reorder_down (GDisplay *gdisp,
node_list = g_list_find (gdisp->cd_list, node);
node_list->data = node_list->next->data;
node_list->next->data = node;
if (node_list->next)
{
node_list->data = node_list->next->data;
node_list->next->data = node;
}
}
static gint

View File

@ -43,7 +43,7 @@ struct _ColorDisplayDialog
GDisplay *gdisp;
};
static ColorDisplayDialog cdd = { NULL, NULL, NULL, 0, 0, FALSE, NULL, NULL };
static ColorDisplayDialog cdd = { NULL, NULL, NULL, -1, -1, FALSE, NULL, NULL };
typedef void (*ButtonCallback) (GtkWidget *, gpointer);
@ -202,7 +202,8 @@ color_display_ok_callback (GtkWidget *widget,
g_list_free (cdd.old_nodes);
}
gdisplays_flush ();
gdisplay_expose_full (cdd.gdisp);
gdisplay_flush (cdd.gdisp);
}
static void
@ -227,7 +228,8 @@ color_display_cancel_callback (GtkWidget *widget,
}
}
gdisplays_flush ();
gdisplay_expose_full (cdd.gdisp);
gdisplay_flush (cdd.gdisp);
}
static void
@ -238,8 +240,14 @@ color_display_add_callback (GtkWidget *widget,
ColorDisplayNode *node;
gint row;
if (cdd.src_row < 0)
return;
gtk_clist_get_text (GTK_CLIST (cdd.src), cdd.src_row, 0, &name);
if (!name)
return;
cdd.modified = TRUE;
node = gdisplay_color_attach (cdd.gdisp, name);
@ -247,7 +255,8 @@ color_display_add_callback (GtkWidget *widget,
row = gtk_clist_append (GTK_CLIST (cdd.dest), &name);
gtk_clist_set_row_data (GTK_CLIST (cdd.dest), row, node);
gdisplays_flush ();
gdisplay_expose_full (cdd.gdisp);
gdisplay_flush (cdd.gdisp);
}
static void
@ -255,6 +264,9 @@ color_display_remove_callback (GtkWidget *widget,
gpointer data)
{
ColorDisplayNode *node;
if (cdd.dest_row < 0)
return;
node = (ColorDisplayNode *) gtk_clist_get_row_data (GTK_CLIST (cdd.dest),
cdd.dest_row);
@ -268,7 +280,8 @@ color_display_remove_callback (GtkWidget *widget,
else
gdisplay_color_detach_destroy (cdd.gdisp, node);
gdisplays_flush ();
gdisplay_expose_full (cdd.gdisp);
gdisplay_flush (cdd.gdisp);
}
static void
@ -277,6 +290,9 @@ color_display_up_callback (GtkWidget *widget,
{
ColorDisplayNode *node;
if (cdd.dest_row < 0)
return;
node = (ColorDisplayNode *) gtk_clist_get_row_data (GTK_CLIST (cdd.dest),
cdd.dest_row);
@ -285,7 +301,8 @@ color_display_up_callback (GtkWidget *widget,
gdisplay_color_reorder_up (cdd.gdisp, node);
cdd.modified = TRUE;
gdisplays_flush ();
gdisplay_expose_full (cdd.gdisp);
gdisplay_flush (cdd.gdisp);
}
static void
@ -294,15 +311,18 @@ color_display_down_callback (GtkWidget *widget,
{
ColorDisplayNode *node;
if (cdd.dest_row < 0)
return;
node = (ColorDisplayNode *) gtk_clist_get_row_data (GTK_CLIST (cdd.dest),
cdd.dest_row);
gtk_clist_row_move (GTK_CLIST (cdd.dest), cdd.dest_row, cdd.dest_row + 1);
gdisplay_color_reorder_down (cdd.gdisp, node);
cdd.modified = TRUE;
gdisplays_flush ();
gdisplay_expose_full (cdd.gdisp);
gdisplay_flush (cdd.gdisp);
}
static void
@ -331,6 +351,12 @@ gdisplay_color_ui (GDisplay *gdisp)
cdd.gdisp = gdisp;
cdd.src_row = -1;
cdd.dest_row = -1;
/* gtk_clist_set_selectable (GTK_CLIST (cdd.src), 0, TRUE);
gtk_clist_set_selectable (GTK_CLIST (cdd.dest), 0, TRUE); */
gtk_widget_show (cdd.shell);
}

View File

@ -188,7 +188,7 @@ path_traverse_segment (Path *path, PathCurve *curve, PathSegment *segment, Segme
fprintf(stderr, "path_traverse_segment\n");
#endif PATH_TOOL_DEBUG
#warning here we need path_curve_get_point(s)
/* XXX: here we need path_curve_get_point(s) */
/* Something like:
* for i = 1 to subsamples {
@ -267,7 +267,7 @@ PathSegment * path_append_segment (Path * cur_path, PathCurve * cur_curve, Segm
cur_curve->cur_segment = new_segment;
#warning we need initialisation of the segment here.
/* XXX: we need initialisation of the segment here. */
}
#ifdef PATH_TOOL_DEBUG
@ -313,7 +313,7 @@ PathSegment * path_prepend_segment (Path * cur_path, PathCurve * cur_curve, Seg
cur_curve->segments = new_segment;
cur_curve->cur_segment = new_segment;
#warning we need initialisation of the segment here.
/* XXX: we need initialisation of the segment here. */
}
#ifdef PATH_TOOL_DEBUG
else
@ -339,7 +339,7 @@ PathSegment * path_split_segment (PathSegment *segment, gdouble position)
new_segment = g_new (PathSegment, 1);
new_segment->type = segment->type;
#warning Giving PathTool as NULL Pointer!
/* XXX: Giving PathTool as NULL Pointer! */
path_curve_get_point (NULL, segment, position, &(new_segment->x), &(new_segment->y));
new_segment->flags = 0;
new_segment->parent = segment->parent;
@ -347,7 +347,7 @@ PathSegment * path_split_segment (PathSegment *segment, gdouble position)
new_segment->prev = segment;
new_segment->data = NULL;
#warning we need initialisation of the segment here.
/* XXX: we need initialisation of the segment here. */
new_segment->next->prev = new_segment;
segment->next = new_segment;
@ -390,7 +390,7 @@ path_join_curves (PathSegment *segment1, PathSegment *segment2) {
segment2->prev = segment1;
segment1->next = segment2;
}
#warning Probably some segment-updates needed
/* XXX: Probably some segment-updates needed */
return;
}
@ -442,7 +442,7 @@ path_join_curves (PathSegment *segment1, PathSegment *segment2) {
tmp->parent = curve1;
tmp = tmp->next;
}
#warning Probably some segment-updates needed
/* XXX: Probably some segment-updates needed */
return;
}
@ -473,7 +473,7 @@ path_join_curves (PathSegment *segment1, PathSegment *segment2) {
tmp = tmp->prev;
}
return;
#warning Probably some segment-updates needed
/* XXX: Probably some segment-updates needed */
}
#ifdef PATH_TOOL_DEBUG
@ -495,7 +495,7 @@ path_flip_curve (PathCurve *curve)
PathSegment *tmp, *tmp2;
#warning Please add path_curve_flip_segment here
/* XXX: Please add path_curve_flip_segment here */
if (!curve && !curve->segments) {
#ifdef PATH_TOOL_DEBUG
@ -526,7 +526,7 @@ path_flip_curve (PathCurve *curve)
tmp->data = end_data;
}
tmp = tmp->next;
#warning Probably some segment-updates needed
/* XXX: Probably some segment-updates needed */
}
}
@ -582,7 +582,7 @@ path_free_segment (PathSegment *segment)
segment->parent, segment, 0, SEGMENT_ACTIVE);
if (segment->data)
g_free(segment->data);
#warning Free Segment needs an own hook in the different curve-types!
/* XXX: Free Segment needs an own hook in the different curve-types! */
g_free (segment);
}
}
@ -632,7 +632,7 @@ path_delete_segment (PathSegment *segment)
/*
* here we have to update the surrounding segments
*/
#warning Please add path_curve_update_segment here
/* XXX: Please add path_curve_update_segment here */
}
}
@ -1398,7 +1398,7 @@ path_offset_active_helper (Path *path, PathCurve *curve, PathSegment *segment, g
segment->x += data->dx;
segment->y += data->dy;
}
#warning Do a segment_update here!
/* XXX: Do a segment_update here! */
}
void

View File

@ -188,7 +188,7 @@ path_traverse_segment (Path *path, PathCurve *curve, PathSegment *segment, Segme
fprintf(stderr, "path_traverse_segment\n");
#endif PATH_TOOL_DEBUG
#warning here we need path_curve_get_point(s)
/* XXX: here we need path_curve_get_point(s) */
/* Something like:
* for i = 1 to subsamples {
@ -267,7 +267,7 @@ PathSegment * path_append_segment (Path * cur_path, PathCurve * cur_curve, Segm
cur_curve->cur_segment = new_segment;
#warning we need initialisation of the segment here.
/* XXX: we need initialisation of the segment here. */
}
#ifdef PATH_TOOL_DEBUG
@ -313,7 +313,7 @@ PathSegment * path_prepend_segment (Path * cur_path, PathCurve * cur_curve, Seg
cur_curve->segments = new_segment;
cur_curve->cur_segment = new_segment;
#warning we need initialisation of the segment here.
/* XXX: we need initialisation of the segment here. */
}
#ifdef PATH_TOOL_DEBUG
else
@ -339,7 +339,7 @@ PathSegment * path_split_segment (PathSegment *segment, gdouble position)
new_segment = g_new (PathSegment, 1);
new_segment->type = segment->type;
#warning Giving PathTool as NULL Pointer!
/* XXX: Giving PathTool as NULL Pointer! */
path_curve_get_point (NULL, segment, position, &(new_segment->x), &(new_segment->y));
new_segment->flags = 0;
new_segment->parent = segment->parent;
@ -347,7 +347,7 @@ PathSegment * path_split_segment (PathSegment *segment, gdouble position)
new_segment->prev = segment;
new_segment->data = NULL;
#warning we need initialisation of the segment here.
/* XXX: we need initialisation of the segment here. */
new_segment->next->prev = new_segment;
segment->next = new_segment;
@ -390,7 +390,7 @@ path_join_curves (PathSegment *segment1, PathSegment *segment2) {
segment2->prev = segment1;
segment1->next = segment2;
}
#warning Probably some segment-updates needed
/* XXX: Probably some segment-updates needed */
return;
}
@ -442,7 +442,7 @@ path_join_curves (PathSegment *segment1, PathSegment *segment2) {
tmp->parent = curve1;
tmp = tmp->next;
}
#warning Probably some segment-updates needed
/* XXX: Probably some segment-updates needed */
return;
}
@ -473,7 +473,7 @@ path_join_curves (PathSegment *segment1, PathSegment *segment2) {
tmp = tmp->prev;
}
return;
#warning Probably some segment-updates needed
/* XXX: Probably some segment-updates needed */
}
#ifdef PATH_TOOL_DEBUG
@ -495,7 +495,7 @@ path_flip_curve (PathCurve *curve)
PathSegment *tmp, *tmp2;
#warning Please add path_curve_flip_segment here
/* XXX: Please add path_curve_flip_segment here */
if (!curve && !curve->segments) {
#ifdef PATH_TOOL_DEBUG
@ -526,7 +526,7 @@ path_flip_curve (PathCurve *curve)
tmp->data = end_data;
}
tmp = tmp->next;
#warning Probably some segment-updates needed
/* XXX: Probably some segment-updates needed */
}
}
@ -582,7 +582,7 @@ path_free_segment (PathSegment *segment)
segment->parent, segment, 0, SEGMENT_ACTIVE);
if (segment->data)
g_free(segment->data);
#warning Free Segment needs an own hook in the different curve-types!
/* XXX: Free Segment needs an own hook in the different curve-types! */
g_free (segment);
}
}
@ -632,7 +632,7 @@ path_delete_segment (PathSegment *segment)
/*
* here we have to update the surrounding segments
*/
#warning Please add path_curve_update_segment here
/* XXX: Please add path_curve_update_segment here */
}
}
@ -1398,7 +1398,7 @@ path_offset_active_helper (Path *path, PathCurve *curve, PathSegment *segment, g
segment->x += data->dx;
segment->y += data->dy;
}
#warning Do a segment_update here!
/* XXX: Do a segment_update here! */
}
void

View File

@ -43,7 +43,7 @@ struct _ColorDisplayDialog
GDisplay *gdisp;
};
static ColorDisplayDialog cdd = { NULL, NULL, NULL, 0, 0, FALSE, NULL, NULL };
static ColorDisplayDialog cdd = { NULL, NULL, NULL, -1, -1, FALSE, NULL, NULL };
typedef void (*ButtonCallback) (GtkWidget *, gpointer);
@ -202,7 +202,8 @@ color_display_ok_callback (GtkWidget *widget,
g_list_free (cdd.old_nodes);
}
gdisplays_flush ();
gdisplay_expose_full (cdd.gdisp);
gdisplay_flush (cdd.gdisp);
}
static void
@ -227,7 +228,8 @@ color_display_cancel_callback (GtkWidget *widget,
}
}
gdisplays_flush ();
gdisplay_expose_full (cdd.gdisp);
gdisplay_flush (cdd.gdisp);
}
static void
@ -238,8 +240,14 @@ color_display_add_callback (GtkWidget *widget,
ColorDisplayNode *node;
gint row;
if (cdd.src_row < 0)
return;
gtk_clist_get_text (GTK_CLIST (cdd.src), cdd.src_row, 0, &name);
if (!name)
return;
cdd.modified = TRUE;
node = gdisplay_color_attach (cdd.gdisp, name);
@ -247,7 +255,8 @@ color_display_add_callback (GtkWidget *widget,
row = gtk_clist_append (GTK_CLIST (cdd.dest), &name);
gtk_clist_set_row_data (GTK_CLIST (cdd.dest), row, node);
gdisplays_flush ();
gdisplay_expose_full (cdd.gdisp);
gdisplay_flush (cdd.gdisp);
}
static void
@ -255,6 +264,9 @@ color_display_remove_callback (GtkWidget *widget,
gpointer data)
{
ColorDisplayNode *node;
if (cdd.dest_row < 0)
return;
node = (ColorDisplayNode *) gtk_clist_get_row_data (GTK_CLIST (cdd.dest),
cdd.dest_row);
@ -268,7 +280,8 @@ color_display_remove_callback (GtkWidget *widget,
else
gdisplay_color_detach_destroy (cdd.gdisp, node);
gdisplays_flush ();
gdisplay_expose_full (cdd.gdisp);
gdisplay_flush (cdd.gdisp);
}
static void
@ -277,6 +290,9 @@ color_display_up_callback (GtkWidget *widget,
{
ColorDisplayNode *node;
if (cdd.dest_row < 0)
return;
node = (ColorDisplayNode *) gtk_clist_get_row_data (GTK_CLIST (cdd.dest),
cdd.dest_row);
@ -285,7 +301,8 @@ color_display_up_callback (GtkWidget *widget,
gdisplay_color_reorder_up (cdd.gdisp, node);
cdd.modified = TRUE;
gdisplays_flush ();
gdisplay_expose_full (cdd.gdisp);
gdisplay_flush (cdd.gdisp);
}
static void
@ -294,15 +311,18 @@ color_display_down_callback (GtkWidget *widget,
{
ColorDisplayNode *node;
if (cdd.dest_row < 0)
return;
node = (ColorDisplayNode *) gtk_clist_get_row_data (GTK_CLIST (cdd.dest),
cdd.dest_row);
gtk_clist_row_move (GTK_CLIST (cdd.dest), cdd.dest_row, cdd.dest_row + 1);
gdisplay_color_reorder_down (cdd.gdisp, node);
cdd.modified = TRUE;
gdisplays_flush ();
gdisplay_expose_full (cdd.gdisp);
gdisplay_flush (cdd.gdisp);
}
static void
@ -331,6 +351,12 @@ gdisplay_color_ui (GDisplay *gdisp)
cdd.gdisp = gdisp;
cdd.src_row = -1;
cdd.dest_row = -1;
/* gtk_clist_set_selectable (GTK_CLIST (cdd.src), 0, TRUE);
gtk_clist_set_selectable (GTK_CLIST (cdd.dest), 0, TRUE); */
gtk_widget_show (cdd.shell);
}

View File

@ -29,7 +29,8 @@ typedef void (*GimpColorDisplayConvert) (gpointer cd_ID,
guchar *buf,
int width,
int height,
int bpp);
int bpp,
int bpl);
typedef void (*GimpColorDisplayDestroy) (gpointer cd_ID);
typedef void (*GimpColorDisplayFinalize) (void);
typedef void (*GimpColorDisplayLoadState) (gpointer cd_ID,

View File

@ -29,7 +29,8 @@ typedef void (*GimpColorDisplayConvert) (gpointer cd_ID,
guchar *buf,
int width,
int height,
int bpp);
int bpp,
int bpl);
typedef void (*GimpColorDisplayDestroy) (gpointer cd_ID);
typedef void (*GimpColorDisplayFinalize) (void);
typedef void (*GimpColorDisplayLoadState) (gpointer cd_ID,

View File

@ -44,9 +44,10 @@ static void gamma_create_lookup_table (GammaContext *context);
static void gamma_destroy (gpointer cd_ID);
static void gamma_convert (gpointer cd_ID,
guchar *buf,
int width,
int height,
int bpp);
int w,
int h,
int bpp,
int bpl);
static void gamma_load (gpointer cd_ID,
Parasite *state);
static Parasite * gamma_save (gpointer cd_ID);
@ -116,6 +117,7 @@ gamma_new (int type)
context->lookup[i] = i;
gamma_create_lookup_table (context);
return context;
}
@ -155,13 +157,36 @@ gamma_convert (gpointer cd_ID,
guchar *buf,
int width,
int height,
int bpp)
int bpp,
int bpl)
{
int i;
guchar *lookup = ((GammaContext *) cd_ID)->lookup;
int i, j = height;
for (i = 0; i < width * height * bpp; i++)
*buf++ = lookup[*buf];
/* You will not be using the entire buffer most of the time.
* Hence, the simplistic code for this is as follows:
*
* for (j = 0; j < height; j++)
* {
* for (i = 0; i < width * bpp; i++)
* buf[i] = lookup[buf[i]];
* buf += bpl;
* }
*/
width *= bpp;
bpl -= width;
while (j--)
{
i = width;
while (i--)
{
*buf = lookup[*buf];
buf++;
}
buf += bpl;
}
}
static void