mirror of https://github.com/GNOME/gimp.git
removed all usage of linked.[ch] and switched to GSLists
-Yosh
This commit is contained in:
parent
9af736f243
commit
89b600d2bc
|
@ -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
|
||||
|
|
|
@ -179,8 +179,6 @@ gimp_SOURCES = \
|
|||
layers_dialogP.h \
|
||||
levels.c \
|
||||
levels.h \
|
||||
linked.h \
|
||||
linked.c \
|
||||
magnify.c \
|
||||
magnify.h \
|
||||
main.c \
|
||||
|
|
1
app/TODO
1
app/TODO
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
144
app/brushes.c
144
app/brushes.c
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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"); */
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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"); */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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 */
|
||||
};
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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 */
|
||||
};
|
||||
|
|
|
@ -31,7 +31,6 @@
|
|||
#include "gimprc.h"
|
||||
#include "general.h"
|
||||
#include "interface.h"
|
||||
#include "linked.h"
|
||||
#include "menus.h"
|
||||
#include "tools.h"
|
||||
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -31,7 +31,6 @@
|
|||
#include "gimprc.h"
|
||||
#include "general.h"
|
||||
#include "interface.h"
|
||||
#include "linked.h"
|
||||
#include "menus.h"
|
||||
#include "tools.h"
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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 */
|
||||
};
|
||||
|
|
186
app/gimage.c
186
app/gimage.c
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
13
app/gimage.h
13
app/gimage.h
|
@ -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 *);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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"); */
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#ifndef __GIMPRC_H__
|
||||
#define __GIMPRC_H__
|
||||
|
||||
#include "linked.h"
|
||||
#include <glib.h>
|
||||
#include "procedural_db.h"
|
||||
|
||||
/* global gimprc variables */
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -31,7 +31,6 @@
|
|||
#include "gimprc.h"
|
||||
#include "general.h"
|
||||
#include "interface.h"
|
||||
#include "linked.h"
|
||||
#include "menus.h"
|
||||
#include "tools.h"
|
||||
|
||||
|
|
199
app/iscissors.c
199
app/iscissors.c
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
199
app/linked.c
199
app/linked.c
|
@ -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;
|
||||
}
|
56
app/linked.h
56
app/linked.h
|
@ -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
|
|
@ -24,7 +24,6 @@
|
|||
#include "gimage_mask.h"
|
||||
#include "gdisplay.h"
|
||||
#include "gdisplay_ops.h"
|
||||
#include "linked.h"
|
||||
#include "move.h"
|
||||
#include "undo.h"
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
139
app/patterns.c
139
app/patterns.c
|
@ -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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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*
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
#include "gimage_mask.h"
|
||||
#include "gdisplay.h"
|
||||
#include "gdisplay_ops.h"
|
||||
#include "linked.h"
|
||||
#include "move.h"
|
||||
#include "undo.h"
|
||||
|
||||
|
|
|
@ -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*
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
#include "gimage_mask.h"
|
||||
#include "gdisplay.h"
|
||||
#include "gdisplay_ops.h"
|
||||
#include "linked.h"
|
||||
#include "move.h"
|
||||
#include "undo.h"
|
||||
|
||||
|
|
|
@ -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*
|
||||
|
|
50
app/undo.c
50
app/undo.c
|
@ -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);
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
10
app/xcf.c
10
app/xcf.c
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue