removed all usage of linked.[ch] and switched to GSLists

-Yosh
This commit is contained in:
Manish Singh 1998-01-29 08:03:27 +00:00
parent 9af736f243
commit 89b600d2bc
90 changed files with 1369 additions and 1760 deletions

View File

@ -1,3 +1,7 @@
Thu Jan 29 00:00:54 PST 1998 Manish Singh <yosh@gimp.org>
* removed all usage of linked.[ch] and switched to GSLists
Wed Jan 28 22:03:42 EST 1998 Adrian Likins <adrian@gimp.org>
* Fixed carve-it.scm and circuit.scm (circuit broke due

View File

@ -179,8 +179,6 @@ gimp_SOURCES = \
layers_dialogP.h \
levels.c \
levels.h \
linked.h \
linked.c \
magnify.c \
magnify.h \
main.c \

View File

@ -2,5 +2,4 @@ convert to using gtk+
remove traces of autodialog
remove traces of action areas
remove use of mem chunks from memutils.[ch]
remove use of linked.[ch]
remove use of xmalloc and xfree (use g_malloc and g_free instead)

View File

@ -20,7 +20,6 @@
#include <stdarg.h>
#include <string.h>
#include "appenv.h"
#include "linked.h"
#include "pixel_region.h"
#include "tile_manager_pvt.h"
@ -40,7 +39,7 @@ typedef struct _PixelRegionIterator PixelRegionIterator;
struct _PixelRegionIterator
{
link_ptr pixel_regions;
GSList *pixel_regions;
int region_width;
int region_height;
int portion_width;
@ -292,7 +291,7 @@ pixel_regions_register (int num_regions, ...)
}
/* Add the pixel region holder to the list */
PRI->pixel_regions = add_to_list (PRI->pixel_regions, PRH);
PRI->pixel_regions = g_slist_prepend (PRI->pixel_regions, PRH);
}
va_end (ap);
@ -305,7 +304,7 @@ void *
pixel_regions_process (PRI_ptr)
void *PRI_ptr;
{
link_ptr list;
GSList *list;
PixelRegionHolder *PRH;
PixelRegionIterator *PRI;
@ -342,7 +341,7 @@ pixel_regions_process (PRI_ptr)
}
}
list = next_item (list);
list = g_slist_next (list);
}
return pixel_regions_configure (PRI);
@ -352,7 +351,7 @@ void
pixel_regions_process_stop (PRI_ptr)
void *PRI_ptr;
{
link_ptr list;
GSList *list;
PixelRegionHolder *PRH;
PixelRegionIterator *PRI;
@ -381,7 +380,7 @@ pixel_regions_process_stop (PRI_ptr)
}
}
list = next_item (list);
list = g_slist_next (list);
}
if (PRI->pixel_regions)
@ -390,9 +389,9 @@ pixel_regions_process_stop (PRI_ptr)
while (list)
{
g_free (list->data);
list = next_item (list);
list = g_slist_next (list);
}
free_list (PRI->pixel_regions);
g_slist_free (PRI->pixel_regions);
g_free (PRI);
}
}
@ -405,7 +404,7 @@ static int
get_portion_height (PRI)
PixelRegionIterator *PRI;
{
link_ptr list;
GSList *list;
PixelRegionHolder *PRH;
int min_height = G_MAXINT;
int height;
@ -437,7 +436,7 @@ get_portion_height (PRI)
min_height = height;
}
list = next_item (list);
list = g_slist_next (list);
}
return min_height;
@ -448,7 +447,7 @@ static int
get_portion_width (PRI)
PixelRegionIterator *PRI;
{
link_ptr list;
GSList *list;
PixelRegionHolder *PRH;
int min_width = G_MAXINT;
int width;
@ -480,7 +479,7 @@ get_portion_width (PRI)
min_width = width;
}
list = next_item (list);
list = g_slist_next (list);
}
return min_width;
@ -492,7 +491,7 @@ pixel_regions_configure (PRI)
PixelRegionIterator *PRI;
{
PixelRegionHolder *PRH;
link_ptr list;
GSList *list;
/* Determine the portion width and height */
PRI->portion_width = get_portion_width (PRI);
@ -507,9 +506,9 @@ pixel_regions_configure (PRI)
while (list)
{
g_free (list->data);
list = next_item (list);
list = g_slist_next (list);
}
free_list (PRI->pixel_regions);
g_slist_free (PRI->pixel_regions);
g_free (PRI);
}
@ -529,7 +528,7 @@ pixel_regions_configure (PRI)
pixel_region_configure (PRH, PRI);
}
list = next_item (list);
list = g_slist_next (list);
}
return PRI;

View File

@ -25,7 +25,6 @@
#include "errors.h"
#include "gdisplay.h"
#include "gimage_mask.h"
#include "linked.h"
#include "rect_select.h"
#define BEZIER_START 1
@ -71,7 +70,7 @@ struct _bezier_select
BezierPoint *last_point; /* the last point on the curve */
int num_points; /* number of points in the curve */
Channel *mask; /* null if the curve is open */
link_ptr *scanlines; /* used in converting a curve */
GSList **scanlines; /* used in converting a curve */
};
static void bezier_select_reset (BezierSelect *);
@ -95,8 +94,8 @@ static void bezier_compose (BezierMatrix, BezierMatrix, BezierMa
static void bezier_convert (BezierSelect *, GDisplay *, int, int);
static void bezier_convert_points (BezierSelect *, GdkPoint *, int);
static void bezier_convert_line (link_ptr *, int, int, int, int);
static link_ptr bezier_insert_in_list (link_ptr, int);
static void bezier_convert_line (GSList **, int, int, int, int);
static GSList * bezier_insert_in_list (GSList *, int);
static BezierMatrix basis =
{
@ -1042,7 +1041,7 @@ bezier_convert (BezierSelect *bezier_sel,
PixelRegion maskPR;
BezierPoint * points;
BezierPoint * start_pt;
link_ptr list;
GSList * list;
unsigned char *buf, *b;
int draw_type;
int * vals, val;
@ -1084,7 +1083,7 @@ bezier_convert (BezierSelect *bezier_sel,
gdisp->gimage->height);
/* allocate room for the scanlines */
bezier_sel->scanlines = g_malloc (sizeof (link_ptr) * height);
bezier_sel->scanlines = g_malloc (sizeof (GSList *) * height);
/* zero out the scanlines */
for (i = 0; i < height; i++)
@ -1146,7 +1145,7 @@ bezier_convert (BezierSelect *bezier_sel,
for (j = 0; j < w; j++)
vals[j + x] += 255;
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1168,7 +1167,7 @@ bezier_convert (BezierSelect *bezier_sel,
drawable_width (GIMP_DRAWABLE(bezier_sel->mask)), buf);
}
free_list (bezier_sel->scanlines[i]);
g_slist_free (bezier_sel->scanlines[i]);
}
if (antialias)
@ -1207,7 +1206,7 @@ bezier_convert_points (BezierSelect *bezier_sel,
}
static void
bezier_convert_line (link_ptr *scanlines,
bezier_convert_line (GSList ** scanlines,
int x1,
int y1,
int x2,
@ -1323,32 +1322,32 @@ bezier_convert_line (link_ptr *scanlines,
}
}
static link_ptr
bezier_insert_in_list (link_ptr list,
static GSList *
bezier_insert_in_list (GSList * list,
int x)
{
link_ptr orig = list;
link_ptr rest;
GSList * orig = list;
GSList * rest;
if (!list)
return add_to_list (list, (void *) ((long) x));
return g_slist_prepend (list, (void *) ((long) x));
while (list)
{
rest = next_item (list);
rest = g_slist_next (list);
if (x < (long) list->data)
{
rest = add_to_list (rest, list->data);
rest = g_slist_prepend (rest, list->data);
list->next = rest;
list->data = (void *) ((long) x);
return orig;
}
else if (!rest)
{
append_to_list (list, (void *) ((long) x));
g_slist_append (list, (void *) ((long) x));
return orig;
}
list = next_item (list);
list = g_slist_next (list);
}
return orig;

View File

@ -468,7 +468,7 @@ display_setup (BrushSelectP bsp)
static void
display_brushes (BrushSelectP bsp)
{
link_ptr list = brush_list; /* the global brush list */
GSList * list = brush_list; /* the global brush list */
int row, col;
GBrushP brush;
@ -500,7 +500,7 @@ display_brushes (BrushSelectP bsp)
col = 0;
}
list = next_item (list);
list = g_slist_next (list);
}
}

View File

@ -32,13 +32,12 @@
#include "errors.h"
#include "general.h"
#include "gimprc.h"
#include "linked.h"
#include "menus.h"
/* global variables */
GBrushP active_brush = NULL;
link_ptr brush_list = NULL;
GSList * brush_list = NULL;
int num_brushes = 0;
double opacity = 1.0;
@ -54,19 +53,21 @@ static Argument *return_args;
static int have_default_brush = 0;
/* static function prototypes */
static link_ptr insert_brush_in_list (link_ptr, GBrushP);
static GSList * insert_brush_in_list (GSList *, GBrushP);
static void create_default_brush (void);
static void load_brush (char *filename);
static void free_brush (GBrushP);
static void brushes_free_one (gpointer, gpointer);
static gint brush_compare_func (gpointer, gpointer);
/* function declarations */
void
brushes_init ()
{
link_ptr list;
GSList * list;
if (brush_list)
brushes_free ();
brushes_free();
brush_list = NULL;
num_brushes = 0;
@ -81,30 +82,34 @@ brushes_init ()
list = brush_list;
while (list) {
/* Set the brush index */
((GBrush *) list->data)->index = num_brushes++;
list = next_item (list);
/* Set the brush index */
((GBrush *) list->data)->index = num_brushes++;
list = g_slist_next (list);
}
}
static void
brushes_free_one (gpointer data, gpointer dummy)
{
free_brush ((GBrushP) data);
}
static gint
brush_compare_func (gpointer first, gpointer second)
{
return strcmp (((GBrushP)first)->name, ((GBrushP)second)->name);
}
void
brushes_free ()
{
link_ptr list;
GBrushP brush;
list = brush_list;
while (list)
{
brush = (GBrushP) list->data;
free_brush (brush);
list = next_item (list);
}
free_list (list);
if (brush_list) {
g_slist_foreach (brush_list, brushes_free_one, NULL);
g_slist_free (brush_list);
}
have_default_brush = 0;
active_brush = NULL;
@ -140,67 +145,10 @@ get_active_brush ()
}
static link_ptr
insert_brush_in_list (list, brush)
link_ptr list;
GBrushP brush;
static GSList *
insert_brush_in_list (GSList *list, GBrushP brush)
{
link_ptr tmp;
link_ptr prev;
link_ptr new_link;
GBrushP b;
int val;
/* Insert the item in the list */
if (list)
{
prev = NULL;
tmp = list;
do {
if (tmp)
{
b = (GBrushP) tmp->data;
/* do the comparison needed for the insertion sort */
val = strcmp (brush->name, b->name);
}
else
val = -1;
if (val <= 0)
{
/* this is the place the item goes */
/* Insert the item into the list. We'll have to create
* a new link and then do a little insertion.
*/
new_link = alloc_list ();
if (!new_link)
fatal_error ("Unable to allocate memory");
new_link->data = brush;
new_link->next = tmp;
if (prev)
prev->next = new_link;
if (tmp == list)
list = new_link;
return list;
}
/* Advance to the next item in the list.
*/
prev = tmp;
tmp = next_item (tmp);
} while (prev);
}
else
/* There are no items in the brush list, so we'll just start
* one right now.
*/
list = add_to_list (list, brush);
return list;
return g_slist_insert_sorted (list, brush, brush_compare_func);
}
static void
@ -341,29 +289,21 @@ load_brush(char *filename)
GBrushP
get_brush_by_index (index)
int index;
get_brush_by_index (int index)
{
link_ptr list;
GBrushP brush;
GSList *list;
GBrushP brush = NULL;
list = brush_list;
list = g_slist_nth (brush_list, index);
if (list)
brush = (GBrushP) list->data;
while (list)
{
brush = (GBrushP) list->data;
if (brush->index == index)
return brush;
list = next_item (list);
}
return NULL;
return brush;
}
void
select_brush (brush)
GBrushP brush;
select_brush (GBrushP brush)
{
/* Make sure the active brush is swapped before we get a new one... */
if (stingy_memory_use)
@ -579,7 +519,7 @@ static Argument *
brushes_set_brush_invoker (Argument *args)
{
GBrushP brushp;
link_ptr list;
GSList *list;
char *name;
success = (name = (char *) args[0].value.pdb_pointer) != NULL;
@ -600,7 +540,7 @@ brushes_set_brush_invoker (Argument *args)
break;
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -925,7 +865,7 @@ static Argument *
brushes_list_invoker (Argument *args)
{
GBrushP brushp;
link_ptr list;
GSList *list;
char **brushes;
int i;
@ -939,7 +879,7 @@ brushes_list_invoker (Argument *args)
brushp = (GBrushP) list->data;
brushes[i++] = g_strdup (brushp->name);
list = next_item (list);
list = g_slist_next (list);
}
return_args = procedural_db_return_args (&brushes_list_proc, success);

View File

@ -18,7 +18,7 @@
#ifndef __BRUSHES_H__
#define __BRUSHES_H__
#include "linked.h"
#include <glib.h>
#include "procedural_db.h"
#include "temp_buf.h"
@ -35,7 +35,7 @@ struct _GBrush
};
/* global variables */
extern link_ptr brush_list;
extern GSList * brush_list;
extern int num_brushes;

View File

@ -26,7 +26,6 @@
#include "errors.h"
#include "gimage_mask.h"
#include "layer.h"
#include "linked.h"
#include "paint_funcs.h"
#include "temp_buf.h"
#include "undo.h"
@ -412,7 +411,7 @@ channel_preview (Channel *channel, int width, int height)
void
channel_invalidate_previews (int gimage_id)
{
link_ptr tmp;
GSList * tmp;
Channel * channel;
GImage * gimage;
@ -425,7 +424,7 @@ channel_invalidate_previews (int gimage_id)
{
channel = (Channel *) tmp->data;
drawable_invalidate_preview (GIMP_DRAWABLE(channel));
tmp = next_item (tmp);
tmp = g_slist_next (tmp);
}
}

View File

@ -94,7 +94,7 @@ struct _ChannelsDialog {
int gimage_id;
Channel * active_channel;
Layer *floating_sel;
link_ptr channel_widgets;
GSList *channel_widgets;
};
/* channels dialog widget routines */
@ -230,7 +230,7 @@ channels_dialog_flush ()
GImage *gimage;
Channel *channel;
ChannelWidget *cw;
link_ptr list;
GSList *list;
int gimage_pos;
int pos;
@ -255,7 +255,7 @@ channels_dialog_flush ()
{
cw = (ChannelWidget *) list->data;
cw->visited = FALSE;
list = next_item (list);
list = g_slist_next (list);
}
/* Add any missing channels */
@ -271,7 +271,7 @@ channels_dialog_flush ()
else
cw->visited = TRUE;
list = next_item (list);
list = g_slist_next (list);
}
/* Remove any extraneous auxillary channels */
@ -279,7 +279,7 @@ channels_dialog_flush ()
while (list)
{
cw = (ChannelWidget *) list->data;
list = next_item (list);
list = g_slist_next (list);
if (cw->visited == FALSE && cw->type == Auxillary)
/* will only be true for auxillary channels */
@ -292,7 +292,7 @@ channels_dialog_flush ()
while (list)
{
cw = (ChannelWidget *) list->data;
list = next_item (list);
list = g_slist_next (list);
if (cw->type == Auxillary)
if ((gimage_pos = gimage_get_channel_index (gimage, cw->channel)) != pos)
@ -326,7 +326,7 @@ channels_dialog_update (int gimage_id)
ChannelWidget *cw;
GImage *gimage;
Channel *channel;
link_ptr list;
GSList *list;
GList *item_list;
if (!channelsD)
@ -345,7 +345,7 @@ channels_dialog_update (int gimage_id)
while (list)
{
cw = (ChannelWidget *) list->data;
list = next_item(list);
list = g_slist_next (list);
channel_widget_delete (cw);
}
channelsD->channel_widgets = NULL;
@ -365,17 +365,17 @@ channels_dialog_update (int gimage_id)
{
case RGB:
cw = create_channel_widget (gimage, NULL, Red);
channelsD->channel_widgets = append_to_list (channelsD->channel_widgets, cw);
channelsD->channel_widgets = g_slist_append (channelsD->channel_widgets, cw);
item_list = g_list_append (item_list, cw->list_item);
channelsD->components[0] = Red;
cw = create_channel_widget (gimage, NULL, Green);
channelsD->channel_widgets = append_to_list (channelsD->channel_widgets, cw);
channelsD->channel_widgets = g_slist_append (channelsD->channel_widgets, cw);
item_list = g_list_append (item_list, cw->list_item);
channelsD->components[1] = Green;
cw = create_channel_widget (gimage, NULL, Blue);
channelsD->channel_widgets = append_to_list (channelsD->channel_widgets, cw);
channelsD->channel_widgets = g_slist_append (channelsD->channel_widgets, cw);
item_list = g_list_append (item_list, cw->list_item);
channelsD->components[2] = Blue;
@ -384,7 +384,7 @@ channels_dialog_update (int gimage_id)
case GRAY:
cw = create_channel_widget (gimage, NULL, Gray);
channelsD->channel_widgets = append_to_list (channelsD->channel_widgets, cw);
channelsD->channel_widgets = g_slist_append (channelsD->channel_widgets, cw);
item_list = g_list_append (item_list, cw->list_item);
channelsD->components[0] = Gray;
@ -393,7 +393,7 @@ channels_dialog_update (int gimage_id)
case INDEXED:
cw = create_channel_widget (gimage, NULL, Indexed);
channelsD->channel_widgets = append_to_list (channelsD->channel_widgets, cw);
channelsD->channel_widgets = g_slist_append (channelsD->channel_widgets, cw);
item_list = g_list_append (item_list, cw->list_item);
channelsD->components[0] = Indexed;
@ -408,10 +408,10 @@ channels_dialog_update (int gimage_id)
/* create a channel list item */
channel = (Channel *) list->data;
cw = create_channel_widget (gimage, channel, Auxillary);
channelsD->channel_widgets = append_to_list (channelsD->channel_widgets, cw);
channelsD->channel_widgets = g_slist_append (channelsD->channel_widgets, cw);
item_list = g_list_append (item_list, cw->list_item);
list = next_item (list);
list = g_slist_next (list);
}
/* get the index of the active channel */
@ -431,7 +431,7 @@ channels_dialog_clear ()
void
channels_dialog_free ()
{
link_ptr list;
GSList *list;
ChannelWidget *cw;
if (channelsD == NULL)
@ -446,7 +446,7 @@ channels_dialog_free ()
while (list)
{
cw = (ChannelWidget *) list->data;
list = next_item(list);
list = g_slist_next (list);
channel_widget_delete (cw);
}
channelsD->channel_widgets = NULL;
@ -677,7 +677,7 @@ channels_dialog_add_channel (Channel *channel)
item_list = g_list_append (item_list, channel_widget->list_item);
position = gimage_get_channel_index (gimage, channel);
channelsD->channel_widgets = insert_in_list (channelsD->channel_widgets, channel_widget,
channelsD->channel_widgets = g_slist_insert (channelsD->channel_widgets, channel_widget,
position + channelsD->num_components);
gtk_list_insert_items (GTK_LIST (channelsD->channel_list), item_list,
position + channelsD->num_components);
@ -920,7 +920,7 @@ static ChannelWidget *
channel_widget_get_ID (Channel *channel)
{
ChannelWidget *lw;
link_ptr list;
GSList *list;
if (!channelsD)
return NULL;
@ -933,7 +933,7 @@ channel_widget_get_ID (Channel *channel)
if (lw->channel == channel)
return lw;
list = next_item(list);
list = g_slist_next (list);
}
return NULL;
@ -1042,7 +1042,7 @@ channel_widget_delete (ChannelWidget *channel_widget)
gdk_pixmap_unref (channel_widget->channel_pixmap);
/* Remove the channel widget from the list */
channelsD->channel_widgets = remove_from_list (channelsD->channel_widgets, channel_widget);
channelsD->channel_widgets = g_slist_remove (channelsD->channel_widgets, channel_widget);
/* Free the widget */
g_free (channel_widget);
@ -1476,7 +1476,7 @@ channel_widget_eye_redraw (ChannelWidget *channel_widget)
static void
channel_widget_exclusive_visible (ChannelWidget *channel_widget)
{
link_ptr list;
GSList *list;
ChannelWidget *cw;
int visible = FALSE;
@ -1501,7 +1501,7 @@ channel_widget_exclusive_visible (ChannelWidget *channel_widget)
}
}
list = next_item (list);
list = g_slist_next (list);
}
/* Now, toggle the visibility for all channels except the specified one */
@ -1532,7 +1532,7 @@ channel_widget_exclusive_visible (ChannelWidget *channel_widget)
channel_widget_eye_redraw (cw);
list = next_item (list);
list = g_slist_next (list);
}
}

View File

@ -459,7 +459,7 @@ static GtkWidget *
build_palette_menu(int *default_palette){
GtkWidget *menu;
GtkWidget *menu_item;
link_ptr list;
GSList *list;
PaletteEntriesP entries;
int i;
@ -478,7 +478,7 @@ build_palette_menu(int *default_palette){
for(i=0,list = palette_entries_list,*default_palette=-1;
list;
i++,list = next_item (list))
i++,list = g_slist_next (list))
{
entries = (PaletteEntriesP) list->data;
/* fprintf(stderr, "(palette %s)\n", entries->filename);*/
@ -600,7 +600,7 @@ convert_image (GImage *gimage,
Layer *layer;
Layer *floating_layer;
int old_type;
link_ptr list;
GSList *list;
int new_layer_type;
int new_layer_bytes;
int has_alpha;
@ -656,7 +656,7 @@ convert_image (GImage *gimage,
while (list)
{
layer = (Layer *) list->data;
list = next_item (list);
list = g_slist_next (list);
if (old_type == GRAY)
generate_histogram_gray (quantobj->histogram, layer);
else
@ -722,7 +722,7 @@ convert_image (GImage *gimage,
while (list)
{
layer = (Layer *) list->data;
list = next_item (list);
list = g_slist_next (list);
has_alpha = layer_has_alpha (layer);
switch (new_type)
@ -2024,7 +2024,7 @@ static void
custompal_pass1 (QuantizeObj *quantobj)
{
int i;
link_ptr list;
GSList *list;
PaletteEntryP entry;
/* fprintf(stderr, "custompal_pass1: using (theCustomPalette %s) from (file %s)\n",
@ -2032,7 +2032,7 @@ custompal_pass1 (QuantizeObj *quantobj)
for (i=0,list=theCustomPalette->colors;
list;
i++,list=next_item(list))
i++,list=g_slist_next(list))
{
entry=(PaletteEntryP)list->data;
quantobj->cmap[i].red = entry->color[0];
@ -3036,7 +3036,7 @@ convert_indexed_palette_invoker (Argument *args)
if (success)
{
PaletteEntriesP entries, the_palette = NULL;
link_ptr list;
GSList *list;
palette_type = args[2].value.pdb_int;
switch(palette_type) {
@ -3057,7 +3057,7 @@ convert_indexed_palette_invoker (Argument *args)
if (!palette_entries_list) palette_init_palettes();
for(list = palette_entries_list;
list;
list = next_item(list)) {
list = g_slist_next(list)) {
entries = (PaletteEntriesP) list->data;
if (strcmp(palette_name, entries->name)==0) {
/* fprintf(stderr, "found it!\n"); */

View File

@ -27,7 +27,6 @@
#include "global_edit.h"
#include "interface.h"
#include "layer.h"
#include "linked.h"
#include "paint_funcs.h"
#include "tools.h"
#include "undo.h"
@ -57,7 +56,7 @@ struct _named_buffer
/* The named buffer list */
link_ptr named_buffers = NULL;
GSList * named_buffers = NULL;
/* The global edit buffer */
TileManager * global_buf = NULL;
@ -449,7 +448,7 @@ global_edit_free ()
static void
set_list_of_named_buffers (GtkWidget *list_widget)
{
link_ptr list;
GSList *list;
NamedBuffer *nb;
GtkWidget *list_item;
@ -459,7 +458,7 @@ set_list_of_named_buffers (GtkWidget *list_widget)
while (list)
{
nb = (NamedBuffer *) list->data;
list = next_item (list);
list = g_slist_next (list);
list_item = gtk_list_item_new_with_label (nb->name);
gtk_container_add (GTK_CONTAINER (list_widget), list_item);
@ -513,7 +512,7 @@ named_buffer_delete_foreach (GtkWidget *w,
{
pn_dlg = (PasteNamedDlg *) client_data;
nb = (NamedBuffer *) gtk_object_get_user_data (GTK_OBJECT (w));
named_buffers = remove_from_list (named_buffers, (void *) nb);
named_buffers = g_slist_remove (named_buffers, (void *) nb);
g_free (nb->name);
tile_manager_destroy (nb->buf);
g_free (nb);
@ -653,7 +652,7 @@ new_named_buffer_callback (GtkWidget *w,
copy_region (&srcPR, &destPR);
nb->name = g_strdup ((char *) call_data);
named_buffers = append_to_list (named_buffers, (void *) nb);
named_buffers = g_slist_append (named_buffers, (void *) nb);
}
static void
@ -717,7 +716,7 @@ named_edit_paste (void *gdisp_ptr)
void
named_buffers_free ()
{
link_ptr list;
GSList *list;
NamedBuffer * nb;
list = named_buffers;
@ -728,9 +727,9 @@ named_buffers_free ()
tile_manager_destroy (nb->buf);
g_free (nb->name);
g_free (nb);
list = next_item (list);
list = g_slist_next (list);
}
free_list (named_buffers);
g_slist_free (named_buffers);
named_buffers = NULL;
}

View File

@ -26,7 +26,6 @@
#include "errors.h"
#include "gimage_mask.h"
#include "layer.h"
#include "linked.h"
#include "paint_funcs.h"
#include "temp_buf.h"
#include "undo.h"
@ -412,7 +411,7 @@ channel_preview (Channel *channel, int width, int height)
void
channel_invalidate_previews (int gimage_id)
{
link_ptr tmp;
GSList * tmp;
Channel * channel;
GImage * gimage;
@ -425,7 +424,7 @@ channel_invalidate_previews (int gimage_id)
{
channel = (Channel *) tmp->data;
drawable_invalidate_preview (GIMP_DRAWABLE(channel));
tmp = next_item (tmp);
tmp = g_slist_next (tmp);
}
}

View File

@ -26,7 +26,6 @@
#include "errors.h"
#include "gimage_mask.h"
#include "layer.h"
#include "linked.h"
#include "paint_funcs.h"
#include "temp_buf.h"
#include "undo.h"
@ -412,7 +411,7 @@ channel_preview (Channel *channel, int width, int height)
void
channel_invalidate_previews (int gimage_id)
{
link_ptr tmp;
GSList * tmp;
Channel * channel;
GImage * gimage;
@ -425,7 +424,7 @@ channel_invalidate_previews (int gimage_id)
{
channel = (Channel *) tmp->data;
drawable_invalidate_preview (GIMP_DRAWABLE(channel));
tmp = next_item (tmp);
tmp = g_slist_next (tmp);
}
}

View File

@ -27,7 +27,6 @@
#include "global_edit.h"
#include "interface.h"
#include "layer.h"
#include "linked.h"
#include "paint_funcs.h"
#include "tools.h"
#include "undo.h"
@ -57,7 +56,7 @@ struct _named_buffer
/* The named buffer list */
link_ptr named_buffers = NULL;
GSList * named_buffers = NULL;
/* The global edit buffer */
TileManager * global_buf = NULL;
@ -449,7 +448,7 @@ global_edit_free ()
static void
set_list_of_named_buffers (GtkWidget *list_widget)
{
link_ptr list;
GSList *list;
NamedBuffer *nb;
GtkWidget *list_item;
@ -459,7 +458,7 @@ set_list_of_named_buffers (GtkWidget *list_widget)
while (list)
{
nb = (NamedBuffer *) list->data;
list = next_item (list);
list = g_slist_next (list);
list_item = gtk_list_item_new_with_label (nb->name);
gtk_container_add (GTK_CONTAINER (list_widget), list_item);
@ -513,7 +512,7 @@ named_buffer_delete_foreach (GtkWidget *w,
{
pn_dlg = (PasteNamedDlg *) client_data;
nb = (NamedBuffer *) gtk_object_get_user_data (GTK_OBJECT (w));
named_buffers = remove_from_list (named_buffers, (void *) nb);
named_buffers = g_slist_remove (named_buffers, (void *) nb);
g_free (nb->name);
tile_manager_destroy (nb->buf);
g_free (nb);
@ -653,7 +652,7 @@ new_named_buffer_callback (GtkWidget *w,
copy_region (&srcPR, &destPR);
nb->name = g_strdup ((char *) call_data);
named_buffers = append_to_list (named_buffers, (void *) nb);
named_buffers = g_slist_append (named_buffers, (void *) nb);
}
static void
@ -717,7 +716,7 @@ named_edit_paste (void *gdisp_ptr)
void
named_buffers_free ()
{
link_ptr list;
GSList *list;
NamedBuffer * nb;
list = named_buffers;
@ -728,9 +727,9 @@ named_buffers_free ()
tile_manager_destroy (nb->buf);
g_free (nb->name);
g_free (nb);
list = next_item (list);
list = g_slist_next (list);
}
free_list (named_buffers);
g_slist_free (named_buffers);
named_buffers = NULL;
}

View File

@ -459,7 +459,7 @@ static GtkWidget *
build_palette_menu(int *default_palette){
GtkWidget *menu;
GtkWidget *menu_item;
link_ptr list;
GSList *list;
PaletteEntriesP entries;
int i;
@ -478,7 +478,7 @@ build_palette_menu(int *default_palette){
for(i=0,list = palette_entries_list,*default_palette=-1;
list;
i++,list = next_item (list))
i++,list = g_slist_next (list))
{
entries = (PaletteEntriesP) list->data;
/* fprintf(stderr, "(palette %s)\n", entries->filename);*/
@ -600,7 +600,7 @@ convert_image (GImage *gimage,
Layer *layer;
Layer *floating_layer;
int old_type;
link_ptr list;
GSList *list;
int new_layer_type;
int new_layer_bytes;
int has_alpha;
@ -656,7 +656,7 @@ convert_image (GImage *gimage,
while (list)
{
layer = (Layer *) list->data;
list = next_item (list);
list = g_slist_next (list);
if (old_type == GRAY)
generate_histogram_gray (quantobj->histogram, layer);
else
@ -722,7 +722,7 @@ convert_image (GImage *gimage,
while (list)
{
layer = (Layer *) list->data;
list = next_item (list);
list = g_slist_next (list);
has_alpha = layer_has_alpha (layer);
switch (new_type)
@ -2024,7 +2024,7 @@ static void
custompal_pass1 (QuantizeObj *quantobj)
{
int i;
link_ptr list;
GSList *list;
PaletteEntryP entry;
/* fprintf(stderr, "custompal_pass1: using (theCustomPalette %s) from (file %s)\n",
@ -2032,7 +2032,7 @@ custompal_pass1 (QuantizeObj *quantobj)
for (i=0,list=theCustomPalette->colors;
list;
i++,list=next_item(list))
i++,list=g_slist_next(list))
{
entry=(PaletteEntryP)list->data;
quantobj->cmap[i].red = entry->color[0];
@ -3036,7 +3036,7 @@ convert_indexed_palette_invoker (Argument *args)
if (success)
{
PaletteEntriesP entries, the_palette = NULL;
link_ptr list;
GSList *list;
palette_type = args[2].value.pdb_int;
switch(palette_type) {
@ -3057,7 +3057,7 @@ convert_indexed_palette_invoker (Argument *args)
if (!palette_entries_list) palette_init_palettes();
for(list = palette_entries_list;
list;
list = next_item(list)) {
list = g_slist_next(list)) {
entries = (PaletteEntriesP) list->data;
if (strcmp(palette_name, entries->name)==0) {
/* fprintf(stderr, "found it!\n"); */

View File

@ -30,7 +30,6 @@
#include "gimprc.h"
#include "indexed_palette.h"
#include "layer.h"
#include "linked.h"
#include "paint_core.h"
#include "paint_funcs.h"
#include "tools.h"
@ -135,9 +134,9 @@ channel_size (Channel *channel)
static void
undo_free_list (GImage *gimage,
int state,
link_ptr list)
GSList *list)
{
link_ptr orig;
GSList * orig;
Undo * undo;
orig = list;
@ -151,17 +150,18 @@ undo_free_list (GImage *gimage,
gimage->undo_bytes -= undo->bytes;
g_free (undo);
}
list = next_item (list);
list = g_slist_next (list);
}
free_list (orig);
g_slist_free (orig);
}
static link_ptr
static GSList *
remove_stack_bottom (GImage *gimage)
{
link_ptr list, last;
GSList *list;
GSList *last;
int in_group = 0;
list = gimage->undo_stack;
@ -193,7 +193,7 @@ remove_stack_bottom (GImage *gimage)
(!list->data && !in_group))
last = list;
list = next_item (list);
list = g_slist_next (list);
}
}
@ -258,21 +258,21 @@ undo_push (GImage *gimage,
else
new->type = gimage->pushing_undo_group;
gimage->undo_stack = add_to_list (gimage->undo_stack, (void *) new);
gimage->undo_stack = g_slist_prepend (gimage->undo_stack, (void *) new);
return new;
}
static int
pop_stack (GImage *gimage,
link_ptr *stack_ptr,
link_ptr *unstack_ptr,
pop_stack (GImage *gimage,
GSList **stack_ptr,
GSList **unstack_ptr,
int state)
{
Undo * object;
link_ptr stack;
link_ptr tmp;
GSList *stack;
GSList *tmp;
int status = 0;
int in_group = 0;
@ -302,12 +302,12 @@ pop_stack (GImage *gimage,
gimage->undo_levels += (state == UNDO) ? -1 : 1;
}
*unstack_ptr = add_to_list (*unstack_ptr, (void *) object);
*unstack_ptr = g_slist_prepend (*unstack_ptr, (void *) object);
tmp = stack;
*stack_ptr = next_item (*stack_ptr);
*stack_ptr = g_slist_next (*stack_ptr);
tmp->next = NULL;
free_list (tmp);
g_slist_free (tmp);
if (status && !in_group)
{
@ -381,7 +381,7 @@ undo_push_group_start (GImage *gimage,
return FALSE;
gimage->pushing_undo_group = type;
gimage->undo_stack = add_to_list (gimage->undo_stack, NULL);
gimage->undo_stack = g_slist_prepend (gimage->undo_stack, NULL);
gimage->undo_levels++;
return TRUE;
@ -399,7 +399,7 @@ undo_push_group_end (GImage *gimage)
if (group_count == 0)
{
gimage->pushing_undo_group = 0;
gimage->undo_stack = add_to_list (gimage->undo_stack, NULL);
gimage->undo_stack = g_slist_prepend (gimage->undo_stack, NULL);
}
return TRUE;
@ -1072,8 +1072,8 @@ undo_pop_layer (GImage *gimage,
gimage_set_active_layer (gimage, lu->prev_layer);
/* remove the layer */
gimage->layers = remove_from_list (gimage->layers, lu->layer);
gimage->layer_stack = remove_from_list (gimage->layer_stack, lu->layer);
gimage->layers = g_slist_remove (gimage->layers, lu->layer);
gimage->layer_stack = g_slist_remove (gimage->layer_stack, lu->layer);
/* reset the gimage values */
if (layer_is_floating_sel (lu->layer))
@ -1100,8 +1100,8 @@ undo_pop_layer (GImage *gimage,
gimage->floating_sel = lu->layer;
/* add the new layer */
gimage->layers = insert_in_list (gimage->layers, lu->layer, lu->prev_position);
gimage->layer_stack = add_to_list (gimage->layer_stack, lu->layer);
gimage->layers = g_slist_insert (gimage->layers, lu->layer, lu->prev_position);
gimage->layer_stack = g_slist_prepend (gimage->layer_stack, lu->layer);
gimage->active_layer = lu->layer;
drawable_update (GIMP_DRAWABLE(lu->layer), 0, 0, GIMP_DRAWABLE(lu->layer)->width, GIMP_DRAWABLE(lu->layer)->height);
}
@ -1443,7 +1443,7 @@ undo_pop_channel (GImage *gimage,
cu->prev_position = gimage_get_channel_index (gimage, cu->channel);
/* remove the channel */
gimage->channels = remove_from_list (gimage->channels, cu->channel);
gimage->channels = g_slist_remove (gimage->channels, cu->channel);
/* set the previous channel */
gimage_set_active_channel (gimage, cu->prev_channel);
@ -1458,7 +1458,7 @@ undo_pop_channel (GImage *gimage,
cu->prev_channel = gimage->active_channel;
/* add the new channel */
gimage->channels = insert_in_list (gimage->channels, cu->channel, cu->prev_position);
gimage->channels = g_slist_insert (gimage->channels, cu->channel, cu->prev_position);
/* set the new channel */
gimage_set_active_channel (gimage, cu->channel);

View File

@ -31,7 +31,6 @@
#include "interface.h"
#include "layer.h"
#include "layers_dialog.h"
#include "linked.h"
#include "paint_funcs.h"
#include "temp_buf.h"
#include "undo.h"
@ -1119,7 +1118,7 @@ void
layer_invalidate_previews (gimage_id)
int gimage_id;
{
link_ptr tmp;
GSList * tmp;
Layer * layer;
GImage * gimage;
@ -1132,7 +1131,7 @@ layer_invalidate_previews (gimage_id)
{
layer = (Layer *) tmp->data;
drawable_invalidate_preview (GIMP_DRAWABLE(layer));
tmp = next_item (tmp);
tmp = g_slist_next (tmp);
}
}

View File

@ -35,7 +35,6 @@
#include "info_window.h"
#include "interface.h"
#include "layers_dialog.h"
#include "linked.h"
#include "menus.h"
#include "plug_in.h"
#include "scale.h"
@ -50,7 +49,7 @@
#define EPSILON 5
/* variable declarations */
link_ptr display_list = NULL;
GSList * display_list = NULL;
static int display_num = 1;
static GdkCursorType default_gdisplay_cursor = GDK_TOP_LEFT_ARROW;
@ -72,8 +71,8 @@ static char *image_type_strs[] =
/* Local functions */
static void gdisplay_format_title (GImage *, char *);
static void gdisplay_delete (GDisplay *);
static link_ptr gdisplay_free_area_list (link_ptr);
static link_ptr gdisplay_process_area_list(link_ptr, GArea *);
static GSList * gdisplay_free_area_list (GSList *);
static GSList * gdisplay_process_area_list(GSList *, GArea *);
static void gdisplay_add_update_area (GDisplay *, int, int, int, int);
static void gdisplay_add_display_area (GDisplay *, int, int, int, int);
static void gdisplay_paint_area (GDisplay *, int, int, int, int);
@ -124,7 +123,7 @@ gdisplay_new (GImage *gimage,
gdisp->snap_to_guides = TRUE;
/* add the new display to the list so that it isn't lost */
display_list = append_to_list (display_list, (void *) gdisp);
display_list = g_slist_append (display_list, (void *) gdisp);
/* create the shell for the image */
create_display_shell (gdisp->ID, gimage->width, gimage->height,
@ -215,10 +214,10 @@ gdisplay_delete (GDisplay *gdisp)
}
static link_ptr
gdisplay_free_area_list (link_ptr list)
static GSList *
gdisplay_free_area_list (GSList *list)
{
link_ptr l = list;
GSList *l = list;
GArea *ga;
while (l)
@ -227,27 +226,27 @@ gdisplay_free_area_list (link_ptr list)
ga = (GArea *) l->data;
g_free (ga);
l = next_item (l);
l = g_slist_next (l);
}
if (list)
free_list (list);
g_slist_free (list);
return NULL;
}
static link_ptr
gdisplay_process_area_list (link_ptr list,
GArea *ga1)
static GSList *
gdisplay_process_area_list (GSList *list,
GArea *ga1)
{
link_ptr new_list;
link_ptr l = list;
GSList *new_list;
GSList *l = list;
int area1, area2, area3;
GArea *ga2;
/* start new list off */
new_list = add_to_list (NULL, ga1);
new_list = g_slist_prepend (NULL, ga1);
while (l)
{
/* process the data */
@ -258,7 +257,7 @@ gdisplay_process_area_list (link_ptr list,
(MAXIMUM (ga2->y2, ga1->y2) - MINIMUM (ga2->y1, ga1->y1)) + OVERHEAD;
if ((area1 + area2) < area3)
new_list = add_to_list (new_list, ga2);
new_list = g_slist_prepend (new_list, ga2);
else
{
ga1->x1 = MINIMUM (ga1->x1, ga2->x1);
@ -269,11 +268,11 @@ gdisplay_process_area_list (link_ptr list,
g_free (ga2);
}
l = next_item (l);
l = g_slist_next (l);
}
if (list)
free_list (list);
g_slist_free (list);
return new_list;
}
@ -282,8 +281,8 @@ gdisplay_process_area_list (link_ptr list,
void
gdisplay_flush (GDisplay *gdisp)
{
GArea * ga;
link_ptr list;
GArea *ga;
GSList *list;
/* Flush the items in the displays and updates lists--
* but only if gdisplay has been mapped and exposed
@ -300,7 +299,7 @@ gdisplay_flush (GDisplay *gdisp)
gdisplay_paint_area (gdisp, ga->x1, ga->y1,
(ga->x2 - ga->x1), (ga->y2 - ga->y1));
list = next_item (list);
list = g_slist_next (list);
}
/* Free the update lists */
gdisp->update_areas = gdisplay_free_area_list (gdisp->update_areas);
@ -320,7 +319,7 @@ gdisplay_flush (GDisplay *gdisp)
gdisplay_display_area (gdisp, ga->x1, ga->y1,
(ga->x2 - ga->x1), (ga->y2 - ga->y1));
list = next_item (list);
list = g_slist_next (list);
}
/* Free the update lists */
gdisp->display_areas = gdisplay_free_area_list (gdisp->display_areas);
@ -614,7 +613,7 @@ void
gdisplay_remove_and_delete (GDisplay *gdisp)
{
/* remove the display from the list */
display_list = remove_from_list (display_list, (void *) gdisp);
display_list = g_slist_remove (display_list, (void *) gdisp);
gdisplay_delete (gdisp);
}
@ -1130,7 +1129,7 @@ GDisplay *
gdisplay_get_ID (int ID)
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
/* Traverse the list of displays, returning the one that matches the ID */
/* If no display in the list is a match, return NULL. */
@ -1140,7 +1139,7 @@ gdisplay_get_ID (int ID)
if (gdisp->ID == ID)
return gdisp;
list = next_item (list);
list = g_slist_next (list);
}
return NULL;
@ -1151,7 +1150,7 @@ void
gdisplays_update_title (int ID)
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
char title [MAX_TITLE_BUF];
/* traverse the linked list of displays, handling each one */
@ -1165,7 +1164,7 @@ gdisplays_update_title (int ID)
gdk_window_set_title (gdisp->shell->window, title);
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1178,7 +1177,7 @@ gdisplays_update_area (int ID,
int h)
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
int x1, y1, x2, y2;
int count = 0;
@ -1202,7 +1201,7 @@ gdisplays_update_area (int ID,
count++;
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1212,7 +1211,7 @@ gdisplays_expose_guides (int ID)
{
GDisplay *gdisp;
GList *tmp_list;
link_ptr list;
GSList *list;
/* traverse the linked list of displays, handling each one */
list = display_list;
@ -1229,7 +1228,7 @@ gdisplays_expose_guides (int ID)
}
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1239,7 +1238,7 @@ gdisplays_expose_guide (int ID,
Guide *guide)
{
GDisplay *gdisp;
link_ptr list;
GSList *list;
/* traverse the linked list of displays, handling each one */
list = display_list;
@ -1249,7 +1248,7 @@ gdisplays_expose_guide (int ID,
if (gdisp->gimage->ID == ID)
gdisplay_expose_guide (gdisp, guide);
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1258,7 +1257,7 @@ void
gdisplays_update_full (int ID)
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
int count = 0;
/* traverse the linked list of displays, handling each one */
@ -1279,7 +1278,7 @@ gdisplays_update_full (int ID)
count++;
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1288,7 +1287,7 @@ void
gdisplays_shrink_wrap (int ID)
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
/* traverse the linked list of displays, handling each one */
while (list)
@ -1297,7 +1296,7 @@ gdisplays_shrink_wrap (int ID)
if (gdisp->gimage->ID == ID)
shrink_wrap_display (gdisp);
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1306,14 +1305,14 @@ void
gdisplays_expose_full ()
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
/* traverse the linked list of displays, handling each one */
while (list)
{
gdisp = (GDisplay *) list->data;
gdisplay_expose_full (gdisp);
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1323,7 +1322,7 @@ gdisplays_selection_visibility (int gimage_ID,
SelectionControl function)
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
int count = 0;
/* traverse the linked list of displays, handling each one */
@ -1353,7 +1352,7 @@ gdisplays_selection_visibility (int gimage_ID,
count++;
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1362,14 +1361,14 @@ int
gdisplays_dirty ()
{
int dirty = 0;
link_ptr list = display_list;
GSList *list = display_list;
/* traverse the linked list of displays */
while (list)
{
if (((GDisplay *) list->data)->gimage->dirty > 0)
dirty = 1;
list = next_item (list);
list = g_slist_next (list);
}
return dirty;
@ -1379,17 +1378,17 @@ gdisplays_dirty ()
void
gdisplays_delete ()
{
link_ptr list = display_list;
GSList *list = display_list;
/* traverse the linked list of displays */
while (list)
{
gdisplay_delete ((GDisplay *) list->data);
list = next_item (list);
list = g_slist_next (list);
}
/* free up linked list data */
free_list (display_list);
g_slist_free (display_list);
}
@ -1397,7 +1396,7 @@ void
gdisplays_flush ()
{
static int flushing = FALSE;
link_ptr list = display_list;
GSList *list = display_list;
/* no flushing necessary without an interface */
if (no_interface)
@ -1413,7 +1412,7 @@ gdisplays_flush ()
while (list)
{
gdisplay_flush ((GDisplay *) list->data);
list = next_item (list);
list = g_slist_next (list);
}
/* for convenience, we call the layers dialog flush here */

View File

@ -20,7 +20,6 @@
#include "gimage.h"
#include "info_dialog.h"
#include "linked.h"
#include "selection.h"
/*
@ -86,8 +85,8 @@ struct _GDisplay
GdkGC *scroll_gc; /* GC for scrolling */
link_ptr update_areas; /* Update areas list */
link_ptr display_areas; /* Display areas list */
GSList *update_areas; /* Update areas list */
GSList *display_areas; /* Display areas list */
GdkCursorType current_cursor; /* Currently installed cursor */
};

View File

@ -560,7 +560,7 @@ crop_image (GImage *gimage,
Layer *floating_layer;
Channel *channel;
GList *guide_list_ptr;
link_ptr list;
GSList *list;
int width, height;
int lx1, ly1, lx2, ly2;
int off_x, off_y;
@ -592,7 +592,7 @@ crop_image (GImage *gimage,
{
channel = (Channel *) list->data;
channel_resize (channel, width, height, -x1, -y1);
list = next_item (list);
list = g_slist_next (list);
}
/* Don't forget the selection mask! */
@ -616,7 +616,7 @@ crop_image (GImage *gimage,
width = lx2 - lx1;
height = ly2 - ly1;
list = next_item (list);
list = g_slist_next (list);
if (width && height)
layer_resize (layer, width, height,

View File

@ -122,7 +122,7 @@ info_dialog_new (char *title)
void
info_dialog_free (InfoDialog *idialog)
{
link_ptr list;
GSList *list;
if (!idialog)
return;
@ -133,11 +133,11 @@ info_dialog_free (InfoDialog *idialog)
while (list)
{
g_free (list->data);
list = next_item (list);
list = g_slist_next (list);
}
/* Free the actual field linked list */
free_list (idialog->field_list);
g_slist_free (idialog->field_list);
/* Destroy the associated widgets */
gtk_widget_destroy (idialog->shell);
@ -157,7 +157,7 @@ info_dialog_add_field (InfoDialog *idialog,
return;
new_field = info_field_new (idialog, title, text_ptr);
idialog->field_list = add_to_list (idialog->field_list, (void *) new_field);
idialog->field_list = g_slist_prepend (idialog->field_list, (void *) new_field);
}
void
@ -183,7 +183,7 @@ info_dialog_popdown (InfoDialog *idialog)
void
info_dialog_update (InfoDialog *idialog)
{
link_ptr list;
GSList *list;
if (!idialog)
return;
@ -193,7 +193,7 @@ info_dialog_update (InfoDialog *idialog)
while (list)
{
update_field ((InfoField *) list->data);
list = next_item (list);
list = g_slist_next (list);
}
}

View File

@ -19,7 +19,6 @@
#define __INFO_DIALOG_H__
#include "gtk/gtk.h"
#include "linked.h"
typedef struct _info_field InfoField;
@ -40,7 +39,7 @@ struct _info_dialog
GtkWidget *labels;
GtkWidget *values;
link_ptr field_list;
GSList *field_list;
void *user_data;
};

View File

@ -35,7 +35,6 @@
#include "info_window.h"
#include "interface.h"
#include "layers_dialog.h"
#include "linked.h"
#include "menus.h"
#include "plug_in.h"
#include "scale.h"
@ -50,7 +49,7 @@
#define EPSILON 5
/* variable declarations */
link_ptr display_list = NULL;
GSList * display_list = NULL;
static int display_num = 1;
static GdkCursorType default_gdisplay_cursor = GDK_TOP_LEFT_ARROW;
@ -72,8 +71,8 @@ static char *image_type_strs[] =
/* Local functions */
static void gdisplay_format_title (GImage *, char *);
static void gdisplay_delete (GDisplay *);
static link_ptr gdisplay_free_area_list (link_ptr);
static link_ptr gdisplay_process_area_list(link_ptr, GArea *);
static GSList * gdisplay_free_area_list (GSList *);
static GSList * gdisplay_process_area_list(GSList *, GArea *);
static void gdisplay_add_update_area (GDisplay *, int, int, int, int);
static void gdisplay_add_display_area (GDisplay *, int, int, int, int);
static void gdisplay_paint_area (GDisplay *, int, int, int, int);
@ -124,7 +123,7 @@ gdisplay_new (GImage *gimage,
gdisp->snap_to_guides = TRUE;
/* add the new display to the list so that it isn't lost */
display_list = append_to_list (display_list, (void *) gdisp);
display_list = g_slist_append (display_list, (void *) gdisp);
/* create the shell for the image */
create_display_shell (gdisp->ID, gimage->width, gimage->height,
@ -215,10 +214,10 @@ gdisplay_delete (GDisplay *gdisp)
}
static link_ptr
gdisplay_free_area_list (link_ptr list)
static GSList *
gdisplay_free_area_list (GSList *list)
{
link_ptr l = list;
GSList *l = list;
GArea *ga;
while (l)
@ -227,27 +226,27 @@ gdisplay_free_area_list (link_ptr list)
ga = (GArea *) l->data;
g_free (ga);
l = next_item (l);
l = g_slist_next (l);
}
if (list)
free_list (list);
g_slist_free (list);
return NULL;
}
static link_ptr
gdisplay_process_area_list (link_ptr list,
GArea *ga1)
static GSList *
gdisplay_process_area_list (GSList *list,
GArea *ga1)
{
link_ptr new_list;
link_ptr l = list;
GSList *new_list;
GSList *l = list;
int area1, area2, area3;
GArea *ga2;
/* start new list off */
new_list = add_to_list (NULL, ga1);
new_list = g_slist_prepend (NULL, ga1);
while (l)
{
/* process the data */
@ -258,7 +257,7 @@ gdisplay_process_area_list (link_ptr list,
(MAXIMUM (ga2->y2, ga1->y2) - MINIMUM (ga2->y1, ga1->y1)) + OVERHEAD;
if ((area1 + area2) < area3)
new_list = add_to_list (new_list, ga2);
new_list = g_slist_prepend (new_list, ga2);
else
{
ga1->x1 = MINIMUM (ga1->x1, ga2->x1);
@ -269,11 +268,11 @@ gdisplay_process_area_list (link_ptr list,
g_free (ga2);
}
l = next_item (l);
l = g_slist_next (l);
}
if (list)
free_list (list);
g_slist_free (list);
return new_list;
}
@ -282,8 +281,8 @@ gdisplay_process_area_list (link_ptr list,
void
gdisplay_flush (GDisplay *gdisp)
{
GArea * ga;
link_ptr list;
GArea *ga;
GSList *list;
/* Flush the items in the displays and updates lists--
* but only if gdisplay has been mapped and exposed
@ -300,7 +299,7 @@ gdisplay_flush (GDisplay *gdisp)
gdisplay_paint_area (gdisp, ga->x1, ga->y1,
(ga->x2 - ga->x1), (ga->y2 - ga->y1));
list = next_item (list);
list = g_slist_next (list);
}
/* Free the update lists */
gdisp->update_areas = gdisplay_free_area_list (gdisp->update_areas);
@ -320,7 +319,7 @@ gdisplay_flush (GDisplay *gdisp)
gdisplay_display_area (gdisp, ga->x1, ga->y1,
(ga->x2 - ga->x1), (ga->y2 - ga->y1));
list = next_item (list);
list = g_slist_next (list);
}
/* Free the update lists */
gdisp->display_areas = gdisplay_free_area_list (gdisp->display_areas);
@ -614,7 +613,7 @@ void
gdisplay_remove_and_delete (GDisplay *gdisp)
{
/* remove the display from the list */
display_list = remove_from_list (display_list, (void *) gdisp);
display_list = g_slist_remove (display_list, (void *) gdisp);
gdisplay_delete (gdisp);
}
@ -1130,7 +1129,7 @@ GDisplay *
gdisplay_get_ID (int ID)
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
/* Traverse the list of displays, returning the one that matches the ID */
/* If no display in the list is a match, return NULL. */
@ -1140,7 +1139,7 @@ gdisplay_get_ID (int ID)
if (gdisp->ID == ID)
return gdisp;
list = next_item (list);
list = g_slist_next (list);
}
return NULL;
@ -1151,7 +1150,7 @@ void
gdisplays_update_title (int ID)
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
char title [MAX_TITLE_BUF];
/* traverse the linked list of displays, handling each one */
@ -1165,7 +1164,7 @@ gdisplays_update_title (int ID)
gdk_window_set_title (gdisp->shell->window, title);
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1178,7 +1177,7 @@ gdisplays_update_area (int ID,
int h)
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
int x1, y1, x2, y2;
int count = 0;
@ -1202,7 +1201,7 @@ gdisplays_update_area (int ID,
count++;
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1212,7 +1211,7 @@ gdisplays_expose_guides (int ID)
{
GDisplay *gdisp;
GList *tmp_list;
link_ptr list;
GSList *list;
/* traverse the linked list of displays, handling each one */
list = display_list;
@ -1229,7 +1228,7 @@ gdisplays_expose_guides (int ID)
}
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1239,7 +1238,7 @@ gdisplays_expose_guide (int ID,
Guide *guide)
{
GDisplay *gdisp;
link_ptr list;
GSList *list;
/* traverse the linked list of displays, handling each one */
list = display_list;
@ -1249,7 +1248,7 @@ gdisplays_expose_guide (int ID,
if (gdisp->gimage->ID == ID)
gdisplay_expose_guide (gdisp, guide);
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1258,7 +1257,7 @@ void
gdisplays_update_full (int ID)
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
int count = 0;
/* traverse the linked list of displays, handling each one */
@ -1279,7 +1278,7 @@ gdisplays_update_full (int ID)
count++;
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1288,7 +1287,7 @@ void
gdisplays_shrink_wrap (int ID)
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
/* traverse the linked list of displays, handling each one */
while (list)
@ -1297,7 +1296,7 @@ gdisplays_shrink_wrap (int ID)
if (gdisp->gimage->ID == ID)
shrink_wrap_display (gdisp);
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1306,14 +1305,14 @@ void
gdisplays_expose_full ()
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
/* traverse the linked list of displays, handling each one */
while (list)
{
gdisp = (GDisplay *) list->data;
gdisplay_expose_full (gdisp);
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1323,7 +1322,7 @@ gdisplays_selection_visibility (int gimage_ID,
SelectionControl function)
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
int count = 0;
/* traverse the linked list of displays, handling each one */
@ -1353,7 +1352,7 @@ gdisplays_selection_visibility (int gimage_ID,
count++;
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1362,14 +1361,14 @@ int
gdisplays_dirty ()
{
int dirty = 0;
link_ptr list = display_list;
GSList *list = display_list;
/* traverse the linked list of displays */
while (list)
{
if (((GDisplay *) list->data)->gimage->dirty > 0)
dirty = 1;
list = next_item (list);
list = g_slist_next (list);
}
return dirty;
@ -1379,17 +1378,17 @@ gdisplays_dirty ()
void
gdisplays_delete ()
{
link_ptr list = display_list;
GSList *list = display_list;
/* traverse the linked list of displays */
while (list)
{
gdisplay_delete ((GDisplay *) list->data);
list = next_item (list);
list = g_slist_next (list);
}
/* free up linked list data */
free_list (display_list);
g_slist_free (display_list);
}
@ -1397,7 +1396,7 @@ void
gdisplays_flush ()
{
static int flushing = FALSE;
link_ptr list = display_list;
GSList *list = display_list;
/* no flushing necessary without an interface */
if (no_interface)
@ -1413,7 +1412,7 @@ gdisplays_flush ()
while (list)
{
gdisplay_flush ((GDisplay *) list->data);
list = next_item (list);
list = g_slist_next (list);
}
/* for convenience, we call the layers dialog flush here */

View File

@ -20,7 +20,6 @@
#include "gimage.h"
#include "info_dialog.h"
#include "linked.h"
#include "selection.h"
/*
@ -86,8 +85,8 @@ struct _GDisplay
GdkGC *scroll_gc; /* GC for scrolling */
link_ptr update_areas; /* Update areas list */
link_ptr display_areas; /* Display areas list */
GSList *update_areas; /* Update areas list */
GSList *display_areas; /* Display areas list */
GdkCursorType current_cursor; /* Currently installed cursor */
};

View File

@ -31,7 +31,6 @@
#include "gimprc.h"
#include "general.h"
#include "interface.h"
#include "linked.h"
#include "menus.h"
#include "tools.h"

View File

@ -179,8 +179,8 @@ layer_select_advance (LayerSelect *layer_select,
int index;
int length;
int count;
link_ptr list;
link_ptr nth;
GSList *list;
GSList *nth;
Layer *layer;
index = 0;
@ -197,17 +197,17 @@ layer_select_advance (LayerSelect *layer_select,
if (layer == layer_select->current_layer)
index = count;
count++;
list = next_item (list);
list = g_slist_next (list);
}
length = list_length (layer_select->gimage->layer_stack);
length = g_slist_length (layer_select->gimage->layer_stack);
if (dir == 1)
index = (index == length - 1) ? 0 : (index + 1);
else
index = (index == 0) ? (length - 1) : (index - 1);
nth = nth_item (layer_select->gimage->layer_stack, index);
nth = g_slist_nth (layer_select->gimage->layer_stack, index);
if (nth)
{

View File

@ -31,7 +31,6 @@
#include "gimprc.h"
#include "general.h"
#include "interface.h"
#include "linked.h"
#include "menus.h"
#include "tools.h"

View File

@ -161,7 +161,7 @@ edit_selection_button_release (Tool *tool,
GDisplay * gdisp;
Layer *layer;
Layer *floating_layer;
link_ptr layer_list;
GSList *layer_list;
gdisp = (GDisplay *) gdisp_ptr;
@ -223,7 +223,7 @@ edit_selection_button_release (Tool *tool,
if (layer == gdisp->gimage->active_layer ||
layer_linked (layer))
layer_translate (layer, (x - edit_select.origx), (y - edit_select.origy));
layer_list = next_item (layer_list);
layer_list = g_slist_next (layer_list);
}
if (floating_layer)
@ -296,7 +296,7 @@ edit_selection_draw (Tool *tool)
GdkSegment * seg;
Selection * select;
Layer *layer;
link_ptr layer_list;
GSList *layer_list;
int floating_sel;
int x1, y1, x2, y2;
int x3, y3, x4, y4;
@ -404,7 +404,7 @@ edit_selection_draw (Tool *tool)
if (y4 > y2)
y2 = y4;
}
layer_list = next_item (layer_list);
layer_list = g_slist_next (layer_list);
}
gdk_draw_rectangle (edit_select.core->win,
@ -485,7 +485,7 @@ edit_sel_arrow_keys_func (Tool *tool,
GDisplay *gdisp;
Layer *layer;
Layer *floating_layer;
link_ptr layer_list;
GSList *layer_list;
EditType edit_type;
layer = NULL;
@ -547,7 +547,7 @@ edit_sel_arrow_keys_func (Tool *tool,
layer = (Layer *) layer_list->data;
if (((layer) == gdisp->gimage->active_layer) || layer_linked (layer))
layer_translate (layer, inc_x, inc_y);
layer_list = next_item (layer_list);
layer_list = g_slist_next (layer_list);
}
if (floating_layer)

View File

@ -24,7 +24,6 @@
#include "free_select.h"
#include "gimage_mask.h"
#include "gdisplay.h"
#include "linked.h"
#include "rect_select.h"
typedef struct _free_select FreeSelect;
@ -80,38 +79,38 @@ add_point (int num_pts, int x, int y)
/* Routines to scan convert the polygon */
static link_ptr
insert_into_sorted_list (link_ptr list, int x)
static GSList *
insert_into_sorted_list (GSList *list, int x)
{
link_ptr orig = list;
link_ptr rest;
GSList *orig = list;
GSList *rest;
if (!list)
return add_to_list (list, (gpointer) ((long) x));
return g_slist_prepend (list, (gpointer) ((long) x));
while (list)
{
rest = next_item (list);
rest = g_slist_next (list);
if (x < (long) list->data)
{
rest = add_to_list (rest, list->data);
rest = g_slist_prepend (rest, list->data);
list->next = rest;
list->data = (gpointer) ((long) x);
return orig;
}
else if (!rest)
{
append_to_list (list, (gpointer) ((long) x));
g_slist_append (list, (gpointer) ((long) x));
return orig;
}
list = next_item (list);
list = g_slist_next (list);
}
return orig;
}
static void
convert_segment (link_ptr *scanlines, int width, int height,
convert_segment (GSList **scanlines, int width, int height,
int x1, int y1, int x2, int y2)
{
int ydiff, y, tmp;
@ -141,8 +140,8 @@ scan_convert (int gimage_ID, int num_pts, FreeSelectPoint *pts,
{
PixelRegion maskPR;
Channel * mask;
link_ptr * scanlines;
link_ptr list;
GSList **scanlines;
GSList *list;
unsigned char *buf, *b;
int * vals, val;
int start, end;
@ -166,7 +165,7 @@ scan_convert (int gimage_ID, int num_pts, FreeSelectPoint *pts,
vals = (int *) g_malloc (sizeof (int) * width);
}
scanlines = (link_ptr *) g_malloc (sizeof (link_ptr) * height);
scanlines = (GSList **) g_malloc (sizeof (GSList *) * height);
for (i = 0; i < height; i++)
scanlines[i] = NULL;
@ -211,7 +210,7 @@ scan_convert (int gimage_ID, int num_pts, FreeSelectPoint *pts,
while (list)
{
x = (long) list->data;
list = next_item(list);
list = g_slist_next(list);
if (!list)
warning ("Cannot properly scanline convert polygon!\n");
else
@ -230,7 +229,7 @@ scan_convert (int gimage_ID, int num_pts, FreeSelectPoint *pts,
for (j = 0; j < w; j++)
vals[j + x] += 255;
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -252,7 +251,7 @@ scan_convert (int gimage_ID, int num_pts, FreeSelectPoint *pts,
drawable_width (GIMP_DRAWABLE(mask)), buf);
}
free_list (scanlines[i]);
g_slist_free (scanlines[i]);
}
if (antialias)

View File

@ -35,7 +35,6 @@
#include "info_window.h"
#include "interface.h"
#include "layers_dialog.h"
#include "linked.h"
#include "menus.h"
#include "plug_in.h"
#include "scale.h"
@ -50,7 +49,7 @@
#define EPSILON 5
/* variable declarations */
link_ptr display_list = NULL;
GSList * display_list = NULL;
static int display_num = 1;
static GdkCursorType default_gdisplay_cursor = GDK_TOP_LEFT_ARROW;
@ -72,8 +71,8 @@ static char *image_type_strs[] =
/* Local functions */
static void gdisplay_format_title (GImage *, char *);
static void gdisplay_delete (GDisplay *);
static link_ptr gdisplay_free_area_list (link_ptr);
static link_ptr gdisplay_process_area_list(link_ptr, GArea *);
static GSList * gdisplay_free_area_list (GSList *);
static GSList * gdisplay_process_area_list(GSList *, GArea *);
static void gdisplay_add_update_area (GDisplay *, int, int, int, int);
static void gdisplay_add_display_area (GDisplay *, int, int, int, int);
static void gdisplay_paint_area (GDisplay *, int, int, int, int);
@ -124,7 +123,7 @@ gdisplay_new (GImage *gimage,
gdisp->snap_to_guides = TRUE;
/* add the new display to the list so that it isn't lost */
display_list = append_to_list (display_list, (void *) gdisp);
display_list = g_slist_append (display_list, (void *) gdisp);
/* create the shell for the image */
create_display_shell (gdisp->ID, gimage->width, gimage->height,
@ -215,10 +214,10 @@ gdisplay_delete (GDisplay *gdisp)
}
static link_ptr
gdisplay_free_area_list (link_ptr list)
static GSList *
gdisplay_free_area_list (GSList *list)
{
link_ptr l = list;
GSList *l = list;
GArea *ga;
while (l)
@ -227,27 +226,27 @@ gdisplay_free_area_list (link_ptr list)
ga = (GArea *) l->data;
g_free (ga);
l = next_item (l);
l = g_slist_next (l);
}
if (list)
free_list (list);
g_slist_free (list);
return NULL;
}
static link_ptr
gdisplay_process_area_list (link_ptr list,
GArea *ga1)
static GSList *
gdisplay_process_area_list (GSList *list,
GArea *ga1)
{
link_ptr new_list;
link_ptr l = list;
GSList *new_list;
GSList *l = list;
int area1, area2, area3;
GArea *ga2;
/* start new list off */
new_list = add_to_list (NULL, ga1);
new_list = g_slist_prepend (NULL, ga1);
while (l)
{
/* process the data */
@ -258,7 +257,7 @@ gdisplay_process_area_list (link_ptr list,
(MAXIMUM (ga2->y2, ga1->y2) - MINIMUM (ga2->y1, ga1->y1)) + OVERHEAD;
if ((area1 + area2) < area3)
new_list = add_to_list (new_list, ga2);
new_list = g_slist_prepend (new_list, ga2);
else
{
ga1->x1 = MINIMUM (ga1->x1, ga2->x1);
@ -269,11 +268,11 @@ gdisplay_process_area_list (link_ptr list,
g_free (ga2);
}
l = next_item (l);
l = g_slist_next (l);
}
if (list)
free_list (list);
g_slist_free (list);
return new_list;
}
@ -282,8 +281,8 @@ gdisplay_process_area_list (link_ptr list,
void
gdisplay_flush (GDisplay *gdisp)
{
GArea * ga;
link_ptr list;
GArea *ga;
GSList *list;
/* Flush the items in the displays and updates lists--
* but only if gdisplay has been mapped and exposed
@ -300,7 +299,7 @@ gdisplay_flush (GDisplay *gdisp)
gdisplay_paint_area (gdisp, ga->x1, ga->y1,
(ga->x2 - ga->x1), (ga->y2 - ga->y1));
list = next_item (list);
list = g_slist_next (list);
}
/* Free the update lists */
gdisp->update_areas = gdisplay_free_area_list (gdisp->update_areas);
@ -320,7 +319,7 @@ gdisplay_flush (GDisplay *gdisp)
gdisplay_display_area (gdisp, ga->x1, ga->y1,
(ga->x2 - ga->x1), (ga->y2 - ga->y1));
list = next_item (list);
list = g_slist_next (list);
}
/* Free the update lists */
gdisp->display_areas = gdisplay_free_area_list (gdisp->display_areas);
@ -614,7 +613,7 @@ void
gdisplay_remove_and_delete (GDisplay *gdisp)
{
/* remove the display from the list */
display_list = remove_from_list (display_list, (void *) gdisp);
display_list = g_slist_remove (display_list, (void *) gdisp);
gdisplay_delete (gdisp);
}
@ -1130,7 +1129,7 @@ GDisplay *
gdisplay_get_ID (int ID)
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
/* Traverse the list of displays, returning the one that matches the ID */
/* If no display in the list is a match, return NULL. */
@ -1140,7 +1139,7 @@ gdisplay_get_ID (int ID)
if (gdisp->ID == ID)
return gdisp;
list = next_item (list);
list = g_slist_next (list);
}
return NULL;
@ -1151,7 +1150,7 @@ void
gdisplays_update_title (int ID)
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
char title [MAX_TITLE_BUF];
/* traverse the linked list of displays, handling each one */
@ -1165,7 +1164,7 @@ gdisplays_update_title (int ID)
gdk_window_set_title (gdisp->shell->window, title);
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1178,7 +1177,7 @@ gdisplays_update_area (int ID,
int h)
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
int x1, y1, x2, y2;
int count = 0;
@ -1202,7 +1201,7 @@ gdisplays_update_area (int ID,
count++;
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1212,7 +1211,7 @@ gdisplays_expose_guides (int ID)
{
GDisplay *gdisp;
GList *tmp_list;
link_ptr list;
GSList *list;
/* traverse the linked list of displays, handling each one */
list = display_list;
@ -1229,7 +1228,7 @@ gdisplays_expose_guides (int ID)
}
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1239,7 +1238,7 @@ gdisplays_expose_guide (int ID,
Guide *guide)
{
GDisplay *gdisp;
link_ptr list;
GSList *list;
/* traverse the linked list of displays, handling each one */
list = display_list;
@ -1249,7 +1248,7 @@ gdisplays_expose_guide (int ID,
if (gdisp->gimage->ID == ID)
gdisplay_expose_guide (gdisp, guide);
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1258,7 +1257,7 @@ void
gdisplays_update_full (int ID)
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
int count = 0;
/* traverse the linked list of displays, handling each one */
@ -1279,7 +1278,7 @@ gdisplays_update_full (int ID)
count++;
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1288,7 +1287,7 @@ void
gdisplays_shrink_wrap (int ID)
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
/* traverse the linked list of displays, handling each one */
while (list)
@ -1297,7 +1296,7 @@ gdisplays_shrink_wrap (int ID)
if (gdisp->gimage->ID == ID)
shrink_wrap_display (gdisp);
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1306,14 +1305,14 @@ void
gdisplays_expose_full ()
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
/* traverse the linked list of displays, handling each one */
while (list)
{
gdisp = (GDisplay *) list->data;
gdisplay_expose_full (gdisp);
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1323,7 +1322,7 @@ gdisplays_selection_visibility (int gimage_ID,
SelectionControl function)
{
GDisplay *gdisp;
link_ptr list = display_list;
GSList *list = display_list;
int count = 0;
/* traverse the linked list of displays, handling each one */
@ -1353,7 +1352,7 @@ gdisplays_selection_visibility (int gimage_ID,
count++;
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1362,14 +1361,14 @@ int
gdisplays_dirty ()
{
int dirty = 0;
link_ptr list = display_list;
GSList *list = display_list;
/* traverse the linked list of displays */
while (list)
{
if (((GDisplay *) list->data)->gimage->dirty > 0)
dirty = 1;
list = next_item (list);
list = g_slist_next (list);
}
return dirty;
@ -1379,17 +1378,17 @@ gdisplays_dirty ()
void
gdisplays_delete ()
{
link_ptr list = display_list;
GSList *list = display_list;
/* traverse the linked list of displays */
while (list)
{
gdisplay_delete ((GDisplay *) list->data);
list = next_item (list);
list = g_slist_next (list);
}
/* free up linked list data */
free_list (display_list);
g_slist_free (display_list);
}
@ -1397,7 +1396,7 @@ void
gdisplays_flush ()
{
static int flushing = FALSE;
link_ptr list = display_list;
GSList *list = display_list;
/* no flushing necessary without an interface */
if (no_interface)
@ -1413,7 +1412,7 @@ gdisplays_flush ()
while (list)
{
gdisplay_flush ((GDisplay *) list->data);
list = next_item (list);
list = g_slist_next (list);
}
/* for convenience, we call the layers dialog flush here */

View File

@ -20,7 +20,6 @@
#include "gimage.h"
#include "info_dialog.h"
#include "linked.h"
#include "selection.h"
/*
@ -86,8 +85,8 @@ struct _GDisplay
GdkGC *scroll_gc; /* GC for scrolling */
link_ptr update_areas; /* Update areas list */
link_ptr display_areas; /* Display areas list */
GSList *update_areas; /* Update areas list */
GSList *display_areas; /* Display areas list */
GdkCursorType current_cursor; /* Currently installed cursor */
};

View File

@ -87,7 +87,7 @@ int valid_combinations[][MAX_CHANNELS + 1] =
* Static variables
*/
static int global_gimage_ID = 1;
link_ptr image_list = NULL;
GSList *image_list = NULL;
/* static functions */
@ -125,7 +125,7 @@ gimage_create (void)
gimage->comp_preview_valid[2] = FALSE;
gimage->comp_preview = NULL;
image_list = append_to_list (image_list, (void *) gimage);
image_list = g_slist_append (image_list, (void *) gimage);
return gimage;
}
@ -265,7 +265,7 @@ gimage_resize (GImage *gimage, int new_width, int new_height,
Channel *channel;
Layer *layer;
Layer *floating_layer;
link_ptr list;
GSList *list;
if (new_width <= 0 || new_height <= 0)
{
@ -295,7 +295,7 @@ gimage_resize (GImage *gimage, int new_width, int new_height,
{
channel = (Channel *) list->data;
channel_resize (channel, new_width, new_height, offset_x, offset_y);
list = next_item (list);
list = g_slist_next (list);
}
/* Don't forget the selection mask! */
@ -308,7 +308,7 @@ gimage_resize (GImage *gimage, int new_width, int new_height,
{
layer = (Layer *) list->data;
layer_translate (layer, offset_x, offset_y);
list = next_item (list);
list = g_slist_next (list);
}
/* Make sure the projection matches the gimage size */
@ -335,7 +335,7 @@ gimage_scale (GImage *gimage, int new_width, int new_height)
Channel *channel;
Layer *layer;
Layer *floating_layer;
link_ptr list;
GSList *list;
int old_width, old_height;
int layer_width, layer_height;
@ -363,7 +363,7 @@ gimage_scale (GImage *gimage, int new_width, int new_height)
{
channel = (Channel *) list->data;
channel_scale (channel, new_width, new_height);
list = next_item (list);
list = g_slist_next (list);
}
/* Don't forget the selection mask! */
@ -379,7 +379,7 @@ gimage_scale (GImage *gimage, int new_width, int new_height)
layer_width = (new_width * drawable_width (GIMP_DRAWABLE(layer))) / old_width;
layer_height = (new_height * drawable_height (GIMP_DRAWABLE(layer))) / old_height;
layer_scale (layer, layer_width, layer_height, FALSE);
list = next_item (list);
list = g_slist_next (list);
}
/* Make sure the projection matches the gimage size */
@ -403,7 +403,7 @@ gimage_scale (GImage *gimage, int new_width, int new_height)
GImage *
gimage_get_named (char *name)
{
link_ptr tmp = image_list;
GSList *tmp = image_list;
GImage *gimage;
char *str;
@ -414,7 +414,7 @@ gimage_get_named (char *name)
if (strcmp (str, name) == 0)
return gimage;
tmp = next_item (tmp);
tmp = g_slist_next (tmp);
}
return NULL;
@ -424,7 +424,7 @@ gimage_get_named (char *name)
GImage *
gimage_get_ID (int ID)
{
link_ptr tmp = image_list;
GSList *tmp = image_list;
GImage *gimage;
while (tmp)
@ -433,7 +433,7 @@ gimage_get_ID (int ID)
if (gimage->ID == ID)
return gimage;
tmp = next_item (tmp);
tmp = g_slist_next (tmp);
}
return NULL;
@ -479,7 +479,7 @@ gimage_delete (GImage *gimage)
undo_free (gimage);
/* remove this image from the global list */
image_list = remove_from_list (image_list, (void *) gimage);
image_list = g_slist_remove (image_list, (void *) gimage);
gimage_free_projection (gimage);
gimage_free_shadow (gimage);
@ -958,33 +958,33 @@ project_channel (GImage *gimage, Channel *channel,
static void
gimage_free_layers (GImage *gimage)
{
link_ptr list = gimage->layers;
GSList *list = gimage->layers;
Layer * layer;
while (list)
{
layer = (Layer *) list->data;
layer_delete (layer);
list = next_item (list);
list = g_slist_next (list);
}
free_list (gimage->layers);
free_list (gimage->layer_stack);
g_slist_free (gimage->layers);
g_slist_free (gimage->layer_stack);
}
static void
gimage_free_channels (GImage *gimage)
{
link_ptr list = gimage->channels;
GSList *list = gimage->channels;
Channel * channel;
while (list)
{
channel = (Channel *) list->data;
channel_delete (channel);
list = next_item (list);
list = g_slist_next (list);
}
free_list (gimage->channels);
g_slist_free (gimage->channels);
}
@ -995,8 +995,8 @@ gimage_construct_layers (GImage *gimage, int x, int y, int w, int h)
int x1, y1, x2, y2;
PixelRegion src1PR, src2PR, maskPR;
PixelRegion * mask;
link_ptr list = gimage->layers;
link_ptr reverse_list = NULL;
GSList *list = gimage->layers;
GSList *reverse_list = NULL;
int off_x, off_y;
/* composite the floating selection if it exists */
@ -1040,9 +1040,9 @@ gimage_construct_layers (GImage *gimage, int x, int y, int w, int h)
/* only add layers that are visible and not floating selections to the list */
if (!layer_is_floating_sel (layer) && drawable_visible (GIMP_DRAWABLE(layer)))
reverse_list = add_to_list (reverse_list, layer);
reverse_list = g_slist_prepend (reverse_list, layer);
list = next_item (list);
list = g_slist_next (list);
}
while (reverse_list)
@ -1109,10 +1109,10 @@ gimage_construct_layers (GImage *gimage, int x, int y, int w, int h)
}
gimage->construct_flag = 1; /* something was projected */
reverse_list = next_item (reverse_list);
reverse_list = g_slist_next (reverse_list);
}
free_list (reverse_list);
g_slist_free (reverse_list);
}
@ -1121,14 +1121,14 @@ gimage_construct_channels (GImage *gimage, int x, int y, int w, int h)
{
Channel * channel;
PixelRegion src1PR, src2PR;
link_ptr list = gimage->channels;
link_ptr reverse_list = NULL;
GSList *list = gimage->channels;
GSList *reverse_list = NULL;
/* reverse the channel list */
while (list)
{
reverse_list = add_to_list (reverse_list, list->data);
list = next_item (list);
reverse_list = g_slist_prepend (reverse_list, list->data);
list = g_slist_next (list);
}
while (reverse_list)
@ -1146,17 +1146,17 @@ gimage_construct_channels (GImage *gimage, int x, int y, int w, int h)
gimage->construct_flag = 1;
}
reverse_list = next_item (reverse_list);
reverse_list = g_slist_next (reverse_list);
}
free_list (reverse_list);
g_slist_free (reverse_list);
}
static void
gimage_initialize_projection (GImage *gimage, int x, int y, int w, int h)
{
link_ptr list;
GSList *list;
Layer *layer;
int coverage = 0;
PixelRegion PR;
@ -1180,7 +1180,7 @@ gimage_initialize_projection (GImage *gimage, int x, int y, int w, int h)
(off_y + drawable_height (GIMP_DRAWABLE(layer)) >= y + h))
coverage = 1;
list = next_item (list);
list = g_slist_next (list);
}
if (!coverage)
@ -1368,7 +1368,7 @@ int
gimage_get_layer_index (GImage *gimage, Layer *layer_arg)
{
Layer *layer;
link_ptr layers = gimage->layers;
GSList *layers = gimage->layers;
int index = 0;
while (layers)
@ -1378,7 +1378,7 @@ gimage_get_layer_index (GImage *gimage, Layer *layer_arg)
return index;
index++;
layers = next_item (layers);
layers = g_slist_next (layers);
}
return -1;
@ -1388,7 +1388,7 @@ int
gimage_get_channel_index (GImage *gimage, Channel *channel_ID)
{
Channel *channel;
link_ptr channels = gimage->channels;
GSList *channels = gimage->channels;
int index = 0;
while (channels)
@ -1398,7 +1398,7 @@ gimage_get_channel_index (GImage *gimage, Channel *channel_ID)
return index;
index++;
channels = next_item (channels);
channels = g_slist_next (channels);
}
return -1;
@ -1498,8 +1498,8 @@ gimage_set_active_layer (GImage *gimage, Layer * layer)
return NULL;
/* Configure the layer stack to reflect this change */
gimage->layer_stack = remove_from_list (gimage->layer_stack, (void *) layer);
gimage->layer_stack = add_to_list (gimage->layer_stack, (void *) layer);
gimage->layer_stack = g_slist_remove (gimage->layer_stack, (void *) layer);
gimage->layer_stack = g_slist_prepend (gimage->layer_stack, (void *) layer);
/* invalidate the selection boundary because of a layer modification */
layer_invalidate_boundary (layer);
@ -1600,7 +1600,7 @@ Layer *
gimage_pick_correlate_layer (GImage *gimage, int x, int y)
{
Layer *layer;
link_ptr list;
GSList *list;
list = gimage->layers;
while (list)
@ -1609,7 +1609,7 @@ gimage_pick_correlate_layer (GImage *gimage, int x, int y)
if (layer_pick_correlate (layer, x, y))
return layer;
list = next_item (list);
list = g_slist_next (list);
}
return NULL;
@ -1672,8 +1672,8 @@ gimage_raise_layer (GImage *gimage, Layer *layer_arg)
{
Layer *layer;
Layer *prev_layer;
link_ptr list;
link_ptr prev;
GSList *list;
GSList *prev;
int x1, y1, x2, y2;
int index = -1;
int off_x, off_y;
@ -1724,7 +1724,7 @@ gimage_raise_layer (GImage *gimage, Layer *layer_arg)
prev = list;
index++;
list = next_item (list);
list = g_slist_next (list);
}
return NULL;
@ -1736,8 +1736,8 @@ gimage_lower_layer (GImage *gimage, Layer *layer_arg)
{
Layer *layer;
Layer *next_layer;
link_ptr list;
link_ptr next;
GSList *list;
GSList *next;
int x1, y1, x2, y2;
int index = 0;
int off_x, off_y;
@ -1750,7 +1750,7 @@ gimage_lower_layer (GImage *gimage, Layer *layer_arg)
while (list)
{
layer = (Layer *) list->data;
next = next_item (list);
next = g_slist_next (list);
if (next)
next_layer = (Layer *) next->data;
@ -1801,8 +1801,8 @@ gimage_lower_layer (GImage *gimage, Layer *layer_arg)
Layer *
gimage_merge_visible_layers (GImage *gimage, MergeType merge_type)
{
link_ptr layer_list;
link_ptr merge_list = NULL;
GSList *layer_list;
GSList *merge_list = NULL;
Layer *layer;
layer_list = gimage->layers;
@ -1810,22 +1810,22 @@ gimage_merge_visible_layers (GImage *gimage, MergeType merge_type)
{
layer = (Layer *) layer_list->data;
if (drawable_visible (GIMP_DRAWABLE(layer)))
merge_list = append_to_list (merge_list, layer);
merge_list = g_slist_append (merge_list, layer);
layer_list = next_item (layer_list);
layer_list = g_slist_next (layer_list);
}
if (merge_list && merge_list->next)
{
layer = gimage_merge_layers (gimage, merge_list, merge_type);
free_list (merge_list);
g_slist_free (merge_list);
return layer;
}
else
{
message_box ("There are not enough visible layers for a merge.\nThere must be at least two.",
NULL, NULL);
free_list (merge_list);
g_slist_free (merge_list);
return NULL;
}
}
@ -1834,8 +1834,8 @@ gimage_merge_visible_layers (GImage *gimage, MergeType merge_type)
Layer *
gimage_flatten (GImage *gimage)
{
link_ptr layer_list;
link_ptr merge_list = NULL;
GSList *layer_list;
GSList *merge_list = NULL;
Layer *layer;
layer_list = gimage->layers;
@ -1843,21 +1843,21 @@ gimage_flatten (GImage *gimage)
{
layer = (Layer *) layer_list->data;
if (drawable_visible (GIMP_DRAWABLE(layer)))
merge_list = append_to_list (merge_list, layer);
merge_list = g_slist_append (merge_list, layer);
layer_list = next_item (layer_list);
layer_list = g_slist_next (layer_list);
}
layer = gimage_merge_layers (gimage, merge_list, FlattenImage);
free_list (merge_list);
g_slist_free (merge_list);
return layer;
}
Layer *
gimage_merge_layers (GImage *gimage, link_ptr merge_list, MergeType merge_type)
gimage_merge_layers (GImage *gimage, GSList *merge_list, MergeType merge_type)
{
link_ptr reverse_list = NULL;
GSList *reverse_list = NULL;
PixelRegion src1PR, src2PR, maskPR;
PixelRegion * mask;
Layer *merge_layer;
@ -1936,8 +1936,8 @@ gimage_merge_layers (GImage *gimage, link_ptr merge_list, MergeType merge_type)
}
count ++;
reverse_list = add_to_list (reverse_list, layer);
merge_list = next_item (merge_list);
reverse_list = g_slist_prepend (reverse_list, layer);
merge_list = g_slist_next (merge_list);
}
if ((x2 - x1) == 0 || (y2 - y1) == 0)
@ -2002,7 +2002,7 @@ gimage_merge_layers (GImage *gimage, link_ptr merge_list, MergeType merge_type)
* in order to add the final, merged layer to the layer list correctly
*/
layer = (Layer *) reverse_list->data;
position = list_length (gimage->layers) - gimage_get_layer_index (gimage, layer);
position = g_slist_length (gimage->layers) - gimage_get_layer_index (gimage, layer);
/* set the mode of the bottom layer to normal so that the contents
* aren't lost when merging with the all-alpha merge_layer
@ -2052,14 +2052,14 @@ gimage_merge_layers (GImage *gimage, link_ptr merge_list, MergeType merge_type)
layer->opacity, layer->mode, active, operation);
gimage_remove_layer (gimage, layer);
reverse_list = next_item (reverse_list);
reverse_list = g_slist_next (reverse_list);
}
/* Save old mode in undo */
if (bottom)
bottom -> mode = merge_layer -> mode;
free_list (reverse_list);
g_slist_free (reverse_list);
/* if the type is flatten, remove all the remaining layers */
if (merge_type == FlattenImage)
@ -2068,7 +2068,7 @@ gimage_merge_layers (GImage *gimage, link_ptr merge_list, MergeType merge_type)
while (merge_list)
{
layer = (Layer *) merge_list->data;
merge_list = next_item (merge_list);
merge_list = g_slist_next (merge_list);
gimage_remove_layer (gimage, layer);
}
@ -2077,7 +2077,7 @@ gimage_merge_layers (GImage *gimage, link_ptr merge_list, MergeType merge_type)
else
{
/* Add the layer to the gimage */
gimage_add_layer (gimage, merge_layer, (list_length (gimage->layers) - position + 1));
gimage_add_layer (gimage, merge_layer, (g_slist_length (gimage->layers) - position + 1));
}
/* End the merge undo group */
@ -2110,7 +2110,7 @@ gimage_add_layer (GImage *gimage, Layer *float_layer, int position)
}
{
link_ptr ll = gimage->layers;
GSList *ll = gimage->layers;
while (ll)
{
if (ll->data == float_layer)
@ -2118,7 +2118,7 @@ gimage_add_layer (GImage *gimage, Layer *float_layer, int position)
warning("gimage_add_layer: trying to add layer to image twice");
return NULL;
}
ll = next_item(ll);
ll = g_slist_next(ll);
}
}
@ -2147,11 +2147,11 @@ gimage_add_layer (GImage *gimage, Layer *float_layer, int position)
*/
if (gimage_floating_sel (gimage) && (gimage->floating_sel != float_layer) && position == 0)
position = 1;
gimage->layers = insert_in_list (gimage->layers, float_layer, position);
gimage->layers = g_slist_insert (gimage->layers, float_layer, position);
}
else
gimage->layers = add_to_list (gimage->layers, float_layer);
gimage->layer_stack = add_to_list (gimage->layer_stack, float_layer);
gimage->layers = g_slist_prepend (gimage->layers, float_layer);
gimage->layer_stack = g_slist_prepend (gimage->layer_stack, float_layer);
/* notify the layers dialog of the currently active layer */
gimage_set_active_layer (gimage, float_layer);
@ -2181,8 +2181,8 @@ gimage_remove_layer (GImage *gimage, Layer * layer)
lu->prev_layer = layer;
lu->undo_type = 1;
gimage->layers = remove_from_list (gimage->layers, layer);
gimage->layer_stack = remove_from_list (gimage->layer_stack, layer);
gimage->layers = g_slist_remove (gimage->layers, layer);
gimage->layer_stack = g_slist_remove (gimage->layer_stack, layer);
/* If this was the floating selection, reset the fs pointer */
if (gimage->floating_sel == layer)
@ -2312,8 +2312,8 @@ gimage_raise_channel (GImage *gimage, Channel * channel_arg)
{
Channel *channel;
Channel *prev_channel;
link_ptr list;
link_ptr prev;
GSList *list;
GSList *prev;
int index = -1;
list = gimage->channels;
@ -2344,7 +2344,7 @@ gimage_raise_channel (GImage *gimage, Channel * channel_arg)
prev = list;
index++;
list = next_item (list);
list = g_slist_next (list);
}
return NULL;
@ -2356,8 +2356,8 @@ gimage_lower_channel (GImage *gimage, Channel *channel_arg)
{
Channel *channel;
Channel *next_channel;
link_ptr list;
link_ptr next;
GSList *list;
GSList *next;
int index = 0;
list = gimage->channels;
@ -2366,7 +2366,7 @@ gimage_lower_channel (GImage *gimage, Channel *channel_arg)
while (list)
{
channel = (Channel *) list->data;
next = next_item (list);
next = g_slist_next (list);
if (next)
next_channel = (Channel *) next->data;
@ -2409,7 +2409,7 @@ gimage_add_channel (GImage *gimage, Channel *channel, int position)
}
{
link_ptr cc = gimage->channels;
GSList *cc = gimage->channels;
while (cc)
{
if (cc->data == channel)
@ -2417,7 +2417,7 @@ gimage_add_channel (GImage *gimage, Channel *channel, int position)
warning("gimage_add_channel: trying to add channel to image twice");
return NULL;
}
cc = next_item(cc);
cc = g_slist_next (cc);
}
}
@ -2431,7 +2431,7 @@ gimage_add_channel (GImage *gimage, Channel *channel, int position)
undo_push_channel (gimage, cu);
/* add the channel to the list */
gimage->channels = add_to_list (gimage->channels, channel);
gimage->channels = g_slist_prepend (gimage->channels, channel);
/* notify this gimage of the currently active channel */
gimage_set_active_channel (gimage, channel);
@ -2458,7 +2458,7 @@ gimage_remove_channel (GImage *gimage, Channel *channel)
cu->prev_channel = gimage->active_channel;
cu->undo_type = 1;
gimage->channels = remove_from_list (gimage->channels, channel);
gimage->channels = g_slist_remove (gimage->channels, channel);
if (gimage->active_channel == channel)
{
@ -2783,8 +2783,8 @@ gimage_construct_composite_preview (GImage *gimage, int width, int height)
TempBuf *comp;
TempBuf *layer_buf;
TempBuf *mask_buf;
link_ptr list = gimage->layers;
link_ptr reverse_list = NULL;
GSList *list = gimage->layers;
GSList *reverse_list = NULL;
double ratio;
int x, y, w, h;
int x1, y1, x2, y2;
@ -2819,9 +2819,9 @@ gimage_construct_composite_preview (GImage *gimage, int width, int height)
/* only add layers that are visible and not floating selections to the list */
if (!layer_is_floating_sel (layer) && drawable_visible (GIMP_DRAWABLE(layer)))
reverse_list = add_to_list (reverse_list, layer);
reverse_list = g_slist_prepend (reverse_list, layer);
list = next_item (list);
list = g_slist_next (list);
}
construct_flag = 0;
@ -2900,10 +2900,10 @@ gimage_construct_composite_preview (GImage *gimage, int width, int height)
construct_flag = 1;
reverse_list = next_item (reverse_list);
reverse_list = g_slist_next (reverse_list);
}
free_list (reverse_list);
g_slist_free (reverse_list);
return comp;
}
@ -2978,14 +2978,14 @@ gimage_invalidate_preview (GImage *gimage)
void
gimage_invalidate_previews (void)
{
link_ptr tmp = image_list;
GSList *tmp = image_list;
GImage *gimage;
while (tmp)
{
gimage = (GImage *) tmp->data;
gimage_invalidate_preview (gimage);
tmp = next_item (tmp);
tmp = g_slist_next (tmp);
}
}

View File

@ -22,7 +22,6 @@
#include "drawable.h"
#include "channel.h"
#include "layer.h"
#include "linked.h"
#include "paint_funcs.h"
#include "temp_buf.h"
#include "tile_manager.h"
@ -125,9 +124,9 @@ struct _GImage
GList *guides; /* guides */
/* Layer/Channel attributes */
link_ptr layers; /* the list of layers */
link_ptr channels; /* the list of masks */
link_ptr layer_stack; /* the layers in MRU order */
GSList *layers; /* the list of layers */
GSList *channels; /* the list of masks */
GSList *layer_stack; /* the layers in MRU order */
Layer * active_layer; /* ID of active layer */
Channel * active_channel; /* ID of active channel */
@ -141,8 +140,8 @@ struct _GImage
/* "by color" selection dialog */
/* Undo apparatus */
link_ptr undo_stack; /* stack for undo operations */
link_ptr redo_stack; /* stack for redo operations */
GSList *undo_stack; /* stack for undo operations */
GSList *redo_stack; /* stack for redo operations */
int undo_bytes; /* bytes in undo stack */
int undo_levels; /* levels in undo stack */
int pushing_undo_group; /* undo group status flag */
@ -204,7 +203,7 @@ Layer * gimage_raise_layer (GImage *, Layer *);
Layer * gimage_lower_layer (GImage *, Layer *);
Layer * gimage_merge_visible_layers (GImage *, MergeType);
Layer * gimage_flatten (GImage *);
Layer * gimage_merge_layers (GImage *, link_ptr, MergeType);
Layer * gimage_merge_layers (GImage *, GSList *, MergeType);
Layer * gimage_add_layer (GImage *, Layer *, int);
Layer * gimage_remove_layer (GImage *, Layer *);
LayerMask * gimage_add_layer_mask (GImage *, Layer *, LayerMask *);

View File

@ -33,7 +33,7 @@ static int int_value;
static int success;
static Argument *return_args;
extern link_ptr image_list;
extern GSList * image_list;
static GImage * duplicate (GImage *gimage);
@ -44,7 +44,7 @@ static Argument * channel_ops_duplicate_invoker (Argument *args);
static Argument *
gimage_list_images_invoker (Argument *args)
{
link_ptr list;
GSList *list;
int num_images;
int *image_ids;
Argument *return_args;
@ -55,7 +55,7 @@ gimage_list_images_invoker (Argument *args)
if (success)
{
list = image_list;
num_images = list_length (list);
num_images = g_slist_length (list);
image_ids = NULL;
if (num_images)
@ -64,7 +64,7 @@ gimage_list_images_invoker (Argument *args)
image_ids = (int *) g_malloc (sizeof (int) * num_images);
for (i = 0; i < num_images; i++, list = next_item (list))
for (i = 0; i < num_images; i++, list = g_slist_next (list))
image_ids[i] = ((GImage *) list->data)->ID;
}
@ -478,7 +478,7 @@ static Argument *
gimage_get_layers_invoker (Argument *args)
{
GImage *gimage;
link_ptr layer_list;
GSList *layer_list;
int num_layers;
int *layer_ids;
Argument *return_args;
@ -495,7 +495,7 @@ gimage_get_layers_invoker (Argument *args)
if (success)
{
layer_list = gimage->layers;
num_layers = list_length (layer_list);
num_layers = g_slist_length (layer_list);
layer_ids = NULL;
if (num_layers)
@ -504,7 +504,7 @@ gimage_get_layers_invoker (Argument *args)
layer_ids = (int *) g_malloc (sizeof (int) * num_layers);
for (i = 0; i < num_layers; i++, layer_list = next_item (layer_list))
for (i = 0; i < num_layers; i++, layer_list = g_slist_next (layer_list))
layer_ids[i] = drawable_ID (GIMP_DRAWABLE(((Layer *) layer_list->data)));
}
@ -568,7 +568,7 @@ gimage_get_channels_invoker (Argument *args)
GImage *gimage;
int num_channels;
int *channel_ids;
link_ptr channel_list;
GSList *channel_list;
Argument *return_args;
success = TRUE;
@ -583,7 +583,7 @@ gimage_get_channels_invoker (Argument *args)
if (success)
{
channel_list = gimage->channels;
num_channels = list_length (channel_list);
num_channels = g_slist_length (channel_list);
channel_ids = NULL;
if (num_channels)
@ -592,7 +592,7 @@ gimage_get_channels_invoker (Argument *args)
channel_ids = (int *) g_malloc (sizeof (int) * num_channels);
for (i = 0; i < num_channels; i++, channel_list = next_item (channel_list))
for (i = 0; i < num_channels; i++, channel_list = g_slist_next (channel_list))
channel_ids[i] = drawable_ID (GIMP_DRAWABLE(((Channel *) channel_list->data)));
}
@ -3223,7 +3223,7 @@ duplicate (GImage *gimage)
Layer *layer, *new_layer;
Layer *floating_layer;
Channel *channel, *new_channel;
link_ptr list;
GSList *list;
Layer *active_layer = NULL;
Channel *active_channel = NULL;
GimpDrawable *new_floating_sel_drawable = NULL;
@ -3250,7 +3250,7 @@ duplicate (GImage *gimage)
while (list)
{
layer = (Layer *) list->data;
list = next_item (list);
list = g_slist_next (list);
new_layer = layer_copy (layer, FALSE);
GIMP_DRAWABLE(new_layer)->gimage_ID = new_gimage->ID;
@ -3286,7 +3286,7 @@ duplicate (GImage *gimage)
while (list)
{
channel = (Channel *) list->data;
list = next_item (list);
list = g_slist_next (list);
new_channel = channel_copy (channel);

View File

@ -26,7 +26,6 @@
#include "errors.h"
#include "gimage_mask.h"
#include "layer.h"
#include "linked.h"
#include "paint_funcs.h"
#include "temp_buf.h"
#include "undo.h"
@ -412,7 +411,7 @@ channel_preview (Channel *channel, int width, int height)
void
channel_invalidate_previews (int gimage_id)
{
link_ptr tmp;
GSList * tmp;
Channel * channel;
GImage * gimage;
@ -425,7 +424,7 @@ channel_invalidate_previews (int gimage_id)
{
channel = (Channel *) tmp->data;
drawable_invalidate_preview (GIMP_DRAWABLE(channel));
tmp = next_item (tmp);
tmp = g_slist_next (tmp);
}
}

View File

@ -459,7 +459,7 @@ static GtkWidget *
build_palette_menu(int *default_palette){
GtkWidget *menu;
GtkWidget *menu_item;
link_ptr list;
GSList *list;
PaletteEntriesP entries;
int i;
@ -478,7 +478,7 @@ build_palette_menu(int *default_palette){
for(i=0,list = palette_entries_list,*default_palette=-1;
list;
i++,list = next_item (list))
i++,list = g_slist_next (list))
{
entries = (PaletteEntriesP) list->data;
/* fprintf(stderr, "(palette %s)\n", entries->filename);*/
@ -600,7 +600,7 @@ convert_image (GImage *gimage,
Layer *layer;
Layer *floating_layer;
int old_type;
link_ptr list;
GSList *list;
int new_layer_type;
int new_layer_bytes;
int has_alpha;
@ -656,7 +656,7 @@ convert_image (GImage *gimage,
while (list)
{
layer = (Layer *) list->data;
list = next_item (list);
list = g_slist_next (list);
if (old_type == GRAY)
generate_histogram_gray (quantobj->histogram, layer);
else
@ -722,7 +722,7 @@ convert_image (GImage *gimage,
while (list)
{
layer = (Layer *) list->data;
list = next_item (list);
list = g_slist_next (list);
has_alpha = layer_has_alpha (layer);
switch (new_type)
@ -2024,7 +2024,7 @@ static void
custompal_pass1 (QuantizeObj *quantobj)
{
int i;
link_ptr list;
GSList *list;
PaletteEntryP entry;
/* fprintf(stderr, "custompal_pass1: using (theCustomPalette %s) from (file %s)\n",
@ -2032,7 +2032,7 @@ custompal_pass1 (QuantizeObj *quantobj)
for (i=0,list=theCustomPalette->colors;
list;
i++,list=next_item(list))
i++,list=g_slist_next(list))
{
entry=(PaletteEntryP)list->data;
quantobj->cmap[i].red = entry->color[0];
@ -3036,7 +3036,7 @@ convert_indexed_palette_invoker (Argument *args)
if (success)
{
PaletteEntriesP entries, the_palette = NULL;
link_ptr list;
GSList *list;
palette_type = args[2].value.pdb_int;
switch(palette_type) {
@ -3057,7 +3057,7 @@ convert_indexed_palette_invoker (Argument *args)
if (!palette_entries_list) palette_init_palettes();
for(list = palette_entries_list;
list;
list = next_item(list)) {
list = g_slist_next(list)) {
entries = (PaletteEntriesP) list->data;
if (strcmp(palette_name, entries->name)==0) {
/* fprintf(stderr, "found it!\n"); */

View File

@ -31,7 +31,6 @@
#include "interface.h"
#include "layer.h"
#include "layers_dialog.h"
#include "linked.h"
#include "paint_funcs.h"
#include "temp_buf.h"
#include "undo.h"
@ -1119,7 +1118,7 @@ void
layer_invalidate_previews (gimage_id)
int gimage_id;
{
link_ptr tmp;
GSList * tmp;
Layer * layer;
GImage * gimage;
@ -1132,7 +1131,7 @@ layer_invalidate_previews (gimage_id)
{
layer = (Layer *) tmp->data;
drawable_invalidate_preview (GIMP_DRAWABLE(layer));
tmp = next_item (tmp);
tmp = g_slist_next (tmp);
}
}

View File

@ -18,7 +18,7 @@
#ifndef __GIMPRC_H__
#define __GIMPRC_H__
#include "linked.h"
#include <glib.h>
#include "procedural_db.h"
/* global gimprc variables */

View File

@ -27,7 +27,6 @@
#include "global_edit.h"
#include "interface.h"
#include "layer.h"
#include "linked.h"
#include "paint_funcs.h"
#include "tools.h"
#include "undo.h"
@ -57,7 +56,7 @@ struct _named_buffer
/* The named buffer list */
link_ptr named_buffers = NULL;
GSList * named_buffers = NULL;
/* The global edit buffer */
TileManager * global_buf = NULL;
@ -449,7 +448,7 @@ global_edit_free ()
static void
set_list_of_named_buffers (GtkWidget *list_widget)
{
link_ptr list;
GSList *list;
NamedBuffer *nb;
GtkWidget *list_item;
@ -459,7 +458,7 @@ set_list_of_named_buffers (GtkWidget *list_widget)
while (list)
{
nb = (NamedBuffer *) list->data;
list = next_item (list);
list = g_slist_next (list);
list_item = gtk_list_item_new_with_label (nb->name);
gtk_container_add (GTK_CONTAINER (list_widget), list_item);
@ -513,7 +512,7 @@ named_buffer_delete_foreach (GtkWidget *w,
{
pn_dlg = (PasteNamedDlg *) client_data;
nb = (NamedBuffer *) gtk_object_get_user_data (GTK_OBJECT (w));
named_buffers = remove_from_list (named_buffers, (void *) nb);
named_buffers = g_slist_remove (named_buffers, (void *) nb);
g_free (nb->name);
tile_manager_destroy (nb->buf);
g_free (nb);
@ -653,7 +652,7 @@ new_named_buffer_callback (GtkWidget *w,
copy_region (&srcPR, &destPR);
nb->name = g_strdup ((char *) call_data);
named_buffers = append_to_list (named_buffers, (void *) nb);
named_buffers = g_slist_append (named_buffers, (void *) nb);
}
static void
@ -717,7 +716,7 @@ named_edit_paste (void *gdisp_ptr)
void
named_buffers_free ()
{
link_ptr list;
GSList *list;
NamedBuffer * nb;
list = named_buffers;
@ -728,9 +727,9 @@ named_buffers_free ()
tile_manager_destroy (nb->buf);
g_free (nb->name);
g_free (nb);
list = next_item (list);
list = g_slist_next (list);
}
free_list (named_buffers);
g_slist_free (named_buffers);
named_buffers = NULL;
}

View File

@ -157,7 +157,6 @@
#include "gimprc.h"
#include "gradient.h"
#include "interface.h"
#include "linked.h"
#include "palette.h"
@ -556,7 +555,7 @@ static Argument *gradients_sample_custom_invoker(Argument *args);
/***** Local variables *****/
static int num_gradients = 0;
static link_ptr gradients_list = NULL; /* The list of gradients */
static GSList *gradients_list = NULL; /* The list of gradients */
static gradient_t *curr_gradient = NULL; /* The active gradient */
static gradient_t *grad_default_gradient = NULL;
@ -1088,7 +1087,7 @@ ed_set_hint(char *str)
static void
ed_set_list_of_gradients(void)
{
link_ptr list;
GSList *list;
gradient_t *grad;
int n;
@ -1103,7 +1102,7 @@ ed_set_list_of_gradients(void)
else
ed_insert_in_gradients_listbox(grad, n, 0);
list = next_item(list);
list = g_slist_next(list);
n++;
} /* while */
} /* ed_set_list_of_gradients */
@ -1436,7 +1435,7 @@ static void
ed_do_delete_gradient_callback(GtkWidget *widget, gpointer client_data)
{
GList *list;
link_ptr tmp;
GSList *tmp;
int n;
gradient_t *g;
GtkWidget *list_item;
@ -1460,7 +1459,7 @@ ed_do_delete_gradient_callback(GtkWidget *widget, gpointer client_data)
} /* if */
n++; /* Next gradient */
tmp = next_item(tmp);
tmp = g_slist_next(tmp);
} /* while */
if (tmp == NULL)
@ -1470,7 +1469,7 @@ ed_do_delete_gradient_callback(GtkWidget *widget, gpointer client_data)
list_item = curr_gradient->list_item; /* Remember list item to delete it later */
gradients_list = remove_from_list(gradients_list, curr_gradient);
gradients_list = g_slist_remove(gradients_list, curr_gradient);
/* Delete file and free gradient */
@ -1484,7 +1483,7 @@ ed_do_delete_gradient_callback(GtkWidget *widget, gpointer client_data)
/* Select new gradient */
curr_gradient = nth_item(gradients_list, n)->data;
curr_gradient = g_slist_nth(gradients_list, n)->data;
gtk_list_select_item(GTK_LIST(g_editor->list), n);
/* Update! */
@ -1531,13 +1530,13 @@ ed_save_pov_callback(GtkWidget *widget, gpointer client_data)
static void
ed_refresh_callback(GtkWidget *widget, gpointer client_data)
{
link_ptr node;
GSList *node;
gradient_t *grad;
GList *list;
list = NULL;
for (node = gradients_list; node; node = next_item(node)) {
for (node = gradients_list; node; node = g_slist_next(node)) {
grad = node->data;
list = g_list_append(list, grad->list_item);
}
@ -5054,7 +5053,7 @@ grad_free_gradient(gradient_t *grad)
static void
grad_free_gradients(void)
{
link_ptr node;
GSList *node;
gradient_t *grad;
node = gradients_list;
@ -5069,10 +5068,10 @@ grad_free_gradients(void)
grad_free_gradient(grad);
node = next_item(node);
node = g_slist_next(node);
} /* while */
free_list(gradients_list);
g_slist_free(gradients_list);
num_gradients = 0;
gradients_list = NULL;
@ -5236,7 +5235,7 @@ grad_create_default_gradient(void)
static int
grad_insert_in_gradients_list(gradient_t *grad)
{
link_ptr tmp;
GSList *tmp;
gradient_t *g;
int n;
@ -5254,11 +5253,11 @@ grad_insert_in_gradients_list(gradient_t *grad)
break; /* We found the one we want */
n++;
tmp = next_item(tmp);
tmp = g_slist_next(tmp);
} /* while */
num_gradients++;
gradients_list = insert_in_list(gradients_list, grad, n);
gradients_list = g_slist_insert(gradients_list, grad, n);
return n;
} /* grad_insert_in_gradients_list */
@ -5731,7 +5730,7 @@ gradients_get_list_invoker(Argument *args)
{
Argument *return_args;
gradient_t *grad;
link_ptr list;
GSList *list;
char **gradients;
int i;
int success;
@ -5747,7 +5746,7 @@ gradients_get_list_invoker(Argument *args)
while (list) {
grad = list->data;
gradients[i++] = g_strdup(grad->name);
list = next_item(list);
list = g_slist_next(list);
} /* while */
return_args = procedural_db_return_args(&gradients_get_list_proc, success);
@ -5857,7 +5856,7 @@ Argument *
gradients_set_active_invoker(Argument *args)
{
char *name;
link_ptr list;
GSList *list;
gradient_t *grad;
int success;
@ -5890,7 +5889,7 @@ gradients_set_active_invoker(Argument *args)
break;
} /* if */
list = next_item(list);
list = g_slist_next(list);
} /* while */
} /* if */

View File

@ -157,7 +157,6 @@
#include "gimprc.h"
#include "gradient.h"
#include "interface.h"
#include "linked.h"
#include "palette.h"
@ -556,7 +555,7 @@ static Argument *gradients_sample_custom_invoker(Argument *args);
/***** Local variables *****/
static int num_gradients = 0;
static link_ptr gradients_list = NULL; /* The list of gradients */
static GSList *gradients_list = NULL; /* The list of gradients */
static gradient_t *curr_gradient = NULL; /* The active gradient */
static gradient_t *grad_default_gradient = NULL;
@ -1088,7 +1087,7 @@ ed_set_hint(char *str)
static void
ed_set_list_of_gradients(void)
{
link_ptr list;
GSList *list;
gradient_t *grad;
int n;
@ -1103,7 +1102,7 @@ ed_set_list_of_gradients(void)
else
ed_insert_in_gradients_listbox(grad, n, 0);
list = next_item(list);
list = g_slist_next(list);
n++;
} /* while */
} /* ed_set_list_of_gradients */
@ -1436,7 +1435,7 @@ static void
ed_do_delete_gradient_callback(GtkWidget *widget, gpointer client_data)
{
GList *list;
link_ptr tmp;
GSList *tmp;
int n;
gradient_t *g;
GtkWidget *list_item;
@ -1460,7 +1459,7 @@ ed_do_delete_gradient_callback(GtkWidget *widget, gpointer client_data)
} /* if */
n++; /* Next gradient */
tmp = next_item(tmp);
tmp = g_slist_next(tmp);
} /* while */
if (tmp == NULL)
@ -1470,7 +1469,7 @@ ed_do_delete_gradient_callback(GtkWidget *widget, gpointer client_data)
list_item = curr_gradient->list_item; /* Remember list item to delete it later */
gradients_list = remove_from_list(gradients_list, curr_gradient);
gradients_list = g_slist_remove(gradients_list, curr_gradient);
/* Delete file and free gradient */
@ -1484,7 +1483,7 @@ ed_do_delete_gradient_callback(GtkWidget *widget, gpointer client_data)
/* Select new gradient */
curr_gradient = nth_item(gradients_list, n)->data;
curr_gradient = g_slist_nth(gradients_list, n)->data;
gtk_list_select_item(GTK_LIST(g_editor->list), n);
/* Update! */
@ -1531,13 +1530,13 @@ ed_save_pov_callback(GtkWidget *widget, gpointer client_data)
static void
ed_refresh_callback(GtkWidget *widget, gpointer client_data)
{
link_ptr node;
GSList *node;
gradient_t *grad;
GList *list;
list = NULL;
for (node = gradients_list; node; node = next_item(node)) {
for (node = gradients_list; node; node = g_slist_next(node)) {
grad = node->data;
list = g_list_append(list, grad->list_item);
}
@ -5054,7 +5053,7 @@ grad_free_gradient(gradient_t *grad)
static void
grad_free_gradients(void)
{
link_ptr node;
GSList *node;
gradient_t *grad;
node = gradients_list;
@ -5069,10 +5068,10 @@ grad_free_gradients(void)
grad_free_gradient(grad);
node = next_item(node);
node = g_slist_next(node);
} /* while */
free_list(gradients_list);
g_slist_free(gradients_list);
num_gradients = 0;
gradients_list = NULL;
@ -5236,7 +5235,7 @@ grad_create_default_gradient(void)
static int
grad_insert_in_gradients_list(gradient_t *grad)
{
link_ptr tmp;
GSList *tmp;
gradient_t *g;
int n;
@ -5254,11 +5253,11 @@ grad_insert_in_gradients_list(gradient_t *grad)
break; /* We found the one we want */
n++;
tmp = next_item(tmp);
tmp = g_slist_next(tmp);
} /* while */
num_gradients++;
gradients_list = insert_in_list(gradients_list, grad, n);
gradients_list = g_slist_insert(gradients_list, grad, n);
return n;
} /* grad_insert_in_gradients_list */
@ -5731,7 +5730,7 @@ gradients_get_list_invoker(Argument *args)
{
Argument *return_args;
gradient_t *grad;
link_ptr list;
GSList *list;
char **gradients;
int i;
int success;
@ -5747,7 +5746,7 @@ gradients_get_list_invoker(Argument *args)
while (list) {
grad = list->data;
gradients[i++] = g_strdup(grad->name);
list = next_item(list);
list = g_slist_next(list);
} /* while */
return_args = procedural_db_return_args(&gradients_get_list_proc, success);
@ -5857,7 +5856,7 @@ Argument *
gradients_set_active_invoker(Argument *args)
{
char *name;
link_ptr list;
GSList *list;
gradient_t *grad;
int success;
@ -5890,7 +5889,7 @@ gradients_set_active_invoker(Argument *args)
break;
} /* if */
list = next_item(list);
list = g_slist_next(list);
} /* while */
} /* if */

View File

@ -468,7 +468,7 @@ display_setup (BrushSelectP bsp)
static void
display_brushes (BrushSelectP bsp)
{
link_ptr list = brush_list; /* the global brush list */
GSList * list = brush_list; /* the global brush list */
int row, col;
GBrushP brush;
@ -500,7 +500,7 @@ display_brushes (BrushSelectP bsp)
col = 0;
}
list = next_item (list);
list = g_slist_next (list);
}
}

View File

@ -94,7 +94,7 @@ struct _ChannelsDialog {
int gimage_id;
Channel * active_channel;
Layer *floating_sel;
link_ptr channel_widgets;
GSList *channel_widgets;
};
/* channels dialog widget routines */
@ -230,7 +230,7 @@ channels_dialog_flush ()
GImage *gimage;
Channel *channel;
ChannelWidget *cw;
link_ptr list;
GSList *list;
int gimage_pos;
int pos;
@ -255,7 +255,7 @@ channels_dialog_flush ()
{
cw = (ChannelWidget *) list->data;
cw->visited = FALSE;
list = next_item (list);
list = g_slist_next (list);
}
/* Add any missing channels */
@ -271,7 +271,7 @@ channels_dialog_flush ()
else
cw->visited = TRUE;
list = next_item (list);
list = g_slist_next (list);
}
/* Remove any extraneous auxillary channels */
@ -279,7 +279,7 @@ channels_dialog_flush ()
while (list)
{
cw = (ChannelWidget *) list->data;
list = next_item (list);
list = g_slist_next (list);
if (cw->visited == FALSE && cw->type == Auxillary)
/* will only be true for auxillary channels */
@ -292,7 +292,7 @@ channels_dialog_flush ()
while (list)
{
cw = (ChannelWidget *) list->data;
list = next_item (list);
list = g_slist_next (list);
if (cw->type == Auxillary)
if ((gimage_pos = gimage_get_channel_index (gimage, cw->channel)) != pos)
@ -326,7 +326,7 @@ channels_dialog_update (int gimage_id)
ChannelWidget *cw;
GImage *gimage;
Channel *channel;
link_ptr list;
GSList *list;
GList *item_list;
if (!channelsD)
@ -345,7 +345,7 @@ channels_dialog_update (int gimage_id)
while (list)
{
cw = (ChannelWidget *) list->data;
list = next_item(list);
list = g_slist_next (list);
channel_widget_delete (cw);
}
channelsD->channel_widgets = NULL;
@ -365,17 +365,17 @@ channels_dialog_update (int gimage_id)
{
case RGB:
cw = create_channel_widget (gimage, NULL, Red);
channelsD->channel_widgets = append_to_list (channelsD->channel_widgets, cw);
channelsD->channel_widgets = g_slist_append (channelsD->channel_widgets, cw);
item_list = g_list_append (item_list, cw->list_item);
channelsD->components[0] = Red;
cw = create_channel_widget (gimage, NULL, Green);
channelsD->channel_widgets = append_to_list (channelsD->channel_widgets, cw);
channelsD->channel_widgets = g_slist_append (channelsD->channel_widgets, cw);
item_list = g_list_append (item_list, cw->list_item);
channelsD->components[1] = Green;
cw = create_channel_widget (gimage, NULL, Blue);
channelsD->channel_widgets = append_to_list (channelsD->channel_widgets, cw);
channelsD->channel_widgets = g_slist_append (channelsD->channel_widgets, cw);
item_list = g_list_append (item_list, cw->list_item);
channelsD->components[2] = Blue;
@ -384,7 +384,7 @@ channels_dialog_update (int gimage_id)
case GRAY:
cw = create_channel_widget (gimage, NULL, Gray);
channelsD->channel_widgets = append_to_list (channelsD->channel_widgets, cw);
channelsD->channel_widgets = g_slist_append (channelsD->channel_widgets, cw);
item_list = g_list_append (item_list, cw->list_item);
channelsD->components[0] = Gray;
@ -393,7 +393,7 @@ channels_dialog_update (int gimage_id)
case INDEXED:
cw = create_channel_widget (gimage, NULL, Indexed);
channelsD->channel_widgets = append_to_list (channelsD->channel_widgets, cw);
channelsD->channel_widgets = g_slist_append (channelsD->channel_widgets, cw);
item_list = g_list_append (item_list, cw->list_item);
channelsD->components[0] = Indexed;
@ -408,10 +408,10 @@ channels_dialog_update (int gimage_id)
/* create a channel list item */
channel = (Channel *) list->data;
cw = create_channel_widget (gimage, channel, Auxillary);
channelsD->channel_widgets = append_to_list (channelsD->channel_widgets, cw);
channelsD->channel_widgets = g_slist_append (channelsD->channel_widgets, cw);
item_list = g_list_append (item_list, cw->list_item);
list = next_item (list);
list = g_slist_next (list);
}
/* get the index of the active channel */
@ -431,7 +431,7 @@ channels_dialog_clear ()
void
channels_dialog_free ()
{
link_ptr list;
GSList *list;
ChannelWidget *cw;
if (channelsD == NULL)
@ -446,7 +446,7 @@ channels_dialog_free ()
while (list)
{
cw = (ChannelWidget *) list->data;
list = next_item(list);
list = g_slist_next (list);
channel_widget_delete (cw);
}
channelsD->channel_widgets = NULL;
@ -677,7 +677,7 @@ channels_dialog_add_channel (Channel *channel)
item_list = g_list_append (item_list, channel_widget->list_item);
position = gimage_get_channel_index (gimage, channel);
channelsD->channel_widgets = insert_in_list (channelsD->channel_widgets, channel_widget,
channelsD->channel_widgets = g_slist_insert (channelsD->channel_widgets, channel_widget,
position + channelsD->num_components);
gtk_list_insert_items (GTK_LIST (channelsD->channel_list), item_list,
position + channelsD->num_components);
@ -920,7 +920,7 @@ static ChannelWidget *
channel_widget_get_ID (Channel *channel)
{
ChannelWidget *lw;
link_ptr list;
GSList *list;
if (!channelsD)
return NULL;
@ -933,7 +933,7 @@ channel_widget_get_ID (Channel *channel)
if (lw->channel == channel)
return lw;
list = next_item(list);
list = g_slist_next (list);
}
return NULL;
@ -1042,7 +1042,7 @@ channel_widget_delete (ChannelWidget *channel_widget)
gdk_pixmap_unref (channel_widget->channel_pixmap);
/* Remove the channel widget from the list */
channelsD->channel_widgets = remove_from_list (channelsD->channel_widgets, channel_widget);
channelsD->channel_widgets = g_slist_remove (channelsD->channel_widgets, channel_widget);
/* Free the widget */
g_free (channel_widget);
@ -1476,7 +1476,7 @@ channel_widget_eye_redraw (ChannelWidget *channel_widget)
static void
channel_widget_exclusive_visible (ChannelWidget *channel_widget)
{
link_ptr list;
GSList *list;
ChannelWidget *cw;
int visible = FALSE;
@ -1501,7 +1501,7 @@ channel_widget_exclusive_visible (ChannelWidget *channel_widget)
}
}
list = next_item (list);
list = g_slist_next (list);
}
/* Now, toggle the visibility for all channels except the specified one */
@ -1532,7 +1532,7 @@ channel_widget_exclusive_visible (ChannelWidget *channel_widget)
channel_widget_eye_redraw (cw);
list = next_item (list);
list = g_slist_next (list);
}
}

View File

@ -157,7 +157,6 @@
#include "gimprc.h"
#include "gradient.h"
#include "interface.h"
#include "linked.h"
#include "palette.h"
@ -556,7 +555,7 @@ static Argument *gradients_sample_custom_invoker(Argument *args);
/***** Local variables *****/
static int num_gradients = 0;
static link_ptr gradients_list = NULL; /* The list of gradients */
static GSList *gradients_list = NULL; /* The list of gradients */
static gradient_t *curr_gradient = NULL; /* The active gradient */
static gradient_t *grad_default_gradient = NULL;
@ -1088,7 +1087,7 @@ ed_set_hint(char *str)
static void
ed_set_list_of_gradients(void)
{
link_ptr list;
GSList *list;
gradient_t *grad;
int n;
@ -1103,7 +1102,7 @@ ed_set_list_of_gradients(void)
else
ed_insert_in_gradients_listbox(grad, n, 0);
list = next_item(list);
list = g_slist_next(list);
n++;
} /* while */
} /* ed_set_list_of_gradients */
@ -1436,7 +1435,7 @@ static void
ed_do_delete_gradient_callback(GtkWidget *widget, gpointer client_data)
{
GList *list;
link_ptr tmp;
GSList *tmp;
int n;
gradient_t *g;
GtkWidget *list_item;
@ -1460,7 +1459,7 @@ ed_do_delete_gradient_callback(GtkWidget *widget, gpointer client_data)
} /* if */
n++; /* Next gradient */
tmp = next_item(tmp);
tmp = g_slist_next(tmp);
} /* while */
if (tmp == NULL)
@ -1470,7 +1469,7 @@ ed_do_delete_gradient_callback(GtkWidget *widget, gpointer client_data)
list_item = curr_gradient->list_item; /* Remember list item to delete it later */
gradients_list = remove_from_list(gradients_list, curr_gradient);
gradients_list = g_slist_remove(gradients_list, curr_gradient);
/* Delete file and free gradient */
@ -1484,7 +1483,7 @@ ed_do_delete_gradient_callback(GtkWidget *widget, gpointer client_data)
/* Select new gradient */
curr_gradient = nth_item(gradients_list, n)->data;
curr_gradient = g_slist_nth(gradients_list, n)->data;
gtk_list_select_item(GTK_LIST(g_editor->list), n);
/* Update! */
@ -1531,13 +1530,13 @@ ed_save_pov_callback(GtkWidget *widget, gpointer client_data)
static void
ed_refresh_callback(GtkWidget *widget, gpointer client_data)
{
link_ptr node;
GSList *node;
gradient_t *grad;
GList *list;
list = NULL;
for (node = gradients_list; node; node = next_item(node)) {
for (node = gradients_list; node; node = g_slist_next(node)) {
grad = node->data;
list = g_list_append(list, grad->list_item);
}
@ -5054,7 +5053,7 @@ grad_free_gradient(gradient_t *grad)
static void
grad_free_gradients(void)
{
link_ptr node;
GSList *node;
gradient_t *grad;
node = gradients_list;
@ -5069,10 +5068,10 @@ grad_free_gradients(void)
grad_free_gradient(grad);
node = next_item(node);
node = g_slist_next(node);
} /* while */
free_list(gradients_list);
g_slist_free(gradients_list);
num_gradients = 0;
gradients_list = NULL;
@ -5236,7 +5235,7 @@ grad_create_default_gradient(void)
static int
grad_insert_in_gradients_list(gradient_t *grad)
{
link_ptr tmp;
GSList *tmp;
gradient_t *g;
int n;
@ -5254,11 +5253,11 @@ grad_insert_in_gradients_list(gradient_t *grad)
break; /* We found the one we want */
n++;
tmp = next_item(tmp);
tmp = g_slist_next(tmp);
} /* while */
num_gradients++;
gradients_list = insert_in_list(gradients_list, grad, n);
gradients_list = g_slist_insert(gradients_list, grad, n);
return n;
} /* grad_insert_in_gradients_list */
@ -5731,7 +5730,7 @@ gradients_get_list_invoker(Argument *args)
{
Argument *return_args;
gradient_t *grad;
link_ptr list;
GSList *list;
char **gradients;
int i;
int success;
@ -5747,7 +5746,7 @@ gradients_get_list_invoker(Argument *args)
while (list) {
grad = list->data;
gradients[i++] = g_strdup(grad->name);
list = next_item(list);
list = g_slist_next(list);
} /* while */
return_args = procedural_db_return_args(&gradients_get_list_proc, success);
@ -5857,7 +5856,7 @@ Argument *
gradients_set_active_invoker(Argument *args)
{
char *name;
link_ptr list;
GSList *list;
gradient_t *grad;
int success;
@ -5890,7 +5889,7 @@ gradients_set_active_invoker(Argument *args)
break;
} /* if */
list = next_item(list);
list = g_slist_next(list);
} /* while */
} /* if */

View File

@ -122,7 +122,7 @@ info_dialog_new (char *title)
void
info_dialog_free (InfoDialog *idialog)
{
link_ptr list;
GSList *list;
if (!idialog)
return;
@ -133,11 +133,11 @@ info_dialog_free (InfoDialog *idialog)
while (list)
{
g_free (list->data);
list = next_item (list);
list = g_slist_next (list);
}
/* Free the actual field linked list */
free_list (idialog->field_list);
g_slist_free (idialog->field_list);
/* Destroy the associated widgets */
gtk_widget_destroy (idialog->shell);
@ -157,7 +157,7 @@ info_dialog_add_field (InfoDialog *idialog,
return;
new_field = info_field_new (idialog, title, text_ptr);
idialog->field_list = add_to_list (idialog->field_list, (void *) new_field);
idialog->field_list = g_slist_prepend (idialog->field_list, (void *) new_field);
}
void
@ -183,7 +183,7 @@ info_dialog_popdown (InfoDialog *idialog)
void
info_dialog_update (InfoDialog *idialog)
{
link_ptr list;
GSList *list;
if (!idialog)
return;
@ -193,7 +193,7 @@ info_dialog_update (InfoDialog *idialog)
while (list)
{
update_field ((InfoField *) list->data);
list = next_item (list);
list = g_slist_next (list);
}
}

View File

@ -19,7 +19,6 @@
#define __INFO_DIALOG_H__
#include "gtk/gtk.h"
#include "linked.h"
typedef struct _info_field InfoField;
@ -40,7 +39,7 @@ struct _info_dialog
GtkWidget *labels;
GtkWidget *values;
link_ptr field_list;
GSList *field_list;
void *user_data;
};

View File

@ -179,8 +179,8 @@ layer_select_advance (LayerSelect *layer_select,
int index;
int length;
int count;
link_ptr list;
link_ptr nth;
GSList *list;
GSList *nth;
Layer *layer;
index = 0;
@ -197,17 +197,17 @@ layer_select_advance (LayerSelect *layer_select,
if (layer == layer_select->current_layer)
index = count;
count++;
list = next_item (list);
list = g_slist_next (list);
}
length = list_length (layer_select->gimage->layer_stack);
length = g_slist_length (layer_select->gimage->layer_stack);
if (dir == 1)
index = (index == length - 1) ? 0 : (index + 1);
else
index = (index == 0) ? (length - 1) : (index - 1);
nth = nth_item (layer_select->gimage->layer_stack, index);
nth = g_slist_nth (layer_select->gimage->layer_stack, index);
if (nth)
{

View File

@ -87,7 +87,7 @@ struct _LayersDialog {
Layer * active_layer;
Channel * active_channel;
Layer * floating_sel;
link_ptr layer_widgets;
GSList * layer_widgets;
};
typedef struct _LayerWidget LayerWidget;
@ -445,7 +445,7 @@ layers_dialog_flush ()
GImage *gimage;
Layer *layer;
LayerWidget *lw;
link_ptr list;
GSList *list;
int gimage_pos;
int pos;
@ -469,7 +469,7 @@ layers_dialog_flush ()
{
lw = (LayerWidget *) list->data;
lw->visited = FALSE;
list = next_item (list);
list = g_slist_next (list);
}
/* Add any missing layers */
@ -485,7 +485,7 @@ layers_dialog_flush ()
else
lw->visited = TRUE;
list = next_item (list);
list = g_slist_next (list);
}
/* Remove any extraneous layers */
@ -493,7 +493,7 @@ layers_dialog_flush ()
while (list)
{
lw = (LayerWidget *) list->data;
list = next_item (list);
list = g_slist_next (list);
if (lw->visited == FALSE)
layers_dialog_remove_layer ((lw->layer));
}
@ -504,7 +504,7 @@ layers_dialog_flush ()
while (list)
{
lw = (LayerWidget *) list->data;
list = next_item (list);
list = g_slist_next (list);
if ((gimage_pos = gimage_get_layer_index (gimage, lw->layer)) != pos)
layers_dialog_position_layer ((lw->layer), gimage_pos);
@ -541,7 +541,7 @@ layers_dialog_flush ()
void
layers_dialog_free ()
{
link_ptr list;
GSList *list;
LayerWidget *lw;
if (layersD == NULL)
@ -554,7 +554,7 @@ layers_dialog_free ()
while (list)
{
lw = (LayerWidget *) list->data;
list = next_item(list);
list = g_slist_next(list);
layer_widget_delete (lw);
}
layersD->layer_widgets = NULL;
@ -696,14 +696,14 @@ create_image_menu (int *default_id,
int *default_index,
MenuItemCallback callback)
{
extern link_ptr image_list;
extern GSList *image_list;
GImage *gimage;
GtkWidget *menu_item;
GtkWidget *menu;
char *menu_item_label;
char *image_name;
link_ptr tmp;
GSList *tmp;
int num_items = 0;
int id;
@ -716,7 +716,7 @@ create_image_menu (int *default_id,
while (tmp)
{
gimage = tmp->data;
tmp = next_item (tmp);
tmp = g_slist_next (tmp);
/* make sure the default index gets set to _something_, if possible */
if (*default_index == -1)
@ -764,7 +764,7 @@ layers_dialog_update (int gimage_id)
GImage *gimage;
Layer *layer;
LayerWidget *lw;
link_ptr list;
GSList *list;
GList *item_list;
if (!layersD)
@ -783,10 +783,10 @@ layers_dialog_update (int gimage_id)
while (list)
{
lw = (LayerWidget *) list->data;
list = next_item(list);
list = g_slist_next(list);
layer_widget_delete (lw);
}
free_list (layersD->layer_widgets);
g_slist_free (layersD->layer_widgets);
layersD->layer_widgets = NULL;
if (! (gimage = gimage_get_ID (layersD->gimage_id)))
@ -807,10 +807,10 @@ layers_dialog_update (int gimage_id)
/* create a layer list item */
layer = (Layer *) list->data;
lw = create_layer_widget (gimage, layer);
layersD->layer_widgets = append_to_list (layersD->layer_widgets, lw);
layersD->layer_widgets = g_slist_append (layersD->layer_widgets, lw);
item_list = g_list_append (item_list, lw->list_item);
list = next_item (list);
list = g_slist_next (list);
}
/* get the index of the active layer */
@ -1233,13 +1233,13 @@ layers_dialog_position_layer (Layer * layer,
/* Remove the layer from the dialog */
list = g_list_append (list, layer_widget->list_item);
gtk_list_remove_items (GTK_LIST (layersD->layer_list), list);
layersD->layer_widgets = remove_from_list (layersD->layer_widgets, layer_widget);
layersD->layer_widgets = g_slist_remove (layersD->layer_widgets, layer_widget);
suspend_gimage_notify--;
/* Add it back at the proper index */
gtk_list_insert_items (GTK_LIST (layersD->layer_list), list, new_index);
layersD->layer_widgets = insert_in_list (layersD->layer_widgets, layer_widget, new_index);
layersD->layer_widgets = g_slist_insert (layersD->layer_widgets, layer_widget, new_index);
}
@ -1262,7 +1262,7 @@ layers_dialog_add_layer (Layer *layer)
item_list = g_list_append (item_list, layer_widget->list_item);
position = gimage_get_layer_index (gimage, layer);
layersD->layer_widgets = insert_in_list (layersD->layer_widgets, layer_widget, position);
layersD->layer_widgets = g_slist_insert (layersD->layer_widgets, layer_widget, position);
gtk_list_insert_items (GTK_LIST (layersD->layer_list), item_list, position);
}
@ -1825,7 +1825,7 @@ static LayerWidget *
layer_widget_get_ID (Layer * ID)
{
LayerWidget *lw;
link_ptr list;
GSList *list;
if (!layersD)
return NULL;
@ -1838,7 +1838,7 @@ layer_widget_get_ID (Layer * ID)
if (lw->layer == ID)
return lw;
list = next_item(list);
list = g_slist_next(list);
}
return NULL;
@ -1990,7 +1990,7 @@ layer_widget_delete (LayerWidget *layer_widget)
gdk_pixmap_unref (layer_widget->mask_pixmap);
/* Remove the layer widget from the list */
layersD->layer_widgets = remove_from_list (layersD->layer_widgets, layer_widget);
layersD->layer_widgets = g_slist_remove (layersD->layer_widgets, layer_widget);
/* Free the widget */
g_free (layer_widget);
@ -2668,7 +2668,7 @@ layer_widget_clip_redraw (LayerWidget *layer_widget)
static void
layer_widget_exclusive_visible (LayerWidget *layer_widget)
{
link_ptr list;
GSList *list;
LayerWidget *lw;
int visible = FALSE;
@ -2683,7 +2683,7 @@ layer_widget_exclusive_visible (LayerWidget *layer_widget)
if (lw != layer_widget)
visible |= GIMP_DRAWABLE(lw->layer)->visible;
list = next_item (list);
list = g_slist_next (list);
}
/* Now, toggle the visibility for all layers except the specified one */
@ -2698,7 +2698,7 @@ layer_widget_exclusive_visible (LayerWidget *layer_widget)
layer_widget_eye_redraw (lw);
list = next_item (list);
list = g_slist_next (list);
}
}

View File

@ -32,7 +32,6 @@
#include "errors.h"
#include "general.h"
#include "gimprc.h"
#include "linked.h"
#include "interface.h"
#include "palette.h"
@ -74,7 +73,7 @@ static void palette_delete_entry (PaletteP);
static void palette_calc_scrollbar (PaletteP);
static void palette_entries_load (char *);
static link_ptr palette_entries_insert_list (link_ptr, PaletteEntriesP);
static GSList * palette_entries_insert_list (GSList *, PaletteEntriesP);
static void palette_entries_delete (char *);
static void palette_entries_save (PaletteEntriesP, char *);
static void palette_entries_free (PaletteEntriesP);
@ -100,7 +99,7 @@ static void palette_draw_entries (PaletteP);
static void palette_draw_current_entry (PaletteP);
static void palette_update_current_entry (PaletteP);
link_ptr palette_entries_list = NULL;
GSList *palette_entries_list = NULL;
static PaletteP palette = NULL;
static PaletteEntriesP default_palette_entries = NULL;
@ -368,7 +367,7 @@ palette_init_palettes (void)
void
palette_free_palettes (void)
{
link_ptr list;
GSList *list;
PaletteEntriesP entries;
list = palette_entries_list;
@ -383,9 +382,9 @@ palette_free_palettes (void)
palette_entries_save (entries, entries->filename);
palette_entries_free (entries);
list = next_item (list);
list = g_slist_next (list);
}
free_list (palette_entries_list);
g_slist_free (palette_entries_list);
if (palette)
{
@ -409,7 +408,7 @@ palette_create_palette_menu (PaletteP palette,
PaletteEntriesP default_entries)
{
GtkWidget *menu_item;
link_ptr list;
GSList *list;
PaletteEntriesP p_entries = NULL;
PaletteEntriesP found_entries = NULL;
int i = 0;
@ -421,7 +420,7 @@ palette_create_palette_menu (PaletteP palette,
while (list)
{
p_entries = (PaletteEntriesP) list->data;
list = next_item (list);
list = g_slist_next (list);
/* to make sure we get something! */
if (p_entries == NULL)
@ -559,13 +558,13 @@ palette_entries_delete (char *filename)
unlink (filename);
}
static link_ptr
palette_entries_insert_list (link_ptr list,
static GSList *
palette_entries_insert_list (GSList * list,
PaletteEntriesP entries)
{
/* add it to the list */
num_palette_entries++;
return append_to_list (list, (void *) entries);
return g_slist_append (list, (void *) entries);
}
static void
@ -573,7 +572,7 @@ palette_entries_save (PaletteEntriesP palette,
char *filename)
{
FILE * fp;
link_ptr list;
GSList * list;
PaletteEntryP entry;
if (! filename)
@ -595,7 +594,7 @@ palette_entries_save (PaletteEntriesP palette,
entry = (PaletteEntryP) list->data;
fprintf (fp, "%d %d %d\t%s\n", entry->color[0], entry->color[1],
entry->color[2], entry->name);
list = next_item (list);
list = g_slist_next (list);
}
/* Clean up */
@ -606,7 +605,7 @@ static void
palette_entries_free (PaletteEntriesP entries)
{
PaletteEntryP entry;
link_ptr list;
GSList * list;
list = entries->colors;
while (list)
@ -722,7 +721,7 @@ palette_color_area_events (GtkWidget *widget,
PaletteP palette)
{
GdkEventButton *bevent;
link_ptr tmp_link;
GSList *tmp_link;
int r, g, b;
int width, height;
int entry_width;
@ -746,7 +745,7 @@ palette_color_area_events (GtkWidget *widget,
row = (palette->scroll_offset + bevent->y - 1) / entry_height;
pos = row * COLUMNS + col;
tmp_link = nth_item (palette->entries->colors, pos);
tmp_link = g_slist_nth (palette->entries->colors, pos);
if (tmp_link)
{
palette_draw_current_entry (palette);
@ -1158,7 +1157,7 @@ palette_draw_entries (PaletteP palette)
PaletteEntryP entry;
unsigned char *buffer;
unsigned char *colors[COLUMNS];
link_ptr tmp_link;
GSList *tmp_link;
int width, height;
int entry_width;
int entry_height;
@ -1293,7 +1292,7 @@ palette_add_entry (PaletteEntriesP entries,
entry->name = g_strdup ("Untitled");
entry->position = entries->n_colors;
entries->colors = append_to_list (entries->colors, entry);
entries->colors = g_slist_append (entries->colors, entry);
entries->n_colors += 1;
entries->changed = 1;
@ -1308,20 +1307,20 @@ static void
palette_delete_entry (PaletteP palette)
{
PaletteEntryP entry;
link_ptr tmp_link;
GSList *tmp_link;
int pos;
if (palette && palette->entries && palette->color)
{
entry = palette->color;
palette->entries->colors = remove_from_list (palette->entries->colors, entry);
palette->entries->colors = g_slist_remove (palette->entries->colors, entry);
palette->entries->n_colors--;
palette->entries->changed = 1;
pos = entry->position;
palette_entry_free (entry);
tmp_link = nth_item (palette->entries->colors, pos);
tmp_link = g_slist_nth (palette->entries->colors, pos);
if (tmp_link)
{
@ -1336,7 +1335,7 @@ palette_delete_entry (PaletteP palette)
}
else
{
tmp_link = nth_item (palette->entries->colors, pos - 1);
tmp_link = g_slist_nth (palette->entries->colors, pos - 1);
if (tmp_link)
palette->color = tmp_link->data;
}

View File

@ -18,6 +18,9 @@
#ifndef __PALETTE_H__
#define __PALETTE_H__
#include <glib.h>
#include "procedural_db.h"
#define FOREGROUND 0
#define BACKGROUND 1
@ -39,7 +42,7 @@ void palette_set_active_color (int, int, int, int);
struct _PaletteEntries {
char *name;
char *filename;
link_ptr colors;
GSList *colors;
int n_colors;
int changed;
};
@ -52,12 +55,10 @@ struct _PaletteEntry {
};
typedef struct _PaletteEntry _PaletteEntry, *PaletteEntryP;
extern link_ptr palette_entries_list;
extern GSList * palette_entries_list;
void palette_init_palettes (void);
void palette_free_palettes (void);
#include "procedural_db.h"
/* Procedure definition and marshalling function */
extern ProcRecord palette_get_foreground_proc;
extern ProcRecord palette_get_background_proc;

View File

@ -373,7 +373,7 @@ display_setup (PatternSelectP psp)
static void
display_patterns (PatternSelectP psp)
{
link_ptr list = pattern_list; /* the global pattern list */
GSList *list = pattern_list; /* the global pattern list */
int row, col;
GPatternP pattern;
@ -405,7 +405,7 @@ display_patterns (PatternSelectP psp)
col = 0;
}
list = next_item (list);
list = g_slist_next (list);
}
}

View File

@ -475,14 +475,14 @@ create_image_menu (int *default_id,
int *default_index,
MenuItemCallback callback)
{
extern link_ptr image_list;
extern GSList *image_list;
GImage *gimage;
GtkWidget *menu_item;
GtkWidget *menu;
char *menu_item_label;
char *image_name;
link_ptr tmp;
GSList *tmp;
int num_items = 0;
int id;
@ -495,7 +495,7 @@ create_image_menu (int *default_id,
while (tmp)
{
gimage = tmp->data;
tmp = next_item (tmp);
tmp = g_slist_next (tmp);
if (gimage_base_type (gimage) == INDEXED)
{

View File

@ -122,7 +122,7 @@ info_dialog_new (char *title)
void
info_dialog_free (InfoDialog *idialog)
{
link_ptr list;
GSList *list;
if (!idialog)
return;
@ -133,11 +133,11 @@ info_dialog_free (InfoDialog *idialog)
while (list)
{
g_free (list->data);
list = next_item (list);
list = g_slist_next (list);
}
/* Free the actual field linked list */
free_list (idialog->field_list);
g_slist_free (idialog->field_list);
/* Destroy the associated widgets */
gtk_widget_destroy (idialog->shell);
@ -157,7 +157,7 @@ info_dialog_add_field (InfoDialog *idialog,
return;
new_field = info_field_new (idialog, title, text_ptr);
idialog->field_list = add_to_list (idialog->field_list, (void *) new_field);
idialog->field_list = g_slist_prepend (idialog->field_list, (void *) new_field);
}
void
@ -183,7 +183,7 @@ info_dialog_popdown (InfoDialog *idialog)
void
info_dialog_update (InfoDialog *idialog)
{
link_ptr list;
GSList *list;
if (!idialog)
return;
@ -193,7 +193,7 @@ info_dialog_update (InfoDialog *idialog)
while (list)
{
update_field ((InfoField *) list->data);
list = next_item (list);
list = g_slist_next (list);
}
}

View File

@ -19,7 +19,6 @@
#define __INFO_DIALOG_H__
#include "gtk/gtk.h"
#include "linked.h"
typedef struct _info_field InfoField;
@ -40,7 +39,7 @@ struct _info_dialog
GtkWidget *labels;
GtkWidget *values;
link_ptr field_list;
GSList *field_list;
void *user_data;
};

View File

@ -31,7 +31,6 @@
#include "gimprc.h"
#include "general.h"
#include "interface.h"
#include "linked.h"
#include "menus.h"
#include "tools.h"

View File

@ -26,6 +26,8 @@
#include "appenv.h"
#include "bezier_selectP.h"
#include "draw_core.h"
#include "channel_pvt.h"
#include "drawable.h"
#include "errors.h"
#include "gdisplay.h"
#include "gimage_mask.h"
@ -229,8 +231,8 @@ static void make_curve_d (int *, int *, double, int);
/* Catmull-Rom boundary conversion */
static void CR_convert (Iscissors * , GDisplay *, int);
static void CR_convert_points (GdkPoint *, int);
static void CR_convert_line (link_ptr *, int, int, int, int);
static link_ptr CR_insert_in_list (link_ptr, int);
static void CR_convert_line (GSList **, int, int, int, int);
static GSList * CR_insert_in_list (GSList *, int);
/*******************************************************/
@ -441,12 +443,12 @@ iscissors_button_press (Tool *tool,
gdisp = (GDisplay *) gdisp_ptr;
iscissors = (Iscissors *) tool->private;
message_box ("Intelligent Scissors is currently not enabled\nfor use with the tile-based GIMP",
/* message_box ("Intelligent Scissors is currently not enabled\nfor use with the tile-based GIMP",
NULL, NULL);
return;
return;*/
gdisplay_untransform_coords (gdisp, bevent->x, bevent->y,
&iscissors->x, &iscissors->y, FALSE, 1);
&iscissors->x, &iscissors->y, FALSE, TRUE);
/* If the tool was being used in another image...reset it */
if (tool->state == ACTIVE && gdisp_ptr != tool->gdisp_ptr)
@ -484,11 +486,11 @@ iscissors_button_press (Tool *tool,
}
/* If the edge map blocks haven't been allocated, do so now */
/*FIX if (!edge_map_blocks)
if (!edge_map_blocks)
allocate_edge_map_blocks (BLOCK_WIDTH, BLOCK_HEIGHT,
gimage_width (gdisp->gimage),
gimage_height (gdisp->gimage));
*/
gdisp->gimage->width,
gdisp->gimage->height);
iscissors->num_segs = 0;
add_segment (&(iscissors->num_segs), bevent->x, bevent->y);
@ -497,7 +499,7 @@ iscissors_button_press (Tool *tool,
tool);
break;
case BOUNDARY_MODE:
if (channel_value (iscissors->mask, iscissors->x, iscissors->y))
if (/*channel_value (iscissors->mask, iscissors->x, iscissors->y)*/ TRUE)
{
replace = 0;
if (bevent->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK))
@ -560,7 +562,7 @@ iscissors_button_release (Tool *tool,
gdisp = (GDisplay *) gdisp_ptr;
iscissors = (Iscissors *) tool->private;
return;
/*return;*/
gdk_pointer_ungrab (bevent->time);
gdk_flush ();
@ -696,7 +698,7 @@ iscissors_draw_CR (GDisplay *gdisp,
break;
case SCREEN_COORDS:
gdisplay_transform_coords_f (gdisp, (int) pts[indices[i]].dx,
(int) pts[indices[i]].dy, &x, &y, FALSE);
(int) pts[indices[i]].dy, &x, &y, TRUE);
geometry[i][0] = x;
geometry[i][1] = y;
break;
@ -987,6 +989,7 @@ get_kink (Kink *kinks,
return kinks + index;
}
/* I don't think this ever gets called -- Rockwalrus */
return NULL;
}
@ -1311,9 +1314,9 @@ process_kinks (Tool *tool)
{
/* transform from screen to image coordinates */
gdisplay_untransform_coords (gdisp, kinks[i].x, kinks[i].y,
&x, &y, FALSE, FALSE);
/*FIXkinks[i].x = BOUNDS (x, 0, (gimage_width (gdisp->gimage) - 1));
kinks[i].y = BOUNDS (y, 0, (gimage_height (gdisp->gimage) - 1));*/
&x, &y, FALSE, TRUE);
kinks[i].x = BOUNDS (x, 0, (gdisp->gimage->width - 1));
kinks[i].y = BOUNDS (y, 0, (gdisp->gimage->height - 1));
/* get local maximums */
k_left = get_kink (kinks, i-1, iscissors->num_kinks);
@ -1398,21 +1401,21 @@ edge_map_from_boundary (Tool *tool)
x = y = w = h = x1 = y1 = x2 = y2 = 0;
/*FIXx1 = gimage_width (gdisp->gimage);
y1 = gimage_height (gdisp->gimage);*/
x1 = gdisp->gimage->width;
y1 = gdisp->gimage->height;
/* Find the edge map extents */
for (i = 0; i < iscissors->num_pts; i++)
{
/*FIX x = BOUNDS (pts[i].x - LOCALIZE_RADIUS, 0,
gimage_width (gdisp->gimage));
x = BOUNDS (pts[i].x - LOCALIZE_RADIUS, 0,
gdisp->gimage->width);
y = BOUNDS (pts[i].y - LOCALIZE_RADIUS, 0,
gimage_height (gdisp->gimage));
gdisp->gimage->height);
w = BOUNDS (pts[i].x + LOCALIZE_RADIUS, 0,
gimage_width (gdisp->gimage));
gdisp->gimage->width);
h = BOUNDS (pts[i].y + LOCALIZE_RADIUS, 0,
gimage_height (gdisp->gimage));
*/
gdisp->gimage->height);
w -= x;
h -= y;
@ -1444,7 +1447,7 @@ orient_boundary (Tool *tool)
double edge1[EDGE_WIDTH], edge2[EDGE_WIDTH];
double max;
double angle;
int dir;
int dir = 0;
int i, j;
int max_dir;
int max_orient;
@ -1746,7 +1749,13 @@ calculate_edge_map (GImage *gimage,
int xx, yy;
unsigned char *gr, * dh, * dv, * cm;
int hmax, vmax;
int b;
double prev, next;
GimpDrawable *drawable;
void *pr;
FILE *dump;
drawable = gimage_active_drawable (gimage);
x1 = y1 = x2 = y2 = 0;
@ -1754,31 +1763,38 @@ calculate_edge_map (GImage *gimage,
edge_map = temp_buf_new (w, h, EDGE_WIDTH, x, y, NULL);
/* calculate the extent of the search make a 1 pixel border */
/*FIXx1 = BOUNDS (x, 0, gimage_width (gimage));
y1 = BOUNDS (y, 0, gimage_height (gimage));
x2 = BOUNDS (x + w, 0, gimage_width (gimage));
y2 = BOUNDS (y + h, 0, gimage_height (gimage));*/
x1 = BOUNDS (x, 0, gimage->width);
y1 = BOUNDS (y, 0, gimage->height);
x2 = BOUNDS (x + w, 0, gimage->width);
y2 = BOUNDS (y + h, 0, gimage->height);
width = x2 - x1;
height = y2 - y1;
offx = (x - x1);
offy = (y - y1);
/* Set the gimage up as the source pixel region */
/* FIX srcPR.bytes = gimage_bytes (gimage);*/
/* Set the drawable up as the source pixel region */
/*srcPR.bytes = drawable_bytes (drawable);
srcPR.w = width;
srcPR.h = height;
/* FIX srcPR.rowstride = gimage_width (gimage) * gimage_bytes (gimage);*/
/*FIXsrcPR.data = gimage_data (gimage) + y1 * srcPR.rowstride + x1 * srcPR.bytes;*/
srcPR.rowstride = gimage->width * drawable_bytes (drawable);
srcPR.data = drawable_data (drawable) + y1 * srcPR.rowstride + x1 * srcPR.bytes;*/
pixel_region_init(&srcPR, drawable_data(drawable), x1, y1, width, height, 1);
/* Get the horizontal derivative */
destPR.data = conv1 + MAX_CHANNELS * (CONV_WIDTH * offy + offx);
destPR.rowstride = CONV_WIDTH * MAX_CHANNELS;
gaussian_deriv (&srcPR, &destPR, HORIZONTAL, std_dev);
destPR.tiles = NULL;
for (pr =pixel_regions_register (2, &srcPR, &destPR); pr != NULL; pr = pixel_regions_process (pr))
gaussian_deriv (&srcPR, &destPR, HORIZONTAL, std_dev);
/* Get the vertical derivative */
destPR.data = conv2 + MAX_CHANNELS * (CONV_WIDTH * offy + offx);
gaussian_deriv (&srcPR, &destPR, VERTICAL, std_dev);
for (pr =pixel_regions_register (2, &srcPR, &destPR); pr != NULL; pr = pixel_regions_process (pr))
gaussian_deriv (&srcPR, &destPR, VERTICAL, std_dev);
/* fill in the edge map */
@ -1792,11 +1808,13 @@ calculate_edge_map (GImage *gimage,
{
hmax = dh[0] - 128;
vmax = dv[0] - 128;
/*FIX for (b = 1; b < gimage_bytes (gimage); b++)
for (b = 1; b < drawable_bytes (drawable); b++)
{
if (abs (dh[b] - 128) > abs (hmax)) hmax = dh[b] - 128;
if (abs (dv[b] - 128) > abs (vmax)) vmax = dv[b] - 128;
}*/
if (abs (dh[b] - 128) > abs (hmax))
hmax = dh[b] - 128;
if (abs (dv[b] - 128) > abs (vmax))
vmax = dv[b] - 128;
}
/* store the information in the edge map */
dh[0] = hmax + 128;
@ -1819,7 +1837,7 @@ calculate_edge_map (GImage *gimage,
}
/* Make the edge gradient map extend one row further */
memcpy (grad, grad + (CONV_WIDTH+2), (CONV_WIDTH+2));
memcpy (grad, grad + (CONV_WIDTH+2), (CONV_WIDTH+2));
memcpy (grad + (CONV_WIDTH+2) * (CONV_HEIGHT+1),
grad + (CONV_WIDTH+2) * (CONV_HEIGHT),
(CONV_WIDTH+2));
@ -1851,18 +1869,22 @@ calculate_edge_map (GImage *gimage,
else
*cm++ = 0;
/*
*cm++ = dh[0];
*cm++ = dv[0];
*/
/*cm++ = dh[0];*/
/*cm++ = dv[0];*/
dh += srcPR.bytes;
dv += srcPR.bytes;
gr ++;
}
}
/* dump=fopen("/ugrad/summersn/dump", "w"); */
/* fprintf(dump, "P5\n%d %d\n255\n", edge_map->width, edge_map->height); */
/* fwrite(edge_map->data, edge_map->width * edge_map->height, sizeof (guchar), dump); */
/* fclose (dump); */
return edge_map;
return edge_map;
}
static void
@ -1877,10 +1899,17 @@ construct_edge_map (Tool *tool,
int offx, offy;
int x2, y2;
PixelRegion srcPR, destPR;
FILE *dump;
/* init some variables */
srcPR.bytes = edge_buf->bytes;
destPR.rowstride = edge_buf->bytes * edge_buf->width;
destPR.x = edge_buf->x;
destPR.y = edge_buf->y;
destPR.h = edge_buf->height;
destPR.w = edge_buf -> width;
destPR.bytes = edge_buf->bytes;
srcPR.tiles = destPR.tiles = NULL;
y = edge_buf->y;
endx = edge_buf->x + edge_buf->width;
@ -1906,7 +1935,7 @@ construct_edge_map (Tool *tool,
/* If the block exists, patch it into buf */
if (block)
{
/* calculate x offset into the block */
/* calculate x offset into the block */
offx = (x - col * BLOCK_WIDTH);
x2 = (col + 1) * BLOCK_WIDTH;
if (x2 > endx) x2 = endx;
@ -1929,8 +1958,12 @@ construct_edge_map (Tool *tool,
y = row * BLOCK_HEIGHT;
}
/* show the edge buffer */
/* temp_buf_to_gdisplay (edge_buf);*/
/* dump the edge buffer for debugging*/
/* dump=fopen("/ugrad/summersn/dump", "w");
fprintf(dump, "P5\n%d %d\n255\n", edge_buf->width, edge_buf->height);
fwrite(edge_buf->data, edge_buf->width * edge_buf->height, sizeof (guchar), dump);
fclose (dump); */
}
@ -1955,8 +1988,8 @@ set_edge_map_blocks (void *gimage_ptr,
width = height = 0;
gimage = (GImage *) gimage_ptr;
/*FIXwidth = gimage_width (gimage);*/
/*FIXheight = gimage_height (gimage);*/
width = gimage->width;
height = gimage->height;
startx = x;
endx = x + w;
@ -2327,7 +2360,7 @@ make_curve_d (int *curve,
/* Functions for Catmull-Rom area conversion */
/***********************************************/
static link_ptr * CR_scanlines;
static GSList **CR_scanlines;
static int start_convert;
static int width, height;
static int lastx;
@ -2339,12 +2372,13 @@ CR_convert (Iscissors *iscissors,
int antialias)
{
int indices[4];
link_ptr list;
unsigned char *dest;
GSList *list;
int draw_type;
int * vals, val;
int x, w;
int i, j;
PixelRegion maskPR;
unsigned char *buf, *b;
vals = NULL;
@ -2363,12 +2397,15 @@ CR_convert (Iscissors *iscissors,
draw_type = AA_IMAGE_COORDS;
/* allocate value array */
vals = (int *) g_malloc (sizeof (int) * width);
buf = (unsigned char *) g_malloc (sizeof(unsigned char *) * width);
}
else
{
width = gdisp->gimage->width;
height = gdisp->gimage->height;
draw_type = IMAGE_COORDS;
buf = NULL;
vals = NULL;
}
/* create a new mask */
@ -2376,7 +2413,7 @@ CR_convert (Iscissors *iscissors,
gdisp->gimage->height);
/* allocate room for the scanlines */
CR_scanlines = g_malloc (sizeof (link_ptr) * height);
CR_scanlines = g_malloc (sizeof (GSList *) * height);
/* zero out the scanlines */
for (i = 0; i < height; i++)
@ -2394,7 +2431,9 @@ CR_convert (Iscissors *iscissors,
iscissors_draw_CR (gdisp, iscissors, pts, indices, draw_type);
}
dest = channel_data (iscissors->mask);
pixel_region_init (&maskPR, iscissors->mask->drawable.tiles, 0, 0,
iscissors->mask->drawable.width,
iscissors->mask->drawable.height, TRUE);
for (i = 0; i < height; i++)
{
@ -2418,21 +2457,25 @@ CR_convert (Iscissors *iscissors,
for (j = 0; j < w; j++)
vals[j + x] += 255;
list = next_item (list);
list = g_slist_next (list);
}
}
if (antialias && !((i+1) % SUPERSAMPLE))
for (j = 0; j < width; j += SUPERSAMPLE)
{
val = 0;
for (x = 0; x < SUPERSAMPLE; x++)
val += vals[j + x];
{
b = buf;
for (j = 0; j < width; j += SUPERSAMPLE)
{
val = 0;
for (x = 0; x < SUPERSAMPLE; x++)
val += vals[j + x];
*dest++ = val / SUPERSAMPLE2;
}
*b++ = (unsigned char) (val / SUPERSAMPLE2);
}
pixel_region_set_row (&maskPR, 0, (i / SUPERSAMPLE), iscissors->mask->drawable.width, buf);
}
free_list (CR_scanlines[i]);
g_slist_free (CR_scanlines[i]);
}
if (antialias)
@ -2465,11 +2508,11 @@ CR_convert_points (GdkPoint *points,
}
static void
CR_convert_line (link_ptr *scanlines,
int x1,
int y1,
int x2,
int y2)
CR_convert_line (GSList **scanlines,
int x1,
int y1,
int x2,
int y2)
{
int dx, dy;
int error, inc;
@ -2581,32 +2624,32 @@ CR_convert_line (link_ptr *scanlines,
}
}
static link_ptr
CR_insert_in_list (link_ptr list,
int x)
static GSList *
CR_insert_in_list (GSList *list,
int x)
{
link_ptr orig = list;
link_ptr rest;
GSList *orig = list;
GSList *rest;
if (!list)
return add_to_list (list, (gpointer) ((long) x));
return g_slist_prepend (list, (gpointer) ((long) x));
while (list)
{
rest = next_item (list);
rest = g_slist_next (list);
if (x < (long) list->data)
{
rest = add_to_list (rest, list->data);
rest = g_slist_prepend (rest, list->data);
list->next = rest;
list->data = (gpointer) ((long) x);
return orig;
}
else if (!rest)
{
append_to_list (list, (gpointer) ((long) x));
g_slist_append (list, (gpointer) ((long) x));
return orig;
}
list = next_item (list);
list = g_slist_next (list);
}
return orig;

View File

@ -31,7 +31,6 @@
#include "interface.h"
#include "layer.h"
#include "layers_dialog.h"
#include "linked.h"
#include "paint_funcs.h"
#include "temp_buf.h"
#include "undo.h"
@ -1119,7 +1118,7 @@ void
layer_invalidate_previews (gimage_id)
int gimage_id;
{
link_ptr tmp;
GSList * tmp;
Layer * layer;
GImage * gimage;
@ -1132,7 +1131,7 @@ layer_invalidate_previews (gimage_id)
{
layer = (Layer *) tmp->data;
drawable_invalidate_preview (GIMP_DRAWABLE(layer));
tmp = next_item (tmp);
tmp = g_slist_next (tmp);
}
}

View File

@ -602,7 +602,7 @@ layer_translate_invoker (Argument *args)
Layer *layer, *tmp_layer;
Layer *floating_layer;
GImage *gimage;
link_ptr layer_list;
GSList *layer_list;
int offx, offy;
success = TRUE;
@ -635,7 +635,7 @@ layer_translate_invoker (Argument *args)
tmp_layer = (Layer *) layer_list->data;
if ((tmp_layer == layer) || tmp_layer->linked)
layer_translate (tmp_layer, offx, offy);
layer_list = next_item (layer_list);
layer_list = g_slist_next (layer_list);
}
if (floating_layer)

View File

@ -179,8 +179,8 @@ layer_select_advance (LayerSelect *layer_select,
int index;
int length;
int count;
link_ptr list;
link_ptr nth;
GSList *list;
GSList *nth;
Layer *layer;
index = 0;
@ -197,17 +197,17 @@ layer_select_advance (LayerSelect *layer_select,
if (layer == layer_select->current_layer)
index = count;
count++;
list = next_item (list);
list = g_slist_next (list);
}
length = list_length (layer_select->gimage->layer_stack);
length = g_slist_length (layer_select->gimage->layer_stack);
if (dir == 1)
index = (index == length - 1) ? 0 : (index + 1);
else
index = (index == 0) ? (length - 1) : (index - 1);
nth = nth_item (layer_select->gimage->layer_stack, index);
nth = g_slist_nth (layer_select->gimage->layer_stack, index);
if (nth)
{

View File

@ -87,7 +87,7 @@ struct _LayersDialog {
Layer * active_layer;
Channel * active_channel;
Layer * floating_sel;
link_ptr layer_widgets;
GSList * layer_widgets;
};
typedef struct _LayerWidget LayerWidget;
@ -445,7 +445,7 @@ layers_dialog_flush ()
GImage *gimage;
Layer *layer;
LayerWidget *lw;
link_ptr list;
GSList *list;
int gimage_pos;
int pos;
@ -469,7 +469,7 @@ layers_dialog_flush ()
{
lw = (LayerWidget *) list->data;
lw->visited = FALSE;
list = next_item (list);
list = g_slist_next (list);
}
/* Add any missing layers */
@ -485,7 +485,7 @@ layers_dialog_flush ()
else
lw->visited = TRUE;
list = next_item (list);
list = g_slist_next (list);
}
/* Remove any extraneous layers */
@ -493,7 +493,7 @@ layers_dialog_flush ()
while (list)
{
lw = (LayerWidget *) list->data;
list = next_item (list);
list = g_slist_next (list);
if (lw->visited == FALSE)
layers_dialog_remove_layer ((lw->layer));
}
@ -504,7 +504,7 @@ layers_dialog_flush ()
while (list)
{
lw = (LayerWidget *) list->data;
list = next_item (list);
list = g_slist_next (list);
if ((gimage_pos = gimage_get_layer_index (gimage, lw->layer)) != pos)
layers_dialog_position_layer ((lw->layer), gimage_pos);
@ -541,7 +541,7 @@ layers_dialog_flush ()
void
layers_dialog_free ()
{
link_ptr list;
GSList *list;
LayerWidget *lw;
if (layersD == NULL)
@ -554,7 +554,7 @@ layers_dialog_free ()
while (list)
{
lw = (LayerWidget *) list->data;
list = next_item(list);
list = g_slist_next(list);
layer_widget_delete (lw);
}
layersD->layer_widgets = NULL;
@ -696,14 +696,14 @@ create_image_menu (int *default_id,
int *default_index,
MenuItemCallback callback)
{
extern link_ptr image_list;
extern GSList *image_list;
GImage *gimage;
GtkWidget *menu_item;
GtkWidget *menu;
char *menu_item_label;
char *image_name;
link_ptr tmp;
GSList *tmp;
int num_items = 0;
int id;
@ -716,7 +716,7 @@ create_image_menu (int *default_id,
while (tmp)
{
gimage = tmp->data;
tmp = next_item (tmp);
tmp = g_slist_next (tmp);
/* make sure the default index gets set to _something_, if possible */
if (*default_index == -1)
@ -764,7 +764,7 @@ layers_dialog_update (int gimage_id)
GImage *gimage;
Layer *layer;
LayerWidget *lw;
link_ptr list;
GSList *list;
GList *item_list;
if (!layersD)
@ -783,10 +783,10 @@ layers_dialog_update (int gimage_id)
while (list)
{
lw = (LayerWidget *) list->data;
list = next_item(list);
list = g_slist_next(list);
layer_widget_delete (lw);
}
free_list (layersD->layer_widgets);
g_slist_free (layersD->layer_widgets);
layersD->layer_widgets = NULL;
if (! (gimage = gimage_get_ID (layersD->gimage_id)))
@ -807,10 +807,10 @@ layers_dialog_update (int gimage_id)
/* create a layer list item */
layer = (Layer *) list->data;
lw = create_layer_widget (gimage, layer);
layersD->layer_widgets = append_to_list (layersD->layer_widgets, lw);
layersD->layer_widgets = g_slist_append (layersD->layer_widgets, lw);
item_list = g_list_append (item_list, lw->list_item);
list = next_item (list);
list = g_slist_next (list);
}
/* get the index of the active layer */
@ -1233,13 +1233,13 @@ layers_dialog_position_layer (Layer * layer,
/* Remove the layer from the dialog */
list = g_list_append (list, layer_widget->list_item);
gtk_list_remove_items (GTK_LIST (layersD->layer_list), list);
layersD->layer_widgets = remove_from_list (layersD->layer_widgets, layer_widget);
layersD->layer_widgets = g_slist_remove (layersD->layer_widgets, layer_widget);
suspend_gimage_notify--;
/* Add it back at the proper index */
gtk_list_insert_items (GTK_LIST (layersD->layer_list), list, new_index);
layersD->layer_widgets = insert_in_list (layersD->layer_widgets, layer_widget, new_index);
layersD->layer_widgets = g_slist_insert (layersD->layer_widgets, layer_widget, new_index);
}
@ -1262,7 +1262,7 @@ layers_dialog_add_layer (Layer *layer)
item_list = g_list_append (item_list, layer_widget->list_item);
position = gimage_get_layer_index (gimage, layer);
layersD->layer_widgets = insert_in_list (layersD->layer_widgets, layer_widget, position);
layersD->layer_widgets = g_slist_insert (layersD->layer_widgets, layer_widget, position);
gtk_list_insert_items (GTK_LIST (layersD->layer_list), item_list, position);
}
@ -1825,7 +1825,7 @@ static LayerWidget *
layer_widget_get_ID (Layer * ID)
{
LayerWidget *lw;
link_ptr list;
GSList *list;
if (!layersD)
return NULL;
@ -1838,7 +1838,7 @@ layer_widget_get_ID (Layer * ID)
if (lw->layer == ID)
return lw;
list = next_item(list);
list = g_slist_next(list);
}
return NULL;
@ -1990,7 +1990,7 @@ layer_widget_delete (LayerWidget *layer_widget)
gdk_pixmap_unref (layer_widget->mask_pixmap);
/* Remove the layer widget from the list */
layersD->layer_widgets = remove_from_list (layersD->layer_widgets, layer_widget);
layersD->layer_widgets = g_slist_remove (layersD->layer_widgets, layer_widget);
/* Free the widget */
g_free (layer_widget);
@ -2668,7 +2668,7 @@ layer_widget_clip_redraw (LayerWidget *layer_widget)
static void
layer_widget_exclusive_visible (LayerWidget *layer_widget)
{
link_ptr list;
GSList *list;
LayerWidget *lw;
int visible = FALSE;
@ -2683,7 +2683,7 @@ layer_widget_exclusive_visible (LayerWidget *layer_widget)
if (lw != layer_widget)
visible |= GIMP_DRAWABLE(lw->layer)->visible;
list = next_item (list);
list = g_slist_next (list);
}
/* Now, toggle the visibility for all layers except the specified one */
@ -2698,7 +2698,7 @@ layer_widget_exclusive_visible (LayerWidget *layer_widget)
layer_widget_eye_redraw (lw);
list = next_item (list);
list = g_slist_next (list);
}
}

View File

@ -1,199 +0,0 @@
/* The GIMP -- an image manipulation program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <stdlib.h>
#include <stdio.h>
#include <glib.h>
#include "linked.h"
static GMemChunk *list_mem_chunk = NULL;
static link_ptr free_list_list = NULL;
link_ptr
alloc_list ()
{
link_ptr new_list;
if (!list_mem_chunk)
list_mem_chunk = g_mem_chunk_new ("gimp list mem chunk",
sizeof (struct _link),
1024, G_ALLOC_ONLY);
if (free_list_list)
{
new_list = free_list_list;
free_list_list = free_list_list->next;
}
else
{
new_list = g_mem_chunk_alloc (list_mem_chunk);
}
new_list->data = NULL;
new_list->next = NULL;
return new_list;
}
link_ptr
free_list (l)
link_ptr l;
{
link_ptr temp_list;
if (!l)
return NULL;
temp_list = l;
while (temp_list->next)
temp_list = temp_list->next;
temp_list->next = free_list_list;
free_list_list = l;
return NULL;
}
link_ptr
append_to_list (list, data)
link_ptr list;
void *data;
{
link_ptr new_link;
link_ptr head = list;
new_link = alloc_list ();
new_link->data = data;
new_link->next = NULL;
if (!list)
return new_link;
while (list->next)
list = next_item (list);
list->next = new_link;
return head;
}
link_ptr
insert_in_list (list, data, index)
link_ptr list;
void *data;
int index;
{
link_ptr new_link;
link_ptr head = list;
link_ptr prev = NULL;
int count = 0;
new_link = alloc_list ();
new_link->data = data;
new_link->next = NULL;
if (!list)
return new_link;
while (list && (count < index))
{
count++;
prev = list;
list = next_item (list);
}
new_link->next = list;
if (prev)
prev->next = new_link;
else
head = new_link;
return head;
}
link_ptr
add_to_list (list, data)
link_ptr list;
void *data;
{
link_ptr new_link;
new_link = alloc_list ();
new_link->data = data;
new_link->next = list;
return new_link;
}
link_ptr
remove_from_list (list, data)
link_ptr list;
void *data;
{
link_ptr tmp;
if (!list)
return NULL;
if (list->data == data)
{
tmp = list->next;
list->next = NULL;
free_list (list);
return tmp;
}
else
list->next = remove_from_list (list->next, data);
return list;
}
link_ptr
next_item (list)
link_ptr list;
{
if (!list)
return NULL;
else
return list->next;
}
link_ptr
nth_item (list, n)
link_ptr list;
int n;
{
if (list && (n > 0))
return nth_item (next_item (list), n - 1);
return list;
}
int
list_length (list)
link_ptr list;
{
int n;
n = 0;
while (list)
{
n += 1;
list = list->next;
}
return n;
}

View File

@ -1,56 +0,0 @@
/* The GIMP -- an image manipulation program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef __LINKED_H__
#define __LINKED_H__
#ifndef USE_GSLIST_VERSION
typedef struct _link
{
void *data;
struct _link *next;
} *link_ptr;
extern link_ptr alloc_list (void);
extern link_ptr free_list (link_ptr);
extern link_ptr add_to_list (link_ptr, void *);
extern link_ptr append_to_list (link_ptr, void *);
extern link_ptr insert_in_list (link_ptr, void *, int);
extern link_ptr remove_from_list (link_ptr, void *);
extern link_ptr next_item (link_ptr);
extern link_ptr nth_item (link_ptr, int);
extern int list_length (link_ptr);
#else /* USE_GSLIST_VERSION */
#include <glib.h>
typedef GSList * link_ptr;
#define alloc_list() g_slist_alloc()
#define free_list(x) g_slist_free((x)), NULL
#define add_to_list(x, y) g_slist_prepend((x), (y))
#define append_to_list(x, y) g_slist_append((x), (y))
#define insert_in_list(x, y, z) g_slist_insert((x), (y), (z))
#define remove_from_list(x, y) g_slist_remove((x), (y))
#define next_item(x) (x)?g_slist_next((x)):NULL
#define nth_item(x, y) g_slist_nth((x), (y))
#define list_length(x) g_slist_length((x))
#endif /* USE_GSLIST_VERSION */
#endif

View File

@ -24,7 +24,6 @@
#include "gimage_mask.h"
#include "gdisplay.h"
#include "gdisplay_ops.h"
#include "linked.h"
#include "move.h"
#include "undo.h"

View File

@ -32,7 +32,6 @@
#include "errors.h"
#include "general.h"
#include "gimprc.h"
#include "linked.h"
#include "interface.h"
#include "palette.h"
@ -74,7 +73,7 @@ static void palette_delete_entry (PaletteP);
static void palette_calc_scrollbar (PaletteP);
static void palette_entries_load (char *);
static link_ptr palette_entries_insert_list (link_ptr, PaletteEntriesP);
static GSList * palette_entries_insert_list (GSList *, PaletteEntriesP);
static void palette_entries_delete (char *);
static void palette_entries_save (PaletteEntriesP, char *);
static void palette_entries_free (PaletteEntriesP);
@ -100,7 +99,7 @@ static void palette_draw_entries (PaletteP);
static void palette_draw_current_entry (PaletteP);
static void palette_update_current_entry (PaletteP);
link_ptr palette_entries_list = NULL;
GSList *palette_entries_list = NULL;
static PaletteP palette = NULL;
static PaletteEntriesP default_palette_entries = NULL;
@ -368,7 +367,7 @@ palette_init_palettes (void)
void
palette_free_palettes (void)
{
link_ptr list;
GSList *list;
PaletteEntriesP entries;
list = palette_entries_list;
@ -383,9 +382,9 @@ palette_free_palettes (void)
palette_entries_save (entries, entries->filename);
palette_entries_free (entries);
list = next_item (list);
list = g_slist_next (list);
}
free_list (palette_entries_list);
g_slist_free (palette_entries_list);
if (palette)
{
@ -409,7 +408,7 @@ palette_create_palette_menu (PaletteP palette,
PaletteEntriesP default_entries)
{
GtkWidget *menu_item;
link_ptr list;
GSList *list;
PaletteEntriesP p_entries = NULL;
PaletteEntriesP found_entries = NULL;
int i = 0;
@ -421,7 +420,7 @@ palette_create_palette_menu (PaletteP palette,
while (list)
{
p_entries = (PaletteEntriesP) list->data;
list = next_item (list);
list = g_slist_next (list);
/* to make sure we get something! */
if (p_entries == NULL)
@ -559,13 +558,13 @@ palette_entries_delete (char *filename)
unlink (filename);
}
static link_ptr
palette_entries_insert_list (link_ptr list,
static GSList *
palette_entries_insert_list (GSList * list,
PaletteEntriesP entries)
{
/* add it to the list */
num_palette_entries++;
return append_to_list (list, (void *) entries);
return g_slist_append (list, (void *) entries);
}
static void
@ -573,7 +572,7 @@ palette_entries_save (PaletteEntriesP palette,
char *filename)
{
FILE * fp;
link_ptr list;
GSList * list;
PaletteEntryP entry;
if (! filename)
@ -595,7 +594,7 @@ palette_entries_save (PaletteEntriesP palette,
entry = (PaletteEntryP) list->data;
fprintf (fp, "%d %d %d\t%s\n", entry->color[0], entry->color[1],
entry->color[2], entry->name);
list = next_item (list);
list = g_slist_next (list);
}
/* Clean up */
@ -606,7 +605,7 @@ static void
palette_entries_free (PaletteEntriesP entries)
{
PaletteEntryP entry;
link_ptr list;
GSList * list;
list = entries->colors;
while (list)
@ -722,7 +721,7 @@ palette_color_area_events (GtkWidget *widget,
PaletteP palette)
{
GdkEventButton *bevent;
link_ptr tmp_link;
GSList *tmp_link;
int r, g, b;
int width, height;
int entry_width;
@ -746,7 +745,7 @@ palette_color_area_events (GtkWidget *widget,
row = (palette->scroll_offset + bevent->y - 1) / entry_height;
pos = row * COLUMNS + col;
tmp_link = nth_item (palette->entries->colors, pos);
tmp_link = g_slist_nth (palette->entries->colors, pos);
if (tmp_link)
{
palette_draw_current_entry (palette);
@ -1158,7 +1157,7 @@ palette_draw_entries (PaletteP palette)
PaletteEntryP entry;
unsigned char *buffer;
unsigned char *colors[COLUMNS];
link_ptr tmp_link;
GSList *tmp_link;
int width, height;
int entry_width;
int entry_height;
@ -1293,7 +1292,7 @@ palette_add_entry (PaletteEntriesP entries,
entry->name = g_strdup ("Untitled");
entry->position = entries->n_colors;
entries->colors = append_to_list (entries->colors, entry);
entries->colors = g_slist_append (entries->colors, entry);
entries->n_colors += 1;
entries->changed = 1;
@ -1308,20 +1307,20 @@ static void
palette_delete_entry (PaletteP palette)
{
PaletteEntryP entry;
link_ptr tmp_link;
GSList *tmp_link;
int pos;
if (palette && palette->entries && palette->color)
{
entry = palette->color;
palette->entries->colors = remove_from_list (palette->entries->colors, entry);
palette->entries->colors = g_slist_remove (palette->entries->colors, entry);
palette->entries->n_colors--;
palette->entries->changed = 1;
pos = entry->position;
palette_entry_free (entry);
tmp_link = nth_item (palette->entries->colors, pos);
tmp_link = g_slist_nth (palette->entries->colors, pos);
if (tmp_link)
{
@ -1336,7 +1335,7 @@ palette_delete_entry (PaletteP palette)
}
else
{
tmp_link = nth_item (palette->entries->colors, pos - 1);
tmp_link = g_slist_nth (palette->entries->colors, pos - 1);
if (tmp_link)
palette->color = tmp_link->data;
}

View File

@ -18,6 +18,9 @@
#ifndef __PALETTE_H__
#define __PALETTE_H__
#include <glib.h>
#include "procedural_db.h"
#define FOREGROUND 0
#define BACKGROUND 1
@ -39,7 +42,7 @@ void palette_set_active_color (int, int, int, int);
struct _PaletteEntries {
char *name;
char *filename;
link_ptr colors;
GSList *colors;
int n_colors;
int changed;
};
@ -52,12 +55,10 @@ struct _PaletteEntry {
};
typedef struct _PaletteEntry _PaletteEntry, *PaletteEntryP;
extern link_ptr palette_entries_list;
extern GSList * palette_entries_list;
void palette_init_palettes (void);
void palette_free_palettes (void);
#include "procedural_db.h"
/* Procedure definition and marshalling function */
extern ProcRecord palette_get_foreground_proc;
extern ProcRecord palette_get_background_proc;

View File

@ -373,7 +373,7 @@ display_setup (PatternSelectP psp)
static void
display_patterns (PatternSelectP psp)
{
link_ptr list = pattern_list; /* the global pattern list */
GSList *list = pattern_list; /* the global pattern list */
int row, col;
GPatternP pattern;
@ -405,7 +405,7 @@ display_patterns (PatternSelectP psp)
col = 0;
}
list = next_item (list);
list = g_slist_next (list);
}
}

View File

@ -33,13 +33,12 @@
#include "errors.h"
#include "general.h"
#include "gimprc.h"
#include "linked.h"
#include "menus.h"
/* global variables */
GPatternP active_pattern = NULL;
link_ptr pattern_list = NULL;
GSList * pattern_list = NULL;
int num_patterns = 0;
PatternSelectP pattern_select_dialog = NULL;
@ -50,15 +49,18 @@ static Argument *return_args;
static int have_default_pattern = 0;
/* static function prototypes */
static link_ptr insert_pattern_in_list (link_ptr, GPatternP);
static GSList * insert_pattern_in_list (GSList *, GPatternP);
static void load_pattern (char *filename);
static void free_pattern (GPatternP);
static void pattern_free_one (gpointer, gpointer);
static gint pattern_compare_func (gpointer, gpointer);
/* function declarations */
void
patterns_init ()
{
link_ptr list;
GSList *list;
if (pattern_list)
patterns_free ();
@ -75,32 +77,33 @@ patterns_init ()
list = pattern_list;
while (list)
{
while (list) {
/* Set the pattern index */
((GPattern *) list->data)->index = num_patterns++;
list = next_item (list);
} /* while */
list = g_slist_next (list);
}
}
static void
pattern_free_one (gpointer data, gpointer dummy)
{
free_pattern ((GPatternP) data);
}
static gint
pattern_compare_func(gpointer first, gpointer second)
{
return strcmp (((GPatternP)first)->name, ((GPatternP)second)->name);
}
void
patterns_free ()
{
link_ptr list;
GPatternP pattern;
list = pattern_list;
while (list)
{
pattern = (GPatternP) list->data;
free_pattern (pattern);
list = next_item (list);
}
free_list (list);
if (pattern_list) {
g_slist_foreach (pattern_list, pattern_free_one, NULL);
g_slist_free (pattern_list);
}
have_default_pattern = 0;
active_pattern = NULL;
@ -137,67 +140,10 @@ get_active_pattern ()
}
static link_ptr
insert_pattern_in_list (list, pattern)
link_ptr list;
GPatternP pattern;
static GSList *
insert_pattern_in_list (GSList *list, GPatternP pattern)
{
link_ptr tmp;
link_ptr prev;
link_ptr new_link;
GPatternP b;
int val;
/* Insert the item in the list */
if (list)
{
prev = NULL;
tmp = list;
do {
if (tmp)
{
b = (GPatternP) tmp->data;
/* do the comparison needed for the insertion sort */
val = strcmp (pattern->name, b->name);
}
else
val = -1;
if (val <= 0)
{
/* this is the place the item goes */
/* Insert the item into the list. We'll have to create
* a new link and then do a little insertion.
*/
new_link = alloc_list ();
if (!new_link)
fatal_error ("Unable to allocate memory");
new_link->data = pattern;
new_link->next = tmp;
if (prev)
prev->next = new_link;
if (tmp == list)
list = new_link;
return list;
}
/* Advance to the next item in the list.
*/
prev = tmp;
tmp = next_item (tmp);
} while (prev);
}
else
/* There are no items in the pattern list, so we'll just start
* one right now.
*/
list = add_to_list (list, pattern);
return list;
return g_slist_insert_sorted (list, pattern, pattern_compare_func);
}
@ -302,23 +248,16 @@ load_pattern (char *filename)
GPatternP
get_pattern_by_index (index)
int index;
get_pattern_by_index (int index)
{
link_ptr list;
GPatternP pattern;
GSList *list;
GPatternP pattern = NULL;
list = pattern_list;
list = g_slist_nth (pattern_list, index);
if (list)
pattern = (GPatternP) list->data;
while (list)
{
pattern = (GPatternP) list->data;
if (pattern->index == index)
return pattern;
list = next_item (list);
}
return NULL;
return pattern;
}
@ -441,7 +380,7 @@ static Argument *
patterns_set_pattern_invoker (Argument *args)
{
GPatternP patternp;
link_ptr list;
GSList *list;
char *name;
success = (name = (char *) args[0].value.pdb_pointer) != NULL;
@ -462,7 +401,7 @@ patterns_set_pattern_invoker (Argument *args)
break;
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -508,7 +447,7 @@ static Argument *
patterns_list_invoker (Argument *args)
{
GPatternP patternp;
link_ptr list;
GSList *list;
char **patterns;
int i;
@ -522,7 +461,7 @@ patterns_list_invoker (Argument *args)
patternp = (GPatternP) list->data;
patterns[i++] = g_strdup (patternp->name);
list = next_item (list);
list = g_slist_next (list);
}
return_args = procedural_db_return_args (&patterns_list_proc, success);

View File

@ -18,7 +18,7 @@
#ifndef __PATTERNS_H__
#define __PATTERNS_H__
#include "linked.h"
#include <glib.h>
#include "temp_buf.h"
#include "procedural_db.h"
@ -42,7 +42,7 @@ GPatternP get_active_pattern (void);
void create_pattern_dialog (void);
/* global variables */
extern link_ptr pattern_list;
extern GSList * pattern_list;
extern int num_patterns;
/* Pattern procedures */

View File

@ -20,7 +20,6 @@
#include <stdarg.h>
#include <string.h>
#include "appenv.h"
#include "linked.h"
#include "pixel_region.h"
#include "tile_manager_pvt.h"
@ -40,7 +39,7 @@ typedef struct _PixelRegionIterator PixelRegionIterator;
struct _PixelRegionIterator
{
link_ptr pixel_regions;
GSList *pixel_regions;
int region_width;
int region_height;
int portion_width;
@ -292,7 +291,7 @@ pixel_regions_register (int num_regions, ...)
}
/* Add the pixel region holder to the list */
PRI->pixel_regions = add_to_list (PRI->pixel_regions, PRH);
PRI->pixel_regions = g_slist_prepend (PRI->pixel_regions, PRH);
}
va_end (ap);
@ -305,7 +304,7 @@ void *
pixel_regions_process (PRI_ptr)
void *PRI_ptr;
{
link_ptr list;
GSList *list;
PixelRegionHolder *PRH;
PixelRegionIterator *PRI;
@ -342,7 +341,7 @@ pixel_regions_process (PRI_ptr)
}
}
list = next_item (list);
list = g_slist_next (list);
}
return pixel_regions_configure (PRI);
@ -352,7 +351,7 @@ void
pixel_regions_process_stop (PRI_ptr)
void *PRI_ptr;
{
link_ptr list;
GSList *list;
PixelRegionHolder *PRH;
PixelRegionIterator *PRI;
@ -381,7 +380,7 @@ pixel_regions_process_stop (PRI_ptr)
}
}
list = next_item (list);
list = g_slist_next (list);
}
if (PRI->pixel_regions)
@ -390,9 +389,9 @@ pixel_regions_process_stop (PRI_ptr)
while (list)
{
g_free (list->data);
list = next_item (list);
list = g_slist_next (list);
}
free_list (PRI->pixel_regions);
g_slist_free (PRI->pixel_regions);
g_free (PRI);
}
}
@ -405,7 +404,7 @@ static int
get_portion_height (PRI)
PixelRegionIterator *PRI;
{
link_ptr list;
GSList *list;
PixelRegionHolder *PRH;
int min_height = G_MAXINT;
int height;
@ -437,7 +436,7 @@ get_portion_height (PRI)
min_height = height;
}
list = next_item (list);
list = g_slist_next (list);
}
return min_height;
@ -448,7 +447,7 @@ static int
get_portion_width (PRI)
PixelRegionIterator *PRI;
{
link_ptr list;
GSList *list;
PixelRegionHolder *PRH;
int min_width = G_MAXINT;
int width;
@ -480,7 +479,7 @@ get_portion_width (PRI)
min_width = width;
}
list = next_item (list);
list = g_slist_next (list);
}
return min_width;
@ -492,7 +491,7 @@ pixel_regions_configure (PRI)
PixelRegionIterator *PRI;
{
PixelRegionHolder *PRH;
link_ptr list;
GSList *list;
/* Determine the portion width and height */
PRI->portion_width = get_portion_width (PRI);
@ -507,9 +506,9 @@ pixel_regions_configure (PRI)
while (list)
{
g_free (list->data);
list = next_item (list);
list = g_slist_next (list);
}
free_list (PRI->pixel_regions);
g_slist_free (PRI->pixel_regions);
g_free (PRI);
}
@ -529,7 +528,7 @@ pixel_regions_configure (PRI)
pixel_region_configure (PRH, PRI);
}
list = next_item (list);
list = g_slist_next (list);
}
return PRI;

View File

@ -100,7 +100,7 @@ struct _FontInfo
int *spacings; /* An array of valid spacings */
int **combos; /* An array of valid combinations of the above 5 items */
int ncombos; /* The number of elements in the "combos" array */
link_ptr fontnames; /* An list of valid fontnames.
GSList *fontnames; /* An list of valid fontnames.
* This is used to make sure a family/foundry/weight/slant/set_width
* combination is valid.
*/
@ -131,7 +131,7 @@ static void text_validate_combo (TextTool *, int);
static void text_get_fonts (void);
static void text_insert_font (FontInfo **, int *, char *);
static link_ptr text_insert_field (link_ptr, char *, int);
static GSList* text_insert_field (GSList *, char *, int);
static char* text_get_field (char *, int);
static int text_field_to_index (char **, int, char *);
static int text_is_xlfd_font_name (char *);
@ -144,6 +144,8 @@ static void text_gdk_image_to_region (GdkImage *, int, PixelRegion *);
static int text_get_extents (char *, char *, int *, int *, int *, int *);
static Layer * text_render (GImage *, GimpDrawable *, int, int, char *, char *, int, int);
static int font_compare_func (gpointer, gpointer);
static Argument * text_tool_invoker (Argument *);
static Argument * text_tool_get_extents_invoker (Argument *);
@ -164,11 +166,11 @@ static TextTool *the_text_tool = NULL;
static FontInfo **font_info;
static int nfonts = -1;
static link_ptr foundries = NULL;
static link_ptr weights = NULL;
static link_ptr slants = NULL;
static link_ptr set_widths = NULL;
static link_ptr spacings = NULL;
static GSList *foundries = NULL;
static GSList *weights = NULL;
static GSList *slants = NULL;
static GSList *set_widths = NULL;
static GSList *spacings = NULL;
static char **foundry_array = NULL;
static char **weight_array = NULL;
@ -970,7 +972,7 @@ text_get_fonts ()
char **fontnames;
char *fontname;
char *field;
link_ptr temp_list;
GSList *temp_list;
int num_fonts;
int index;
int i, j;
@ -998,11 +1000,11 @@ text_get_fonts ()
XFreeFontNames (fontnames);
nfoundries = list_length (foundries) + 1;
nweights = list_length (weights) + 1;
nslants = list_length (slants) + 1;
nset_widths = list_length (set_widths) + 1;
nspacings = list_length (spacings) + 1;
nfoundries = g_slist_length (foundries) + 1;
nweights = g_slist_length (weights) + 1;
nslants = g_slist_length (slants) + 1;
nset_widths = g_slist_length (set_widths) + 1;
nspacings = g_slist_length (spacings) + 1;
foundry_array = g_malloc (sizeof (char*) * nfoundries);
weight_array = g_malloc (sizeof (char*) * nweights);
@ -1063,7 +1065,7 @@ text_get_fonts ()
font_info[i]->slants = g_malloc (sizeof (int) * nslants);
font_info[i]->set_widths = g_malloc (sizeof (int) * nset_widths);
font_info[i]->spacings = g_malloc (sizeof (int) * nspacings);
font_info[i]->ncombos = list_length (font_info[i]->fontnames);
font_info[i]->ncombos = g_slist_length (font_info[i]->fontnames);
font_info[i]->combos = g_malloc (sizeof (int*) * font_info[i]->ncombos);
for (j = 0; j < nfoundries; j++)
@ -1156,7 +1158,7 @@ text_insert_font (FontInfo **table,
cmp = strcmp (family, table[middle]->family);
if (cmp == 0)
{
table[middle]->fontnames = add_to_list (table[middle]->fontnames, g_strdup (fontname));
table[middle]->fontnames = g_slist_prepend (table[middle]->fontnames, g_strdup (fontname));
return;
}
else if (cmp < 0)
@ -1174,7 +1176,7 @@ text_insert_font (FontInfo **table,
table[*ntable]->slants = NULL;
table[*ntable]->set_widths = NULL;
table[*ntable]->fontnames = NULL;
table[*ntable]->fontnames = add_to_list (table[*ntable]->fontnames, g_strdup (fontname));
table[*ntable]->fontnames = g_slist_prepend (table[*ntable]->fontnames, g_strdup (fontname));
(*ntable)++;
/* Quickly insert the entry into the table in sorted order
@ -1198,62 +1200,24 @@ text_insert_font (FontInfo **table,
}
}
static link_ptr
text_insert_field (link_ptr list,
char *fontname,
int field_num)
static int
font_compare_func (gpointer a, gpointer b)
{
return strcmp (a, b);
}
static GSList *
text_insert_field (GSList *list,
char *fontname,
int field_num)
{
link_ptr temp_list;
link_ptr prev_list;
link_ptr new_list;
char *field;
int cmp;
field = text_get_field (fontname, field_num);
if (!field)
return list;
temp_list = list;
prev_list = NULL;
while (temp_list)
{
cmp = strcmp (field, temp_list->data);
if (cmp == 0)
{
free (field);
return list;
}
else if (cmp < 0)
{
new_list = alloc_list ();
new_list->data = field;
new_list->next = temp_list;
if (prev_list)
{
prev_list->next = new_list;
return list;
}
else
return new_list;
}
else
{
prev_list = temp_list;
temp_list = temp_list->next;
}
}
new_list = alloc_list ();
new_list->data = field;
new_list->next = NULL;
if (prev_list)
{
prev_list->next = new_list;
return list;
}
else
return new_list;
return g_slist_insert_sorted (list, field, font_compare_func);
}
static char*

View File

@ -25,7 +25,6 @@
#include "errors.h"
#include "gdisplay.h"
#include "gimage_mask.h"
#include "linked.h"
#include "rect_select.h"
#define BEZIER_START 1
@ -71,7 +70,7 @@ struct _bezier_select
BezierPoint *last_point; /* the last point on the curve */
int num_points; /* number of points in the curve */
Channel *mask; /* null if the curve is open */
link_ptr *scanlines; /* used in converting a curve */
GSList **scanlines; /* used in converting a curve */
};
static void bezier_select_reset (BezierSelect *);
@ -95,8 +94,8 @@ static void bezier_compose (BezierMatrix, BezierMatrix, BezierMa
static void bezier_convert (BezierSelect *, GDisplay *, int, int);
static void bezier_convert_points (BezierSelect *, GdkPoint *, int);
static void bezier_convert_line (link_ptr *, int, int, int, int);
static link_ptr bezier_insert_in_list (link_ptr, int);
static void bezier_convert_line (GSList **, int, int, int, int);
static GSList * bezier_insert_in_list (GSList *, int);
static BezierMatrix basis =
{
@ -1042,7 +1041,7 @@ bezier_convert (BezierSelect *bezier_sel,
PixelRegion maskPR;
BezierPoint * points;
BezierPoint * start_pt;
link_ptr list;
GSList * list;
unsigned char *buf, *b;
int draw_type;
int * vals, val;
@ -1084,7 +1083,7 @@ bezier_convert (BezierSelect *bezier_sel,
gdisp->gimage->height);
/* allocate room for the scanlines */
bezier_sel->scanlines = g_malloc (sizeof (link_ptr) * height);
bezier_sel->scanlines = g_malloc (sizeof (GSList *) * height);
/* zero out the scanlines */
for (i = 0; i < height; i++)
@ -1146,7 +1145,7 @@ bezier_convert (BezierSelect *bezier_sel,
for (j = 0; j < w; j++)
vals[j + x] += 255;
list = next_item (list);
list = g_slist_next (list);
}
}
@ -1168,7 +1167,7 @@ bezier_convert (BezierSelect *bezier_sel,
drawable_width (GIMP_DRAWABLE(bezier_sel->mask)), buf);
}
free_list (bezier_sel->scanlines[i]);
g_slist_free (bezier_sel->scanlines[i]);
}
if (antialias)
@ -1207,7 +1206,7 @@ bezier_convert_points (BezierSelect *bezier_sel,
}
static void
bezier_convert_line (link_ptr *scanlines,
bezier_convert_line (GSList ** scanlines,
int x1,
int y1,
int x2,
@ -1323,32 +1322,32 @@ bezier_convert_line (link_ptr *scanlines,
}
}
static link_ptr
bezier_insert_in_list (link_ptr list,
static GSList *
bezier_insert_in_list (GSList * list,
int x)
{
link_ptr orig = list;
link_ptr rest;
GSList * orig = list;
GSList * rest;
if (!list)
return add_to_list (list, (void *) ((long) x));
return g_slist_prepend (list, (void *) ((long) x));
while (list)
{
rest = next_item (list);
rest = g_slist_next (list);
if (x < (long) list->data)
{
rest = add_to_list (rest, list->data);
rest = g_slist_prepend (rest, list->data);
list->next = rest;
list->data = (void *) ((long) x);
return orig;
}
else if (!rest)
{
append_to_list (list, (void *) ((long) x));
g_slist_append (list, (void *) ((long) x));
return orig;
}
list = next_item (list);
list = g_slist_next (list);
}
return orig;

View File

@ -560,7 +560,7 @@ crop_image (GImage *gimage,
Layer *floating_layer;
Channel *channel;
GList *guide_list_ptr;
link_ptr list;
GSList *list;
int width, height;
int lx1, ly1, lx2, ly2;
int off_x, off_y;
@ -592,7 +592,7 @@ crop_image (GImage *gimage,
{
channel = (Channel *) list->data;
channel_resize (channel, width, height, -x1, -y1);
list = next_item (list);
list = g_slist_next (list);
}
/* Don't forget the selection mask! */
@ -616,7 +616,7 @@ crop_image (GImage *gimage,
width = lx2 - lx1;
height = ly2 - ly1;
list = next_item (list);
list = g_slist_next (list);
if (width && height)
layer_resize (layer, width, height,

View File

@ -161,7 +161,7 @@ edit_selection_button_release (Tool *tool,
GDisplay * gdisp;
Layer *layer;
Layer *floating_layer;
link_ptr layer_list;
GSList *layer_list;
gdisp = (GDisplay *) gdisp_ptr;
@ -223,7 +223,7 @@ edit_selection_button_release (Tool *tool,
if (layer == gdisp->gimage->active_layer ||
layer_linked (layer))
layer_translate (layer, (x - edit_select.origx), (y - edit_select.origy));
layer_list = next_item (layer_list);
layer_list = g_slist_next (layer_list);
}
if (floating_layer)
@ -296,7 +296,7 @@ edit_selection_draw (Tool *tool)
GdkSegment * seg;
Selection * select;
Layer *layer;
link_ptr layer_list;
GSList *layer_list;
int floating_sel;
int x1, y1, x2, y2;
int x3, y3, x4, y4;
@ -404,7 +404,7 @@ edit_selection_draw (Tool *tool)
if (y4 > y2)
y2 = y4;
}
layer_list = next_item (layer_list);
layer_list = g_slist_next (layer_list);
}
gdk_draw_rectangle (edit_select.core->win,
@ -485,7 +485,7 @@ edit_sel_arrow_keys_func (Tool *tool,
GDisplay *gdisp;
Layer *layer;
Layer *floating_layer;
link_ptr layer_list;
GSList *layer_list;
EditType edit_type;
layer = NULL;
@ -547,7 +547,7 @@ edit_sel_arrow_keys_func (Tool *tool,
layer = (Layer *) layer_list->data;
if (((layer) == gdisp->gimage->active_layer) || layer_linked (layer))
layer_translate (layer, inc_x, inc_y);
layer_list = next_item (layer_list);
layer_list = g_slist_next (layer_list);
}
if (floating_layer)

View File

@ -24,7 +24,6 @@
#include "free_select.h"
#include "gimage_mask.h"
#include "gdisplay.h"
#include "linked.h"
#include "rect_select.h"
typedef struct _free_select FreeSelect;
@ -80,38 +79,38 @@ add_point (int num_pts, int x, int y)
/* Routines to scan convert the polygon */
static link_ptr
insert_into_sorted_list (link_ptr list, int x)
static GSList *
insert_into_sorted_list (GSList *list, int x)
{
link_ptr orig = list;
link_ptr rest;
GSList *orig = list;
GSList *rest;
if (!list)
return add_to_list (list, (gpointer) ((long) x));
return g_slist_prepend (list, (gpointer) ((long) x));
while (list)
{
rest = next_item (list);
rest = g_slist_next (list);
if (x < (long) list->data)
{
rest = add_to_list (rest, list->data);
rest = g_slist_prepend (rest, list->data);
list->next = rest;
list->data = (gpointer) ((long) x);
return orig;
}
else if (!rest)
{
append_to_list (list, (gpointer) ((long) x));
g_slist_append (list, (gpointer) ((long) x));
return orig;
}
list = next_item (list);
list = g_slist_next (list);
}
return orig;
}
static void
convert_segment (link_ptr *scanlines, int width, int height,
convert_segment (GSList **scanlines, int width, int height,
int x1, int y1, int x2, int y2)
{
int ydiff, y, tmp;
@ -141,8 +140,8 @@ scan_convert (int gimage_ID, int num_pts, FreeSelectPoint *pts,
{
PixelRegion maskPR;
Channel * mask;
link_ptr * scanlines;
link_ptr list;
GSList **scanlines;
GSList *list;
unsigned char *buf, *b;
int * vals, val;
int start, end;
@ -166,7 +165,7 @@ scan_convert (int gimage_ID, int num_pts, FreeSelectPoint *pts,
vals = (int *) g_malloc (sizeof (int) * width);
}
scanlines = (link_ptr *) g_malloc (sizeof (link_ptr) * height);
scanlines = (GSList **) g_malloc (sizeof (GSList *) * height);
for (i = 0; i < height; i++)
scanlines[i] = NULL;
@ -211,7 +210,7 @@ scan_convert (int gimage_ID, int num_pts, FreeSelectPoint *pts,
while (list)
{
x = (long) list->data;
list = next_item(list);
list = g_slist_next(list);
if (!list)
warning ("Cannot properly scanline convert polygon!\n");
else
@ -230,7 +229,7 @@ scan_convert (int gimage_ID, int num_pts, FreeSelectPoint *pts,
for (j = 0; j < w; j++)
vals[j + x] += 255;
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -252,7 +251,7 @@ scan_convert (int gimage_ID, int num_pts, FreeSelectPoint *pts,
drawable_width (GIMP_DRAWABLE(mask)), buf);
}
free_list (scanlines[i]);
g_slist_free (scanlines[i]);
}
if (antialias)

View File

@ -560,7 +560,7 @@ crop_image (GImage *gimage,
Layer *floating_layer;
Channel *channel;
GList *guide_list_ptr;
link_ptr list;
GSList *list;
int width, height;
int lx1, ly1, lx2, ly2;
int off_x, off_y;
@ -592,7 +592,7 @@ crop_image (GImage *gimage,
{
channel = (Channel *) list->data;
channel_resize (channel, width, height, -x1, -y1);
list = next_item (list);
list = g_slist_next (list);
}
/* Don't forget the selection mask! */
@ -616,7 +616,7 @@ crop_image (GImage *gimage,
width = lx2 - lx1;
height = ly2 - ly1;
list = next_item (list);
list = g_slist_next (list);
if (width && height)
layer_resize (layer, width, height,

View File

@ -161,7 +161,7 @@ edit_selection_button_release (Tool *tool,
GDisplay * gdisp;
Layer *layer;
Layer *floating_layer;
link_ptr layer_list;
GSList *layer_list;
gdisp = (GDisplay *) gdisp_ptr;
@ -223,7 +223,7 @@ edit_selection_button_release (Tool *tool,
if (layer == gdisp->gimage->active_layer ||
layer_linked (layer))
layer_translate (layer, (x - edit_select.origx), (y - edit_select.origy));
layer_list = next_item (layer_list);
layer_list = g_slist_next (layer_list);
}
if (floating_layer)
@ -296,7 +296,7 @@ edit_selection_draw (Tool *tool)
GdkSegment * seg;
Selection * select;
Layer *layer;
link_ptr layer_list;
GSList *layer_list;
int floating_sel;
int x1, y1, x2, y2;
int x3, y3, x4, y4;
@ -404,7 +404,7 @@ edit_selection_draw (Tool *tool)
if (y4 > y2)
y2 = y4;
}
layer_list = next_item (layer_list);
layer_list = g_slist_next (layer_list);
}
gdk_draw_rectangle (edit_select.core->win,
@ -485,7 +485,7 @@ edit_sel_arrow_keys_func (Tool *tool,
GDisplay *gdisp;
Layer *layer;
Layer *floating_layer;
link_ptr layer_list;
GSList *layer_list;
EditType edit_type;
layer = NULL;
@ -547,7 +547,7 @@ edit_sel_arrow_keys_func (Tool *tool,
layer = (Layer *) layer_list->data;
if (((layer) == gdisp->gimage->active_layer) || layer_linked (layer))
layer_translate (layer, inc_x, inc_y);
layer_list = next_item (layer_list);
layer_list = g_slist_next (layer_list);
}
if (floating_layer)

View File

@ -24,7 +24,6 @@
#include "free_select.h"
#include "gimage_mask.h"
#include "gdisplay.h"
#include "linked.h"
#include "rect_select.h"
typedef struct _free_select FreeSelect;
@ -80,38 +79,38 @@ add_point (int num_pts, int x, int y)
/* Routines to scan convert the polygon */
static link_ptr
insert_into_sorted_list (link_ptr list, int x)
static GSList *
insert_into_sorted_list (GSList *list, int x)
{
link_ptr orig = list;
link_ptr rest;
GSList *orig = list;
GSList *rest;
if (!list)
return add_to_list (list, (gpointer) ((long) x));
return g_slist_prepend (list, (gpointer) ((long) x));
while (list)
{
rest = next_item (list);
rest = g_slist_next (list);
if (x < (long) list->data)
{
rest = add_to_list (rest, list->data);
rest = g_slist_prepend (rest, list->data);
list->next = rest;
list->data = (gpointer) ((long) x);
return orig;
}
else if (!rest)
{
append_to_list (list, (gpointer) ((long) x));
g_slist_append (list, (gpointer) ((long) x));
return orig;
}
list = next_item (list);
list = g_slist_next (list);
}
return orig;
}
static void
convert_segment (link_ptr *scanlines, int width, int height,
convert_segment (GSList **scanlines, int width, int height,
int x1, int y1, int x2, int y2)
{
int ydiff, y, tmp;
@ -141,8 +140,8 @@ scan_convert (int gimage_ID, int num_pts, FreeSelectPoint *pts,
{
PixelRegion maskPR;
Channel * mask;
link_ptr * scanlines;
link_ptr list;
GSList **scanlines;
GSList *list;
unsigned char *buf, *b;
int * vals, val;
int start, end;
@ -166,7 +165,7 @@ scan_convert (int gimage_ID, int num_pts, FreeSelectPoint *pts,
vals = (int *) g_malloc (sizeof (int) * width);
}
scanlines = (link_ptr *) g_malloc (sizeof (link_ptr) * height);
scanlines = (GSList **) g_malloc (sizeof (GSList *) * height);
for (i = 0; i < height; i++)
scanlines[i] = NULL;
@ -211,7 +210,7 @@ scan_convert (int gimage_ID, int num_pts, FreeSelectPoint *pts,
while (list)
{
x = (long) list->data;
list = next_item(list);
list = g_slist_next(list);
if (!list)
warning ("Cannot properly scanline convert polygon!\n");
else
@ -230,7 +229,7 @@ scan_convert (int gimage_ID, int num_pts, FreeSelectPoint *pts,
for (j = 0; j < w; j++)
vals[j + x] += 255;
}
list = next_item (list);
list = g_slist_next (list);
}
}
@ -252,7 +251,7 @@ scan_convert (int gimage_ID, int num_pts, FreeSelectPoint *pts,
drawable_width (GIMP_DRAWABLE(mask)), buf);
}
free_list (scanlines[i]);
g_slist_free (scanlines[i]);
}
if (antialias)

View File

@ -26,6 +26,8 @@
#include "appenv.h"
#include "bezier_selectP.h"
#include "draw_core.h"
#include "channel_pvt.h"
#include "drawable.h"
#include "errors.h"
#include "gdisplay.h"
#include "gimage_mask.h"
@ -229,8 +231,8 @@ static void make_curve_d (int *, int *, double, int);
/* Catmull-Rom boundary conversion */
static void CR_convert (Iscissors * , GDisplay *, int);
static void CR_convert_points (GdkPoint *, int);
static void CR_convert_line (link_ptr *, int, int, int, int);
static link_ptr CR_insert_in_list (link_ptr, int);
static void CR_convert_line (GSList **, int, int, int, int);
static GSList * CR_insert_in_list (GSList *, int);
/*******************************************************/
@ -441,12 +443,12 @@ iscissors_button_press (Tool *tool,
gdisp = (GDisplay *) gdisp_ptr;
iscissors = (Iscissors *) tool->private;
message_box ("Intelligent Scissors is currently not enabled\nfor use with the tile-based GIMP",
/* message_box ("Intelligent Scissors is currently not enabled\nfor use with the tile-based GIMP",
NULL, NULL);
return;
return;*/
gdisplay_untransform_coords (gdisp, bevent->x, bevent->y,
&iscissors->x, &iscissors->y, FALSE, 1);
&iscissors->x, &iscissors->y, FALSE, TRUE);
/* If the tool was being used in another image...reset it */
if (tool->state == ACTIVE && gdisp_ptr != tool->gdisp_ptr)
@ -484,11 +486,11 @@ iscissors_button_press (Tool *tool,
}
/* If the edge map blocks haven't been allocated, do so now */
/*FIX if (!edge_map_blocks)
if (!edge_map_blocks)
allocate_edge_map_blocks (BLOCK_WIDTH, BLOCK_HEIGHT,
gimage_width (gdisp->gimage),
gimage_height (gdisp->gimage));
*/
gdisp->gimage->width,
gdisp->gimage->height);
iscissors->num_segs = 0;
add_segment (&(iscissors->num_segs), bevent->x, bevent->y);
@ -497,7 +499,7 @@ iscissors_button_press (Tool *tool,
tool);
break;
case BOUNDARY_MODE:
if (channel_value (iscissors->mask, iscissors->x, iscissors->y))
if (/*channel_value (iscissors->mask, iscissors->x, iscissors->y)*/ TRUE)
{
replace = 0;
if (bevent->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK))
@ -560,7 +562,7 @@ iscissors_button_release (Tool *tool,
gdisp = (GDisplay *) gdisp_ptr;
iscissors = (Iscissors *) tool->private;
return;
/*return;*/
gdk_pointer_ungrab (bevent->time);
gdk_flush ();
@ -696,7 +698,7 @@ iscissors_draw_CR (GDisplay *gdisp,
break;
case SCREEN_COORDS:
gdisplay_transform_coords_f (gdisp, (int) pts[indices[i]].dx,
(int) pts[indices[i]].dy, &x, &y, FALSE);
(int) pts[indices[i]].dy, &x, &y, TRUE);
geometry[i][0] = x;
geometry[i][1] = y;
break;
@ -987,6 +989,7 @@ get_kink (Kink *kinks,
return kinks + index;
}
/* I don't think this ever gets called -- Rockwalrus */
return NULL;
}
@ -1311,9 +1314,9 @@ process_kinks (Tool *tool)
{
/* transform from screen to image coordinates */
gdisplay_untransform_coords (gdisp, kinks[i].x, kinks[i].y,
&x, &y, FALSE, FALSE);
/*FIXkinks[i].x = BOUNDS (x, 0, (gimage_width (gdisp->gimage) - 1));
kinks[i].y = BOUNDS (y, 0, (gimage_height (gdisp->gimage) - 1));*/
&x, &y, FALSE, TRUE);
kinks[i].x = BOUNDS (x, 0, (gdisp->gimage->width - 1));
kinks[i].y = BOUNDS (y, 0, (gdisp->gimage->height - 1));
/* get local maximums */
k_left = get_kink (kinks, i-1, iscissors->num_kinks);
@ -1398,21 +1401,21 @@ edge_map_from_boundary (Tool *tool)
x = y = w = h = x1 = y1 = x2 = y2 = 0;
/*FIXx1 = gimage_width (gdisp->gimage);
y1 = gimage_height (gdisp->gimage);*/
x1 = gdisp->gimage->width;
y1 = gdisp->gimage->height;
/* Find the edge map extents */
for (i = 0; i < iscissors->num_pts; i++)
{
/*FIX x = BOUNDS (pts[i].x - LOCALIZE_RADIUS, 0,
gimage_width (gdisp->gimage));
x = BOUNDS (pts[i].x - LOCALIZE_RADIUS, 0,
gdisp->gimage->width);
y = BOUNDS (pts[i].y - LOCALIZE_RADIUS, 0,
gimage_height (gdisp->gimage));
gdisp->gimage->height);
w = BOUNDS (pts[i].x + LOCALIZE_RADIUS, 0,
gimage_width (gdisp->gimage));
gdisp->gimage->width);
h = BOUNDS (pts[i].y + LOCALIZE_RADIUS, 0,
gimage_height (gdisp->gimage));
*/
gdisp->gimage->height);
w -= x;
h -= y;
@ -1444,7 +1447,7 @@ orient_boundary (Tool *tool)
double edge1[EDGE_WIDTH], edge2[EDGE_WIDTH];
double max;
double angle;
int dir;
int dir = 0;
int i, j;
int max_dir;
int max_orient;
@ -1746,7 +1749,13 @@ calculate_edge_map (GImage *gimage,
int xx, yy;
unsigned char *gr, * dh, * dv, * cm;
int hmax, vmax;
int b;
double prev, next;
GimpDrawable *drawable;
void *pr;
FILE *dump;
drawable = gimage_active_drawable (gimage);
x1 = y1 = x2 = y2 = 0;
@ -1754,31 +1763,38 @@ calculate_edge_map (GImage *gimage,
edge_map = temp_buf_new (w, h, EDGE_WIDTH, x, y, NULL);
/* calculate the extent of the search make a 1 pixel border */
/*FIXx1 = BOUNDS (x, 0, gimage_width (gimage));
y1 = BOUNDS (y, 0, gimage_height (gimage));
x2 = BOUNDS (x + w, 0, gimage_width (gimage));
y2 = BOUNDS (y + h, 0, gimage_height (gimage));*/
x1 = BOUNDS (x, 0, gimage->width);
y1 = BOUNDS (y, 0, gimage->height);
x2 = BOUNDS (x + w, 0, gimage->width);
y2 = BOUNDS (y + h, 0, gimage->height);
width = x2 - x1;
height = y2 - y1;
offx = (x - x1);
offy = (y - y1);
/* Set the gimage up as the source pixel region */
/* FIX srcPR.bytes = gimage_bytes (gimage);*/
/* Set the drawable up as the source pixel region */
/*srcPR.bytes = drawable_bytes (drawable);
srcPR.w = width;
srcPR.h = height;
/* FIX srcPR.rowstride = gimage_width (gimage) * gimage_bytes (gimage);*/
/*FIXsrcPR.data = gimage_data (gimage) + y1 * srcPR.rowstride + x1 * srcPR.bytes;*/
srcPR.rowstride = gimage->width * drawable_bytes (drawable);
srcPR.data = drawable_data (drawable) + y1 * srcPR.rowstride + x1 * srcPR.bytes;*/
pixel_region_init(&srcPR, drawable_data(drawable), x1, y1, width, height, 1);
/* Get the horizontal derivative */
destPR.data = conv1 + MAX_CHANNELS * (CONV_WIDTH * offy + offx);
destPR.rowstride = CONV_WIDTH * MAX_CHANNELS;
gaussian_deriv (&srcPR, &destPR, HORIZONTAL, std_dev);
destPR.tiles = NULL;
for (pr =pixel_regions_register (2, &srcPR, &destPR); pr != NULL; pr = pixel_regions_process (pr))
gaussian_deriv (&srcPR, &destPR, HORIZONTAL, std_dev);
/* Get the vertical derivative */
destPR.data = conv2 + MAX_CHANNELS * (CONV_WIDTH * offy + offx);
gaussian_deriv (&srcPR, &destPR, VERTICAL, std_dev);
for (pr =pixel_regions_register (2, &srcPR, &destPR); pr != NULL; pr = pixel_regions_process (pr))
gaussian_deriv (&srcPR, &destPR, VERTICAL, std_dev);
/* fill in the edge map */
@ -1792,11 +1808,13 @@ calculate_edge_map (GImage *gimage,
{
hmax = dh[0] - 128;
vmax = dv[0] - 128;
/*FIX for (b = 1; b < gimage_bytes (gimage); b++)
for (b = 1; b < drawable_bytes (drawable); b++)
{
if (abs (dh[b] - 128) > abs (hmax)) hmax = dh[b] - 128;
if (abs (dv[b] - 128) > abs (vmax)) vmax = dv[b] - 128;
}*/
if (abs (dh[b] - 128) > abs (hmax))
hmax = dh[b] - 128;
if (abs (dv[b] - 128) > abs (vmax))
vmax = dv[b] - 128;
}
/* store the information in the edge map */
dh[0] = hmax + 128;
@ -1819,7 +1837,7 @@ calculate_edge_map (GImage *gimage,
}
/* Make the edge gradient map extend one row further */
memcpy (grad, grad + (CONV_WIDTH+2), (CONV_WIDTH+2));
memcpy (grad, grad + (CONV_WIDTH+2), (CONV_WIDTH+2));
memcpy (grad + (CONV_WIDTH+2) * (CONV_HEIGHT+1),
grad + (CONV_WIDTH+2) * (CONV_HEIGHT),
(CONV_WIDTH+2));
@ -1851,18 +1869,22 @@ calculate_edge_map (GImage *gimage,
else
*cm++ = 0;
/*
*cm++ = dh[0];
*cm++ = dv[0];
*/
/*cm++ = dh[0];*/
/*cm++ = dv[0];*/
dh += srcPR.bytes;
dv += srcPR.bytes;
gr ++;
}
}
/* dump=fopen("/ugrad/summersn/dump", "w"); */
/* fprintf(dump, "P5\n%d %d\n255\n", edge_map->width, edge_map->height); */
/* fwrite(edge_map->data, edge_map->width * edge_map->height, sizeof (guchar), dump); */
/* fclose (dump); */
return edge_map;
return edge_map;
}
static void
@ -1877,10 +1899,17 @@ construct_edge_map (Tool *tool,
int offx, offy;
int x2, y2;
PixelRegion srcPR, destPR;
FILE *dump;
/* init some variables */
srcPR.bytes = edge_buf->bytes;
destPR.rowstride = edge_buf->bytes * edge_buf->width;
destPR.x = edge_buf->x;
destPR.y = edge_buf->y;
destPR.h = edge_buf->height;
destPR.w = edge_buf -> width;
destPR.bytes = edge_buf->bytes;
srcPR.tiles = destPR.tiles = NULL;
y = edge_buf->y;
endx = edge_buf->x + edge_buf->width;
@ -1906,7 +1935,7 @@ construct_edge_map (Tool *tool,
/* If the block exists, patch it into buf */
if (block)
{
/* calculate x offset into the block */
/* calculate x offset into the block */
offx = (x - col * BLOCK_WIDTH);
x2 = (col + 1) * BLOCK_WIDTH;
if (x2 > endx) x2 = endx;
@ -1929,8 +1958,12 @@ construct_edge_map (Tool *tool,
y = row * BLOCK_HEIGHT;
}
/* show the edge buffer */
/* temp_buf_to_gdisplay (edge_buf);*/
/* dump the edge buffer for debugging*/
/* dump=fopen("/ugrad/summersn/dump", "w");
fprintf(dump, "P5\n%d %d\n255\n", edge_buf->width, edge_buf->height);
fwrite(edge_buf->data, edge_buf->width * edge_buf->height, sizeof (guchar), dump);
fclose (dump); */
}
@ -1955,8 +1988,8 @@ set_edge_map_blocks (void *gimage_ptr,
width = height = 0;
gimage = (GImage *) gimage_ptr;
/*FIXwidth = gimage_width (gimage);*/
/*FIXheight = gimage_height (gimage);*/
width = gimage->width;
height = gimage->height;
startx = x;
endx = x + w;
@ -2327,7 +2360,7 @@ make_curve_d (int *curve,
/* Functions for Catmull-Rom area conversion */
/***********************************************/
static link_ptr * CR_scanlines;
static GSList **CR_scanlines;
static int start_convert;
static int width, height;
static int lastx;
@ -2339,12 +2372,13 @@ CR_convert (Iscissors *iscissors,
int antialias)
{
int indices[4];
link_ptr list;
unsigned char *dest;
GSList *list;
int draw_type;
int * vals, val;
int x, w;
int i, j;
PixelRegion maskPR;
unsigned char *buf, *b;
vals = NULL;
@ -2363,12 +2397,15 @@ CR_convert (Iscissors *iscissors,
draw_type = AA_IMAGE_COORDS;
/* allocate value array */
vals = (int *) g_malloc (sizeof (int) * width);
buf = (unsigned char *) g_malloc (sizeof(unsigned char *) * width);
}
else
{
width = gdisp->gimage->width;
height = gdisp->gimage->height;
draw_type = IMAGE_COORDS;
buf = NULL;
vals = NULL;
}
/* create a new mask */
@ -2376,7 +2413,7 @@ CR_convert (Iscissors *iscissors,
gdisp->gimage->height);
/* allocate room for the scanlines */
CR_scanlines = g_malloc (sizeof (link_ptr) * height);
CR_scanlines = g_malloc (sizeof (GSList *) * height);
/* zero out the scanlines */
for (i = 0; i < height; i++)
@ -2394,7 +2431,9 @@ CR_convert (Iscissors *iscissors,
iscissors_draw_CR (gdisp, iscissors, pts, indices, draw_type);
}
dest = channel_data (iscissors->mask);
pixel_region_init (&maskPR, iscissors->mask->drawable.tiles, 0, 0,
iscissors->mask->drawable.width,
iscissors->mask->drawable.height, TRUE);
for (i = 0; i < height; i++)
{
@ -2418,21 +2457,25 @@ CR_convert (Iscissors *iscissors,
for (j = 0; j < w; j++)
vals[j + x] += 255;
list = next_item (list);
list = g_slist_next (list);
}
}
if (antialias && !((i+1) % SUPERSAMPLE))
for (j = 0; j < width; j += SUPERSAMPLE)
{
val = 0;
for (x = 0; x < SUPERSAMPLE; x++)
val += vals[j + x];
{
b = buf;
for (j = 0; j < width; j += SUPERSAMPLE)
{
val = 0;
for (x = 0; x < SUPERSAMPLE; x++)
val += vals[j + x];
*dest++ = val / SUPERSAMPLE2;
}
*b++ = (unsigned char) (val / SUPERSAMPLE2);
}
pixel_region_set_row (&maskPR, 0, (i / SUPERSAMPLE), iscissors->mask->drawable.width, buf);
}
free_list (CR_scanlines[i]);
g_slist_free (CR_scanlines[i]);
}
if (antialias)
@ -2465,11 +2508,11 @@ CR_convert_points (GdkPoint *points,
}
static void
CR_convert_line (link_ptr *scanlines,
int x1,
int y1,
int x2,
int y2)
CR_convert_line (GSList **scanlines,
int x1,
int y1,
int x2,
int y2)
{
int dx, dy;
int error, inc;
@ -2581,32 +2624,32 @@ CR_convert_line (link_ptr *scanlines,
}
}
static link_ptr
CR_insert_in_list (link_ptr list,
int x)
static GSList *
CR_insert_in_list (GSList *list,
int x)
{
link_ptr orig = list;
link_ptr rest;
GSList *orig = list;
GSList *rest;
if (!list)
return add_to_list (list, (gpointer) ((long) x));
return g_slist_prepend (list, (gpointer) ((long) x));
while (list)
{
rest = next_item (list);
rest = g_slist_next (list);
if (x < (long) list->data)
{
rest = add_to_list (rest, list->data);
rest = g_slist_prepend (rest, list->data);
list->next = rest;
list->data = (gpointer) ((long) x);
return orig;
}
else if (!rest)
{
append_to_list (list, (gpointer) ((long) x));
g_slist_append (list, (gpointer) ((long) x));
return orig;
}
list = next_item (list);
list = g_slist_next (list);
}
return orig;

View File

@ -24,7 +24,6 @@
#include "gimage_mask.h"
#include "gdisplay.h"
#include "gdisplay_ops.h"
#include "linked.h"
#include "move.h"
#include "undo.h"

View File

@ -100,7 +100,7 @@ struct _FontInfo
int *spacings; /* An array of valid spacings */
int **combos; /* An array of valid combinations of the above 5 items */
int ncombos; /* The number of elements in the "combos" array */
link_ptr fontnames; /* An list of valid fontnames.
GSList *fontnames; /* An list of valid fontnames.
* This is used to make sure a family/foundry/weight/slant/set_width
* combination is valid.
*/
@ -131,7 +131,7 @@ static void text_validate_combo (TextTool *, int);
static void text_get_fonts (void);
static void text_insert_font (FontInfo **, int *, char *);
static link_ptr text_insert_field (link_ptr, char *, int);
static GSList* text_insert_field (GSList *, char *, int);
static char* text_get_field (char *, int);
static int text_field_to_index (char **, int, char *);
static int text_is_xlfd_font_name (char *);
@ -144,6 +144,8 @@ static void text_gdk_image_to_region (GdkImage *, int, PixelRegion *);
static int text_get_extents (char *, char *, int *, int *, int *, int *);
static Layer * text_render (GImage *, GimpDrawable *, int, int, char *, char *, int, int);
static int font_compare_func (gpointer, gpointer);
static Argument * text_tool_invoker (Argument *);
static Argument * text_tool_get_extents_invoker (Argument *);
@ -164,11 +166,11 @@ static TextTool *the_text_tool = NULL;
static FontInfo **font_info;
static int nfonts = -1;
static link_ptr foundries = NULL;
static link_ptr weights = NULL;
static link_ptr slants = NULL;
static link_ptr set_widths = NULL;
static link_ptr spacings = NULL;
static GSList *foundries = NULL;
static GSList *weights = NULL;
static GSList *slants = NULL;
static GSList *set_widths = NULL;
static GSList *spacings = NULL;
static char **foundry_array = NULL;
static char **weight_array = NULL;
@ -970,7 +972,7 @@ text_get_fonts ()
char **fontnames;
char *fontname;
char *field;
link_ptr temp_list;
GSList *temp_list;
int num_fonts;
int index;
int i, j;
@ -998,11 +1000,11 @@ text_get_fonts ()
XFreeFontNames (fontnames);
nfoundries = list_length (foundries) + 1;
nweights = list_length (weights) + 1;
nslants = list_length (slants) + 1;
nset_widths = list_length (set_widths) + 1;
nspacings = list_length (spacings) + 1;
nfoundries = g_slist_length (foundries) + 1;
nweights = g_slist_length (weights) + 1;
nslants = g_slist_length (slants) + 1;
nset_widths = g_slist_length (set_widths) + 1;
nspacings = g_slist_length (spacings) + 1;
foundry_array = g_malloc (sizeof (char*) * nfoundries);
weight_array = g_malloc (sizeof (char*) * nweights);
@ -1063,7 +1065,7 @@ text_get_fonts ()
font_info[i]->slants = g_malloc (sizeof (int) * nslants);
font_info[i]->set_widths = g_malloc (sizeof (int) * nset_widths);
font_info[i]->spacings = g_malloc (sizeof (int) * nspacings);
font_info[i]->ncombos = list_length (font_info[i]->fontnames);
font_info[i]->ncombos = g_slist_length (font_info[i]->fontnames);
font_info[i]->combos = g_malloc (sizeof (int*) * font_info[i]->ncombos);
for (j = 0; j < nfoundries; j++)
@ -1156,7 +1158,7 @@ text_insert_font (FontInfo **table,
cmp = strcmp (family, table[middle]->family);
if (cmp == 0)
{
table[middle]->fontnames = add_to_list (table[middle]->fontnames, g_strdup (fontname));
table[middle]->fontnames = g_slist_prepend (table[middle]->fontnames, g_strdup (fontname));
return;
}
else if (cmp < 0)
@ -1174,7 +1176,7 @@ text_insert_font (FontInfo **table,
table[*ntable]->slants = NULL;
table[*ntable]->set_widths = NULL;
table[*ntable]->fontnames = NULL;
table[*ntable]->fontnames = add_to_list (table[*ntable]->fontnames, g_strdup (fontname));
table[*ntable]->fontnames = g_slist_prepend (table[*ntable]->fontnames, g_strdup (fontname));
(*ntable)++;
/* Quickly insert the entry into the table in sorted order
@ -1198,62 +1200,24 @@ text_insert_font (FontInfo **table,
}
}
static link_ptr
text_insert_field (link_ptr list,
char *fontname,
int field_num)
static int
font_compare_func (gpointer a, gpointer b)
{
return strcmp (a, b);
}
static GSList *
text_insert_field (GSList *list,
char *fontname,
int field_num)
{
link_ptr temp_list;
link_ptr prev_list;
link_ptr new_list;
char *field;
int cmp;
field = text_get_field (fontname, field_num);
if (!field)
return list;
temp_list = list;
prev_list = NULL;
while (temp_list)
{
cmp = strcmp (field, temp_list->data);
if (cmp == 0)
{
free (field);
return list;
}
else if (cmp < 0)
{
new_list = alloc_list ();
new_list->data = field;
new_list->next = temp_list;
if (prev_list)
{
prev_list->next = new_list;
return list;
}
else
return new_list;
}
else
{
prev_list = temp_list;
temp_list = temp_list->next;
}
}
new_list = alloc_list ();
new_list->data = field;
new_list->next = NULL;
if (prev_list)
{
prev_list->next = new_list;
return list;
}
else
return new_list;
return g_slist_insert_sorted (list, field, font_compare_func);
}
static char*

View File

@ -26,6 +26,8 @@
#include "appenv.h"
#include "bezier_selectP.h"
#include "draw_core.h"
#include "channel_pvt.h"
#include "drawable.h"
#include "errors.h"
#include "gdisplay.h"
#include "gimage_mask.h"
@ -229,8 +231,8 @@ static void make_curve_d (int *, int *, double, int);
/* Catmull-Rom boundary conversion */
static void CR_convert (Iscissors * , GDisplay *, int);
static void CR_convert_points (GdkPoint *, int);
static void CR_convert_line (link_ptr *, int, int, int, int);
static link_ptr CR_insert_in_list (link_ptr, int);
static void CR_convert_line (GSList **, int, int, int, int);
static GSList * CR_insert_in_list (GSList *, int);
/*******************************************************/
@ -441,12 +443,12 @@ iscissors_button_press (Tool *tool,
gdisp = (GDisplay *) gdisp_ptr;
iscissors = (Iscissors *) tool->private;
message_box ("Intelligent Scissors is currently not enabled\nfor use with the tile-based GIMP",
/* message_box ("Intelligent Scissors is currently not enabled\nfor use with the tile-based GIMP",
NULL, NULL);
return;
return;*/
gdisplay_untransform_coords (gdisp, bevent->x, bevent->y,
&iscissors->x, &iscissors->y, FALSE, 1);
&iscissors->x, &iscissors->y, FALSE, TRUE);
/* If the tool was being used in another image...reset it */
if (tool->state == ACTIVE && gdisp_ptr != tool->gdisp_ptr)
@ -484,11 +486,11 @@ iscissors_button_press (Tool *tool,
}
/* If the edge map blocks haven't been allocated, do so now */
/*FIX if (!edge_map_blocks)
if (!edge_map_blocks)
allocate_edge_map_blocks (BLOCK_WIDTH, BLOCK_HEIGHT,
gimage_width (gdisp->gimage),
gimage_height (gdisp->gimage));
*/
gdisp->gimage->width,
gdisp->gimage->height);
iscissors->num_segs = 0;
add_segment (&(iscissors->num_segs), bevent->x, bevent->y);
@ -497,7 +499,7 @@ iscissors_button_press (Tool *tool,
tool);
break;
case BOUNDARY_MODE:
if (channel_value (iscissors->mask, iscissors->x, iscissors->y))
if (/*channel_value (iscissors->mask, iscissors->x, iscissors->y)*/ TRUE)
{
replace = 0;
if (bevent->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK))
@ -560,7 +562,7 @@ iscissors_button_release (Tool *tool,
gdisp = (GDisplay *) gdisp_ptr;
iscissors = (Iscissors *) tool->private;
return;
/*return;*/
gdk_pointer_ungrab (bevent->time);
gdk_flush ();
@ -696,7 +698,7 @@ iscissors_draw_CR (GDisplay *gdisp,
break;
case SCREEN_COORDS:
gdisplay_transform_coords_f (gdisp, (int) pts[indices[i]].dx,
(int) pts[indices[i]].dy, &x, &y, FALSE);
(int) pts[indices[i]].dy, &x, &y, TRUE);
geometry[i][0] = x;
geometry[i][1] = y;
break;
@ -987,6 +989,7 @@ get_kink (Kink *kinks,
return kinks + index;
}
/* I don't think this ever gets called -- Rockwalrus */
return NULL;
}
@ -1311,9 +1314,9 @@ process_kinks (Tool *tool)
{
/* transform from screen to image coordinates */
gdisplay_untransform_coords (gdisp, kinks[i].x, kinks[i].y,
&x, &y, FALSE, FALSE);
/*FIXkinks[i].x = BOUNDS (x, 0, (gimage_width (gdisp->gimage) - 1));
kinks[i].y = BOUNDS (y, 0, (gimage_height (gdisp->gimage) - 1));*/
&x, &y, FALSE, TRUE);
kinks[i].x = BOUNDS (x, 0, (gdisp->gimage->width - 1));
kinks[i].y = BOUNDS (y, 0, (gdisp->gimage->height - 1));
/* get local maximums */
k_left = get_kink (kinks, i-1, iscissors->num_kinks);
@ -1398,21 +1401,21 @@ edge_map_from_boundary (Tool *tool)
x = y = w = h = x1 = y1 = x2 = y2 = 0;
/*FIXx1 = gimage_width (gdisp->gimage);
y1 = gimage_height (gdisp->gimage);*/
x1 = gdisp->gimage->width;
y1 = gdisp->gimage->height;
/* Find the edge map extents */
for (i = 0; i < iscissors->num_pts; i++)
{
/*FIX x = BOUNDS (pts[i].x - LOCALIZE_RADIUS, 0,
gimage_width (gdisp->gimage));
x = BOUNDS (pts[i].x - LOCALIZE_RADIUS, 0,
gdisp->gimage->width);
y = BOUNDS (pts[i].y - LOCALIZE_RADIUS, 0,
gimage_height (gdisp->gimage));
gdisp->gimage->height);
w = BOUNDS (pts[i].x + LOCALIZE_RADIUS, 0,
gimage_width (gdisp->gimage));
gdisp->gimage->width);
h = BOUNDS (pts[i].y + LOCALIZE_RADIUS, 0,
gimage_height (gdisp->gimage));
*/
gdisp->gimage->height);
w -= x;
h -= y;
@ -1444,7 +1447,7 @@ orient_boundary (Tool *tool)
double edge1[EDGE_WIDTH], edge2[EDGE_WIDTH];
double max;
double angle;
int dir;
int dir = 0;
int i, j;
int max_dir;
int max_orient;
@ -1746,7 +1749,13 @@ calculate_edge_map (GImage *gimage,
int xx, yy;
unsigned char *gr, * dh, * dv, * cm;
int hmax, vmax;
int b;
double prev, next;
GimpDrawable *drawable;
void *pr;
FILE *dump;
drawable = gimage_active_drawable (gimage);
x1 = y1 = x2 = y2 = 0;
@ -1754,31 +1763,38 @@ calculate_edge_map (GImage *gimage,
edge_map = temp_buf_new (w, h, EDGE_WIDTH, x, y, NULL);
/* calculate the extent of the search make a 1 pixel border */
/*FIXx1 = BOUNDS (x, 0, gimage_width (gimage));
y1 = BOUNDS (y, 0, gimage_height (gimage));
x2 = BOUNDS (x + w, 0, gimage_width (gimage));
y2 = BOUNDS (y + h, 0, gimage_height (gimage));*/
x1 = BOUNDS (x, 0, gimage->width);
y1 = BOUNDS (y, 0, gimage->height);
x2 = BOUNDS (x + w, 0, gimage->width);
y2 = BOUNDS (y + h, 0, gimage->height);
width = x2 - x1;
height = y2 - y1;
offx = (x - x1);
offy = (y - y1);
/* Set the gimage up as the source pixel region */
/* FIX srcPR.bytes = gimage_bytes (gimage);*/
/* Set the drawable up as the source pixel region */
/*srcPR.bytes = drawable_bytes (drawable);
srcPR.w = width;
srcPR.h = height;
/* FIX srcPR.rowstride = gimage_width (gimage) * gimage_bytes (gimage);*/
/*FIXsrcPR.data = gimage_data (gimage) + y1 * srcPR.rowstride + x1 * srcPR.bytes;*/
srcPR.rowstride = gimage->width * drawable_bytes (drawable);
srcPR.data = drawable_data (drawable) + y1 * srcPR.rowstride + x1 * srcPR.bytes;*/
pixel_region_init(&srcPR, drawable_data(drawable), x1, y1, width, height, 1);
/* Get the horizontal derivative */
destPR.data = conv1 + MAX_CHANNELS * (CONV_WIDTH * offy + offx);
destPR.rowstride = CONV_WIDTH * MAX_CHANNELS;
gaussian_deriv (&srcPR, &destPR, HORIZONTAL, std_dev);
destPR.tiles = NULL;
for (pr =pixel_regions_register (2, &srcPR, &destPR); pr != NULL; pr = pixel_regions_process (pr))
gaussian_deriv (&srcPR, &destPR, HORIZONTAL, std_dev);
/* Get the vertical derivative */
destPR.data = conv2 + MAX_CHANNELS * (CONV_WIDTH * offy + offx);
gaussian_deriv (&srcPR, &destPR, VERTICAL, std_dev);
for (pr =pixel_regions_register (2, &srcPR, &destPR); pr != NULL; pr = pixel_regions_process (pr))
gaussian_deriv (&srcPR, &destPR, VERTICAL, std_dev);
/* fill in the edge map */
@ -1792,11 +1808,13 @@ calculate_edge_map (GImage *gimage,
{
hmax = dh[0] - 128;
vmax = dv[0] - 128;
/*FIX for (b = 1; b < gimage_bytes (gimage); b++)
for (b = 1; b < drawable_bytes (drawable); b++)
{
if (abs (dh[b] - 128) > abs (hmax)) hmax = dh[b] - 128;
if (abs (dv[b] - 128) > abs (vmax)) vmax = dv[b] - 128;
}*/
if (abs (dh[b] - 128) > abs (hmax))
hmax = dh[b] - 128;
if (abs (dv[b] - 128) > abs (vmax))
vmax = dv[b] - 128;
}
/* store the information in the edge map */
dh[0] = hmax + 128;
@ -1819,7 +1837,7 @@ calculate_edge_map (GImage *gimage,
}
/* Make the edge gradient map extend one row further */
memcpy (grad, grad + (CONV_WIDTH+2), (CONV_WIDTH+2));
memcpy (grad, grad + (CONV_WIDTH+2), (CONV_WIDTH+2));
memcpy (grad + (CONV_WIDTH+2) * (CONV_HEIGHT+1),
grad + (CONV_WIDTH+2) * (CONV_HEIGHT),
(CONV_WIDTH+2));
@ -1851,18 +1869,22 @@ calculate_edge_map (GImage *gimage,
else
*cm++ = 0;
/*
*cm++ = dh[0];
*cm++ = dv[0];
*/
/*cm++ = dh[0];*/
/*cm++ = dv[0];*/
dh += srcPR.bytes;
dv += srcPR.bytes;
gr ++;
}
}
/* dump=fopen("/ugrad/summersn/dump", "w"); */
/* fprintf(dump, "P5\n%d %d\n255\n", edge_map->width, edge_map->height); */
/* fwrite(edge_map->data, edge_map->width * edge_map->height, sizeof (guchar), dump); */
/* fclose (dump); */
return edge_map;
return edge_map;
}
static void
@ -1877,10 +1899,17 @@ construct_edge_map (Tool *tool,
int offx, offy;
int x2, y2;
PixelRegion srcPR, destPR;
FILE *dump;
/* init some variables */
srcPR.bytes = edge_buf->bytes;
destPR.rowstride = edge_buf->bytes * edge_buf->width;
destPR.x = edge_buf->x;
destPR.y = edge_buf->y;
destPR.h = edge_buf->height;
destPR.w = edge_buf -> width;
destPR.bytes = edge_buf->bytes;
srcPR.tiles = destPR.tiles = NULL;
y = edge_buf->y;
endx = edge_buf->x + edge_buf->width;
@ -1906,7 +1935,7 @@ construct_edge_map (Tool *tool,
/* If the block exists, patch it into buf */
if (block)
{
/* calculate x offset into the block */
/* calculate x offset into the block */
offx = (x - col * BLOCK_WIDTH);
x2 = (col + 1) * BLOCK_WIDTH;
if (x2 > endx) x2 = endx;
@ -1929,8 +1958,12 @@ construct_edge_map (Tool *tool,
y = row * BLOCK_HEIGHT;
}
/* show the edge buffer */
/* temp_buf_to_gdisplay (edge_buf);*/
/* dump the edge buffer for debugging*/
/* dump=fopen("/ugrad/summersn/dump", "w");
fprintf(dump, "P5\n%d %d\n255\n", edge_buf->width, edge_buf->height);
fwrite(edge_buf->data, edge_buf->width * edge_buf->height, sizeof (guchar), dump);
fclose (dump); */
}
@ -1955,8 +1988,8 @@ set_edge_map_blocks (void *gimage_ptr,
width = height = 0;
gimage = (GImage *) gimage_ptr;
/*FIXwidth = gimage_width (gimage);*/
/*FIXheight = gimage_height (gimage);*/
width = gimage->width;
height = gimage->height;
startx = x;
endx = x + w;
@ -2327,7 +2360,7 @@ make_curve_d (int *curve,
/* Functions for Catmull-Rom area conversion */
/***********************************************/
static link_ptr * CR_scanlines;
static GSList **CR_scanlines;
static int start_convert;
static int width, height;
static int lastx;
@ -2339,12 +2372,13 @@ CR_convert (Iscissors *iscissors,
int antialias)
{
int indices[4];
link_ptr list;
unsigned char *dest;
GSList *list;
int draw_type;
int * vals, val;
int x, w;
int i, j;
PixelRegion maskPR;
unsigned char *buf, *b;
vals = NULL;
@ -2363,12 +2397,15 @@ CR_convert (Iscissors *iscissors,
draw_type = AA_IMAGE_COORDS;
/* allocate value array */
vals = (int *) g_malloc (sizeof (int) * width);
buf = (unsigned char *) g_malloc (sizeof(unsigned char *) * width);
}
else
{
width = gdisp->gimage->width;
height = gdisp->gimage->height;
draw_type = IMAGE_COORDS;
buf = NULL;
vals = NULL;
}
/* create a new mask */
@ -2376,7 +2413,7 @@ CR_convert (Iscissors *iscissors,
gdisp->gimage->height);
/* allocate room for the scanlines */
CR_scanlines = g_malloc (sizeof (link_ptr) * height);
CR_scanlines = g_malloc (sizeof (GSList *) * height);
/* zero out the scanlines */
for (i = 0; i < height; i++)
@ -2394,7 +2431,9 @@ CR_convert (Iscissors *iscissors,
iscissors_draw_CR (gdisp, iscissors, pts, indices, draw_type);
}
dest = channel_data (iscissors->mask);
pixel_region_init (&maskPR, iscissors->mask->drawable.tiles, 0, 0,
iscissors->mask->drawable.width,
iscissors->mask->drawable.height, TRUE);
for (i = 0; i < height; i++)
{
@ -2418,21 +2457,25 @@ CR_convert (Iscissors *iscissors,
for (j = 0; j < w; j++)
vals[j + x] += 255;
list = next_item (list);
list = g_slist_next (list);
}
}
if (antialias && !((i+1) % SUPERSAMPLE))
for (j = 0; j < width; j += SUPERSAMPLE)
{
val = 0;
for (x = 0; x < SUPERSAMPLE; x++)
val += vals[j + x];
{
b = buf;
for (j = 0; j < width; j += SUPERSAMPLE)
{
val = 0;
for (x = 0; x < SUPERSAMPLE; x++)
val += vals[j + x];
*dest++ = val / SUPERSAMPLE2;
}
*b++ = (unsigned char) (val / SUPERSAMPLE2);
}
pixel_region_set_row (&maskPR, 0, (i / SUPERSAMPLE), iscissors->mask->drawable.width, buf);
}
free_list (CR_scanlines[i]);
g_slist_free (CR_scanlines[i]);
}
if (antialias)
@ -2465,11 +2508,11 @@ CR_convert_points (GdkPoint *points,
}
static void
CR_convert_line (link_ptr *scanlines,
int x1,
int y1,
int x2,
int y2)
CR_convert_line (GSList **scanlines,
int x1,
int y1,
int x2,
int y2)
{
int dx, dy;
int error, inc;
@ -2581,32 +2624,32 @@ CR_convert_line (link_ptr *scanlines,
}
}
static link_ptr
CR_insert_in_list (link_ptr list,
int x)
static GSList *
CR_insert_in_list (GSList *list,
int x)
{
link_ptr orig = list;
link_ptr rest;
GSList *orig = list;
GSList *rest;
if (!list)
return add_to_list (list, (gpointer) ((long) x));
return g_slist_prepend (list, (gpointer) ((long) x));
while (list)
{
rest = next_item (list);
rest = g_slist_next (list);
if (x < (long) list->data)
{
rest = add_to_list (rest, list->data);
rest = g_slist_prepend (rest, list->data);
list->next = rest;
list->data = (gpointer) ((long) x);
return orig;
}
else if (!rest)
{
append_to_list (list, (gpointer) ((long) x));
g_slist_append (list, (gpointer) ((long) x));
return orig;
}
list = next_item (list);
list = g_slist_next (list);
}
return orig;

View File

@ -24,7 +24,6 @@
#include "gimage_mask.h"
#include "gdisplay.h"
#include "gdisplay_ops.h"
#include "linked.h"
#include "move.h"
#include "undo.h"

View File

@ -100,7 +100,7 @@ struct _FontInfo
int *spacings; /* An array of valid spacings */
int **combos; /* An array of valid combinations of the above 5 items */
int ncombos; /* The number of elements in the "combos" array */
link_ptr fontnames; /* An list of valid fontnames.
GSList *fontnames; /* An list of valid fontnames.
* This is used to make sure a family/foundry/weight/slant/set_width
* combination is valid.
*/
@ -131,7 +131,7 @@ static void text_validate_combo (TextTool *, int);
static void text_get_fonts (void);
static void text_insert_font (FontInfo **, int *, char *);
static link_ptr text_insert_field (link_ptr, char *, int);
static GSList* text_insert_field (GSList *, char *, int);
static char* text_get_field (char *, int);
static int text_field_to_index (char **, int, char *);
static int text_is_xlfd_font_name (char *);
@ -144,6 +144,8 @@ static void text_gdk_image_to_region (GdkImage *, int, PixelRegion *);
static int text_get_extents (char *, char *, int *, int *, int *, int *);
static Layer * text_render (GImage *, GimpDrawable *, int, int, char *, char *, int, int);
static int font_compare_func (gpointer, gpointer);
static Argument * text_tool_invoker (Argument *);
static Argument * text_tool_get_extents_invoker (Argument *);
@ -164,11 +166,11 @@ static TextTool *the_text_tool = NULL;
static FontInfo **font_info;
static int nfonts = -1;
static link_ptr foundries = NULL;
static link_ptr weights = NULL;
static link_ptr slants = NULL;
static link_ptr set_widths = NULL;
static link_ptr spacings = NULL;
static GSList *foundries = NULL;
static GSList *weights = NULL;
static GSList *slants = NULL;
static GSList *set_widths = NULL;
static GSList *spacings = NULL;
static char **foundry_array = NULL;
static char **weight_array = NULL;
@ -970,7 +972,7 @@ text_get_fonts ()
char **fontnames;
char *fontname;
char *field;
link_ptr temp_list;
GSList *temp_list;
int num_fonts;
int index;
int i, j;
@ -998,11 +1000,11 @@ text_get_fonts ()
XFreeFontNames (fontnames);
nfoundries = list_length (foundries) + 1;
nweights = list_length (weights) + 1;
nslants = list_length (slants) + 1;
nset_widths = list_length (set_widths) + 1;
nspacings = list_length (spacings) + 1;
nfoundries = g_slist_length (foundries) + 1;
nweights = g_slist_length (weights) + 1;
nslants = g_slist_length (slants) + 1;
nset_widths = g_slist_length (set_widths) + 1;
nspacings = g_slist_length (spacings) + 1;
foundry_array = g_malloc (sizeof (char*) * nfoundries);
weight_array = g_malloc (sizeof (char*) * nweights);
@ -1063,7 +1065,7 @@ text_get_fonts ()
font_info[i]->slants = g_malloc (sizeof (int) * nslants);
font_info[i]->set_widths = g_malloc (sizeof (int) * nset_widths);
font_info[i]->spacings = g_malloc (sizeof (int) * nspacings);
font_info[i]->ncombos = list_length (font_info[i]->fontnames);
font_info[i]->ncombos = g_slist_length (font_info[i]->fontnames);
font_info[i]->combos = g_malloc (sizeof (int*) * font_info[i]->ncombos);
for (j = 0; j < nfoundries; j++)
@ -1156,7 +1158,7 @@ text_insert_font (FontInfo **table,
cmp = strcmp (family, table[middle]->family);
if (cmp == 0)
{
table[middle]->fontnames = add_to_list (table[middle]->fontnames, g_strdup (fontname));
table[middle]->fontnames = g_slist_prepend (table[middle]->fontnames, g_strdup (fontname));
return;
}
else if (cmp < 0)
@ -1174,7 +1176,7 @@ text_insert_font (FontInfo **table,
table[*ntable]->slants = NULL;
table[*ntable]->set_widths = NULL;
table[*ntable]->fontnames = NULL;
table[*ntable]->fontnames = add_to_list (table[*ntable]->fontnames, g_strdup (fontname));
table[*ntable]->fontnames = g_slist_prepend (table[*ntable]->fontnames, g_strdup (fontname));
(*ntable)++;
/* Quickly insert the entry into the table in sorted order
@ -1198,62 +1200,24 @@ text_insert_font (FontInfo **table,
}
}
static link_ptr
text_insert_field (link_ptr list,
char *fontname,
int field_num)
static int
font_compare_func (gpointer a, gpointer b)
{
return strcmp (a, b);
}
static GSList *
text_insert_field (GSList *list,
char *fontname,
int field_num)
{
link_ptr temp_list;
link_ptr prev_list;
link_ptr new_list;
char *field;
int cmp;
field = text_get_field (fontname, field_num);
if (!field)
return list;
temp_list = list;
prev_list = NULL;
while (temp_list)
{
cmp = strcmp (field, temp_list->data);
if (cmp == 0)
{
free (field);
return list;
}
else if (cmp < 0)
{
new_list = alloc_list ();
new_list->data = field;
new_list->next = temp_list;
if (prev_list)
{
prev_list->next = new_list;
return list;
}
else
return new_list;
}
else
{
prev_list = temp_list;
temp_list = temp_list->next;
}
}
new_list = alloc_list ();
new_list->data = field;
new_list->next = NULL;
if (prev_list)
{
prev_list->next = new_list;
return list;
}
else
return new_list;
return g_slist_insert_sorted (list, field, font_compare_func);
}
static char*

View File

@ -30,7 +30,6 @@
#include "gimprc.h"
#include "indexed_palette.h"
#include "layer.h"
#include "linked.h"
#include "paint_core.h"
#include "paint_funcs.h"
#include "tools.h"
@ -135,9 +134,9 @@ channel_size (Channel *channel)
static void
undo_free_list (GImage *gimage,
int state,
link_ptr list)
GSList *list)
{
link_ptr orig;
GSList * orig;
Undo * undo;
orig = list;
@ -151,17 +150,18 @@ undo_free_list (GImage *gimage,
gimage->undo_bytes -= undo->bytes;
g_free (undo);
}
list = next_item (list);
list = g_slist_next (list);
}
free_list (orig);
g_slist_free (orig);
}
static link_ptr
static GSList *
remove_stack_bottom (GImage *gimage)
{
link_ptr list, last;
GSList *list;
GSList *last;
int in_group = 0;
list = gimage->undo_stack;
@ -193,7 +193,7 @@ remove_stack_bottom (GImage *gimage)
(!list->data && !in_group))
last = list;
list = next_item (list);
list = g_slist_next (list);
}
}
@ -258,21 +258,21 @@ undo_push (GImage *gimage,
else
new->type = gimage->pushing_undo_group;
gimage->undo_stack = add_to_list (gimage->undo_stack, (void *) new);
gimage->undo_stack = g_slist_prepend (gimage->undo_stack, (void *) new);
return new;
}
static int
pop_stack (GImage *gimage,
link_ptr *stack_ptr,
link_ptr *unstack_ptr,
pop_stack (GImage *gimage,
GSList **stack_ptr,
GSList **unstack_ptr,
int state)
{
Undo * object;
link_ptr stack;
link_ptr tmp;
GSList *stack;
GSList *tmp;
int status = 0;
int in_group = 0;
@ -302,12 +302,12 @@ pop_stack (GImage *gimage,
gimage->undo_levels += (state == UNDO) ? -1 : 1;
}
*unstack_ptr = add_to_list (*unstack_ptr, (void *) object);
*unstack_ptr = g_slist_prepend (*unstack_ptr, (void *) object);
tmp = stack;
*stack_ptr = next_item (*stack_ptr);
*stack_ptr = g_slist_next (*stack_ptr);
tmp->next = NULL;
free_list (tmp);
g_slist_free (tmp);
if (status && !in_group)
{
@ -381,7 +381,7 @@ undo_push_group_start (GImage *gimage,
return FALSE;
gimage->pushing_undo_group = type;
gimage->undo_stack = add_to_list (gimage->undo_stack, NULL);
gimage->undo_stack = g_slist_prepend (gimage->undo_stack, NULL);
gimage->undo_levels++;
return TRUE;
@ -399,7 +399,7 @@ undo_push_group_end (GImage *gimage)
if (group_count == 0)
{
gimage->pushing_undo_group = 0;
gimage->undo_stack = add_to_list (gimage->undo_stack, NULL);
gimage->undo_stack = g_slist_prepend (gimage->undo_stack, NULL);
}
return TRUE;
@ -1072,8 +1072,8 @@ undo_pop_layer (GImage *gimage,
gimage_set_active_layer (gimage, lu->prev_layer);
/* remove the layer */
gimage->layers = remove_from_list (gimage->layers, lu->layer);
gimage->layer_stack = remove_from_list (gimage->layer_stack, lu->layer);
gimage->layers = g_slist_remove (gimage->layers, lu->layer);
gimage->layer_stack = g_slist_remove (gimage->layer_stack, lu->layer);
/* reset the gimage values */
if (layer_is_floating_sel (lu->layer))
@ -1100,8 +1100,8 @@ undo_pop_layer (GImage *gimage,
gimage->floating_sel = lu->layer;
/* add the new layer */
gimage->layers = insert_in_list (gimage->layers, lu->layer, lu->prev_position);
gimage->layer_stack = add_to_list (gimage->layer_stack, lu->layer);
gimage->layers = g_slist_insert (gimage->layers, lu->layer, lu->prev_position);
gimage->layer_stack = g_slist_prepend (gimage->layer_stack, lu->layer);
gimage->active_layer = lu->layer;
drawable_update (GIMP_DRAWABLE(lu->layer), 0, 0, GIMP_DRAWABLE(lu->layer)->width, GIMP_DRAWABLE(lu->layer)->height);
}
@ -1443,7 +1443,7 @@ undo_pop_channel (GImage *gimage,
cu->prev_position = gimage_get_channel_index (gimage, cu->channel);
/* remove the channel */
gimage->channels = remove_from_list (gimage->channels, cu->channel);
gimage->channels = g_slist_remove (gimage->channels, cu->channel);
/* set the previous channel */
gimage_set_active_channel (gimage, cu->prev_channel);
@ -1458,7 +1458,7 @@ undo_pop_channel (GImage *gimage,
cu->prev_channel = gimage->active_channel;
/* add the new channel */
gimage->channels = insert_in_list (gimage->channels, cu->channel, cu->prev_position);
gimage->channels = g_slist_insert (gimage->channels, cu->channel, cu->prev_position);
/* set the new channel */
gimage_set_active_channel (gimage, cu->channel);

View File

@ -157,7 +157,6 @@
#include "gimprc.h"
#include "gradient.h"
#include "interface.h"
#include "linked.h"
#include "palette.h"
@ -556,7 +555,7 @@ static Argument *gradients_sample_custom_invoker(Argument *args);
/***** Local variables *****/
static int num_gradients = 0;
static link_ptr gradients_list = NULL; /* The list of gradients */
static GSList *gradients_list = NULL; /* The list of gradients */
static gradient_t *curr_gradient = NULL; /* The active gradient */
static gradient_t *grad_default_gradient = NULL;
@ -1088,7 +1087,7 @@ ed_set_hint(char *str)
static void
ed_set_list_of_gradients(void)
{
link_ptr list;
GSList *list;
gradient_t *grad;
int n;
@ -1103,7 +1102,7 @@ ed_set_list_of_gradients(void)
else
ed_insert_in_gradients_listbox(grad, n, 0);
list = next_item(list);
list = g_slist_next(list);
n++;
} /* while */
} /* ed_set_list_of_gradients */
@ -1436,7 +1435,7 @@ static void
ed_do_delete_gradient_callback(GtkWidget *widget, gpointer client_data)
{
GList *list;
link_ptr tmp;
GSList *tmp;
int n;
gradient_t *g;
GtkWidget *list_item;
@ -1460,7 +1459,7 @@ ed_do_delete_gradient_callback(GtkWidget *widget, gpointer client_data)
} /* if */
n++; /* Next gradient */
tmp = next_item(tmp);
tmp = g_slist_next(tmp);
} /* while */
if (tmp == NULL)
@ -1470,7 +1469,7 @@ ed_do_delete_gradient_callback(GtkWidget *widget, gpointer client_data)
list_item = curr_gradient->list_item; /* Remember list item to delete it later */
gradients_list = remove_from_list(gradients_list, curr_gradient);
gradients_list = g_slist_remove(gradients_list, curr_gradient);
/* Delete file and free gradient */
@ -1484,7 +1483,7 @@ ed_do_delete_gradient_callback(GtkWidget *widget, gpointer client_data)
/* Select new gradient */
curr_gradient = nth_item(gradients_list, n)->data;
curr_gradient = g_slist_nth(gradients_list, n)->data;
gtk_list_select_item(GTK_LIST(g_editor->list), n);
/* Update! */
@ -1531,13 +1530,13 @@ ed_save_pov_callback(GtkWidget *widget, gpointer client_data)
static void
ed_refresh_callback(GtkWidget *widget, gpointer client_data)
{
link_ptr node;
GSList *node;
gradient_t *grad;
GList *list;
list = NULL;
for (node = gradients_list; node; node = next_item(node)) {
for (node = gradients_list; node; node = g_slist_next(node)) {
grad = node->data;
list = g_list_append(list, grad->list_item);
}
@ -5054,7 +5053,7 @@ grad_free_gradient(gradient_t *grad)
static void
grad_free_gradients(void)
{
link_ptr node;
GSList *node;
gradient_t *grad;
node = gradients_list;
@ -5069,10 +5068,10 @@ grad_free_gradients(void)
grad_free_gradient(grad);
node = next_item(node);
node = g_slist_next(node);
} /* while */
free_list(gradients_list);
g_slist_free(gradients_list);
num_gradients = 0;
gradients_list = NULL;
@ -5236,7 +5235,7 @@ grad_create_default_gradient(void)
static int
grad_insert_in_gradients_list(gradient_t *grad)
{
link_ptr tmp;
GSList *tmp;
gradient_t *g;
int n;
@ -5254,11 +5253,11 @@ grad_insert_in_gradients_list(gradient_t *grad)
break; /* We found the one we want */
n++;
tmp = next_item(tmp);
tmp = g_slist_next(tmp);
} /* while */
num_gradients++;
gradients_list = insert_in_list(gradients_list, grad, n);
gradients_list = g_slist_insert(gradients_list, grad, n);
return n;
} /* grad_insert_in_gradients_list */
@ -5731,7 +5730,7 @@ gradients_get_list_invoker(Argument *args)
{
Argument *return_args;
gradient_t *grad;
link_ptr list;
GSList *list;
char **gradients;
int i;
int success;
@ -5747,7 +5746,7 @@ gradients_get_list_invoker(Argument *args)
while (list) {
grad = list->data;
gradients[i++] = g_strdup(grad->name);
list = next_item(list);
list = g_slist_next(list);
} /* while */
return_args = procedural_db_return_args(&gradients_get_list_proc, success);
@ -5857,7 +5856,7 @@ Argument *
gradients_set_active_invoker(Argument *args)
{
char *name;
link_ptr list;
GSList *list;
gradient_t *grad;
int success;
@ -5890,7 +5889,7 @@ gradients_set_active_invoker(Argument *args)
break;
} /* if */
list = next_item(list);
list = g_slist_next(list);
} /* while */
} /* if */

View File

@ -32,7 +32,6 @@
#include "errors.h"
#include "general.h"
#include "gimprc.h"
#include "linked.h"
#include "interface.h"
#include "palette.h"
@ -74,7 +73,7 @@ static void palette_delete_entry (PaletteP);
static void palette_calc_scrollbar (PaletteP);
static void palette_entries_load (char *);
static link_ptr palette_entries_insert_list (link_ptr, PaletteEntriesP);
static GSList * palette_entries_insert_list (GSList *, PaletteEntriesP);
static void palette_entries_delete (char *);
static void palette_entries_save (PaletteEntriesP, char *);
static void palette_entries_free (PaletteEntriesP);
@ -100,7 +99,7 @@ static void palette_draw_entries (PaletteP);
static void palette_draw_current_entry (PaletteP);
static void palette_update_current_entry (PaletteP);
link_ptr palette_entries_list = NULL;
GSList *palette_entries_list = NULL;
static PaletteP palette = NULL;
static PaletteEntriesP default_palette_entries = NULL;
@ -368,7 +367,7 @@ palette_init_palettes (void)
void
palette_free_palettes (void)
{
link_ptr list;
GSList *list;
PaletteEntriesP entries;
list = palette_entries_list;
@ -383,9 +382,9 @@ palette_free_palettes (void)
palette_entries_save (entries, entries->filename);
palette_entries_free (entries);
list = next_item (list);
list = g_slist_next (list);
}
free_list (palette_entries_list);
g_slist_free (palette_entries_list);
if (palette)
{
@ -409,7 +408,7 @@ palette_create_palette_menu (PaletteP palette,
PaletteEntriesP default_entries)
{
GtkWidget *menu_item;
link_ptr list;
GSList *list;
PaletteEntriesP p_entries = NULL;
PaletteEntriesP found_entries = NULL;
int i = 0;
@ -421,7 +420,7 @@ palette_create_palette_menu (PaletteP palette,
while (list)
{
p_entries = (PaletteEntriesP) list->data;
list = next_item (list);
list = g_slist_next (list);
/* to make sure we get something! */
if (p_entries == NULL)
@ -559,13 +558,13 @@ palette_entries_delete (char *filename)
unlink (filename);
}
static link_ptr
palette_entries_insert_list (link_ptr list,
static GSList *
palette_entries_insert_list (GSList * list,
PaletteEntriesP entries)
{
/* add it to the list */
num_palette_entries++;
return append_to_list (list, (void *) entries);
return g_slist_append (list, (void *) entries);
}
static void
@ -573,7 +572,7 @@ palette_entries_save (PaletteEntriesP palette,
char *filename)
{
FILE * fp;
link_ptr list;
GSList * list;
PaletteEntryP entry;
if (! filename)
@ -595,7 +594,7 @@ palette_entries_save (PaletteEntriesP palette,
entry = (PaletteEntryP) list->data;
fprintf (fp, "%d %d %d\t%s\n", entry->color[0], entry->color[1],
entry->color[2], entry->name);
list = next_item (list);
list = g_slist_next (list);
}
/* Clean up */
@ -606,7 +605,7 @@ static void
palette_entries_free (PaletteEntriesP entries)
{
PaletteEntryP entry;
link_ptr list;
GSList * list;
list = entries->colors;
while (list)
@ -722,7 +721,7 @@ palette_color_area_events (GtkWidget *widget,
PaletteP palette)
{
GdkEventButton *bevent;
link_ptr tmp_link;
GSList *tmp_link;
int r, g, b;
int width, height;
int entry_width;
@ -746,7 +745,7 @@ palette_color_area_events (GtkWidget *widget,
row = (palette->scroll_offset + bevent->y - 1) / entry_height;
pos = row * COLUMNS + col;
tmp_link = nth_item (palette->entries->colors, pos);
tmp_link = g_slist_nth (palette->entries->colors, pos);
if (tmp_link)
{
palette_draw_current_entry (palette);
@ -1158,7 +1157,7 @@ palette_draw_entries (PaletteP palette)
PaletteEntryP entry;
unsigned char *buffer;
unsigned char *colors[COLUMNS];
link_ptr tmp_link;
GSList *tmp_link;
int width, height;
int entry_width;
int entry_height;
@ -1293,7 +1292,7 @@ palette_add_entry (PaletteEntriesP entries,
entry->name = g_strdup ("Untitled");
entry->position = entries->n_colors;
entries->colors = append_to_list (entries->colors, entry);
entries->colors = g_slist_append (entries->colors, entry);
entries->n_colors += 1;
entries->changed = 1;
@ -1308,20 +1307,20 @@ static void
palette_delete_entry (PaletteP palette)
{
PaletteEntryP entry;
link_ptr tmp_link;
GSList *tmp_link;
int pos;
if (palette && palette->entries && palette->color)
{
entry = palette->color;
palette->entries->colors = remove_from_list (palette->entries->colors, entry);
palette->entries->colors = g_slist_remove (palette->entries->colors, entry);
palette->entries->n_colors--;
palette->entries->changed = 1;
pos = entry->position;
palette_entry_free (entry);
tmp_link = nth_item (palette->entries->colors, pos);
tmp_link = g_slist_nth (palette->entries->colors, pos);
if (tmp_link)
{
@ -1336,7 +1335,7 @@ palette_delete_entry (PaletteP palette)
}
else
{
tmp_link = nth_item (palette->entries->colors, pos - 1);
tmp_link = g_slist_nth (palette->entries->colors, pos - 1);
if (tmp_link)
palette->color = tmp_link->data;
}

View File

@ -18,6 +18,9 @@
#ifndef __PALETTE_H__
#define __PALETTE_H__
#include <glib.h>
#include "procedural_db.h"
#define FOREGROUND 0
#define BACKGROUND 1
@ -39,7 +42,7 @@ void palette_set_active_color (int, int, int, int);
struct _PaletteEntries {
char *name;
char *filename;
link_ptr colors;
GSList *colors;
int n_colors;
int changed;
};
@ -52,12 +55,10 @@ struct _PaletteEntry {
};
typedef struct _PaletteEntry _PaletteEntry, *PaletteEntryP;
extern link_ptr palette_entries_list;
extern GSList * palette_entries_list;
void palette_init_palettes (void);
void palette_free_palettes (void);
#include "procedural_db.h"
/* Procedure definition and marshalling function */
extern ProcRecord palette_get_foreground_proc;
extern ProcRecord palette_get_background_proc;

View File

@ -418,7 +418,7 @@ xcf_save_image (XcfInfo *info,
guint32 offset;
guint nlayers;
guint nchannels;
link_ptr list;
GSList *list;
int have_selection;
int t1, t2, t3, t4;
char version_tag[14];
@ -444,8 +444,8 @@ xcf_save_image (XcfInfo *info,
info->cp += xcf_write_int32 (info->fp, (guint32*) &gimage->base_type, 1);
/* determine the number of layers and channels in the image */
nlayers = (guint) list_length (gimage->layers);
nchannels = (guint) list_length (gimage->channels);
nlayers = (guint) g_slist_length (gimage->layers);
nchannels = (guint) g_slist_length (gimage->channels);
/* check and see if we have to save out the selection */
have_selection = gimage_mask_bounds (gimage, &t1, &t2, &t3, &t4);
@ -835,7 +835,7 @@ xcf_save_prop (XcfInfo *info,
int nguides;
guides = va_arg (args, GList*);
nguides = g_list_length (guides);
nguides = g_slist_length (guides);
size = nguides * (4 + 1);
@ -1276,7 +1276,7 @@ xcf_load_image (XcfInfo *info)
/* add the layer to the image if its not the floating selection */
if (layer != info->floating_sel)
gimage_add_layer (gimage, layer, list_length (gimage->layers));
gimage_add_layer (gimage, layer, g_slist_length (gimage->layers));
/* restore the saved position so we'll be ready to
* read the next offset.

View File

@ -418,7 +418,7 @@ xcf_save_image (XcfInfo *info,
guint32 offset;
guint nlayers;
guint nchannels;
link_ptr list;
GSList *list;
int have_selection;
int t1, t2, t3, t4;
char version_tag[14];
@ -444,8 +444,8 @@ xcf_save_image (XcfInfo *info,
info->cp += xcf_write_int32 (info->fp, (guint32*) &gimage->base_type, 1);
/* determine the number of layers and channels in the image */
nlayers = (guint) list_length (gimage->layers);
nchannels = (guint) list_length (gimage->channels);
nlayers = (guint) g_slist_length (gimage->layers);
nchannels = (guint) g_slist_length (gimage->channels);
/* check and see if we have to save out the selection */
have_selection = gimage_mask_bounds (gimage, &t1, &t2, &t3, &t4);
@ -835,7 +835,7 @@ xcf_save_prop (XcfInfo *info,
int nguides;
guides = va_arg (args, GList*);
nguides = g_list_length (guides);
nguides = g_slist_length (guides);
size = nguides * (4 + 1);
@ -1276,7 +1276,7 @@ xcf_load_image (XcfInfo *info)
/* add the layer to the image if its not the floating selection */
if (layer != info->floating_sel)
gimage_add_layer (gimage, layer, list_length (gimage->layers));
gimage_add_layer (gimage, layer, g_slist_length (gimage->layers));
/* restore the saved position so we'll be ready to
* read the next offset.