Merge branch 'master' into soc-2010-cage-2

This commit is contained in:
Alexia Death 2010-09-01 11:21:58 +03:00
commit d98bd748e7
93 changed files with 10209 additions and 5917 deletions

View File

@ -29,7 +29,8 @@ SUBDIRS = \
$(GIMP_PLUGINS) \
etc \
devel-docs \
docs
docs \
build
bin_SCRIPTS = @GIMPINSTALL@

View File

@ -85,11 +85,7 @@ gimp_2_7_SOURCES = $(libapp_sources) main.c
EXTRA_DIST = \
fileicon.ico \
gimp.manifest \
gimp.rc.in \
makefile.msc \
wilber.ico
makefile.msc
if OS_WIN32
win32_ldflags = -mwindows $(WIN32_LARGE_ADDRESS_AWARE)
@ -100,8 +96,9 @@ munix = -Wl,-rpath '-Wl,$$ORIGIN/../lib'
endif
if HAVE_WINDRES
GIMPRC = gimp.rc.o
GIMPCONSOLERC = gimp-console.rc.o
include $(top_srcdir)/build/windows/gimprc.rule
GIMPRC = gimp-$(GIMP_APP_VERSION).rc.o
GIMPCONSOLERC = gimp-console-$(GIMP_APP_VERSION).rc.o
endif
AM_CPPFLAGS = \
@ -272,16 +269,6 @@ dist-dump-gimprc: gimp-console-$(GIMP_APP_VERSION)$(EXEEXT)
dist-hook: dist-check-gimp-console dist-dump-gimprc
gimp.rc.o: gimp.rc
$(WINDRES) --define ORIGINALFILENAME_STR="gimp-2.7$(EXEEXT)" \
--define INTERNALNAME_STR="gimp-2.7" \
gimp.rc gimp.rc.o
gimp-console.rc.o: gimp.rc
$(WINDRES) --define ORIGINALFILENAME_STR="gimp-console-2.7$(EXEEXT)" \
--define INTERNALNAME_STR="gimp-console-2.7" \
gimp.rc gimp-console.rc.o
# If git is available, always check if git-version.h should be
# updated. If git is not available, don't do anything if git-version.h
# already exists because then we are probably working with a tarball

View File

@ -2531,7 +2531,7 @@ find_best_colors (QuantizeObj *quantobj,
int inR, inG, inB; /* initial values for increments */
/* This array holds the distance to the nearest-so-far color for each cell */
int bestdist[BOX_R_ELEMS * BOX_G_ELEMS * BOX_B_ELEMS];
int bestdist[BOX_R_ELEMS * BOX_G_ELEMS * BOX_B_ELEMS] = { 0, };
/* Initialize best-distance for each cell of the update box */
bptr = bestdist;

View File

@ -19,7 +19,6 @@
#include <gtk/gtk.h>
#include "libgimpbase/gimpbase.h"
#include "libgimpcolor/gimpcolor.h"
#include "libgimpwidgets/gimpwidgets.h"
@ -27,7 +26,6 @@
#include "config/gimpdisplayconfig.h"
#include "widgets/gimpcairo-wilber.h"
#include "widgets/gimpwidgets-utils.h"
#include "gimpcanvas.h"
@ -56,7 +54,6 @@ static void gimp_canvas_get_property (GObject *object,
GValue *value,
GParamSpec *pspec);
static void gimp_canvas_realize (GtkWidget *widget);
static void gimp_canvas_unrealize (GtkWidget *widget);
static void gimp_canvas_style_set (GtkWidget *widget,
GtkStyle *prev_style);
@ -76,91 +73,6 @@ G_DEFINE_TYPE (GimpCanvas, gimp_canvas, GIMP_TYPE_OVERLAY_BOX)
#define parent_class gimp_canvas_parent_class
static const guchar stipples[GIMP_CANVAS_NUM_STIPPLES][8] =
{
{
0xF0, /* ####---- */
0xE1, /* ###----# */
0xC3, /* ##----## */
0x87, /* #----### */
0x0F, /* ----#### */
0x1E, /* ---####- */
0x3C, /* --####-- */
0x78, /* -####--- */
},
{
0xE1, /* ###----# */
0xC3, /* ##----## */
0x87, /* #----### */
0x0F, /* ----#### */
0x1E, /* ---####- */
0x3C, /* --####-- */
0x78, /* -####--- */
0xF0, /* ####---- */
},
{
0xC3, /* ##----## */
0x87, /* #----### */
0x0F, /* ----#### */
0x1E, /* ---####- */
0x3C, /* --####-- */
0x78, /* -####--- */
0xF0, /* ####---- */
0xE1, /* ###----# */
},
{
0x87, /* #----### */
0x0F, /* ----#### */
0x1E, /* ---####- */
0x3C, /* --####-- */
0x78, /* -####--- */
0xF0, /* ####---- */
0xE1, /* ###----# */
0xC3, /* ##----## */
},
{
0x0F, /* ----#### */
0x1E, /* ---####- */
0x3C, /* --####-- */
0x78, /* -####--- */
0xF0, /* ####---- */
0xE1, /* ###----# */
0xC3, /* ##----## */
0x87, /* #----### */
},
{
0x1E, /* ---####- */
0x3C, /* --####-- */
0x78, /* -####--- */
0xF0, /* ####---- */
0xE1, /* ###----# */
0xC3, /* ##----## */
0x87, /* #----### */
0x0F, /* ----#### */
},
{
0x3C, /* --####-- */
0x78, /* -####--- */
0xF0, /* ####---- */
0xE1, /* ###----# */
0xC3, /* ##----## */
0x87, /* #----### */
0x0F, /* ----#### */
0x1E, /* ---####- */
},
{
0x78, /* -####--- */
0xF0, /* ####---- */
0xE1, /* ###----# */
0xC3, /* ##----## */
0x87, /* #----### */
0x0F, /* ----#### */
0x1E, /* ---####- */
0x3C, /* --####-- */
},
};
static void
gimp_canvas_class_init (GimpCanvasClass *klass)
{
@ -170,7 +82,6 @@ gimp_canvas_class_init (GimpCanvasClass *klass)
object_class->set_property = gimp_canvas_set_property;
object_class->get_property = gimp_canvas_get_property;
widget_class->realize = gimp_canvas_realize;
widget_class->unrealize = gimp_canvas_unrealize;
widget_class->style_set = gimp_canvas_style_set;
widget_class->focus_in_event = gimp_canvas_focus_in_event;
@ -197,9 +108,6 @@ gimp_canvas_init (GimpCanvas *canvas)
for (i = 0; i < GIMP_CANVAS_NUM_STYLES; i++)
canvas->gc[i] = NULL;
for (i = 0; i < GIMP_CANVAS_NUM_STIPPLES; i++)
canvas->stipple[i] = NULL;
}
static void
@ -240,18 +148,6 @@ gimp_canvas_get_property (GObject *object,
}
}
static void
gimp_canvas_realize (GtkWidget *widget)
{
GimpCanvas *canvas = GIMP_CANVAS (widget);
GTK_WIDGET_CLASS (parent_class)->realize (widget);
canvas->stipple[0] =
gdk_bitmap_create_from_data (gtk_widget_get_window (widget),
(const gchar *) stipples[0], 8, 8);
}
static void
gimp_canvas_unrealize (GtkWidget *widget)
{
@ -267,15 +163,6 @@ gimp_canvas_unrealize (GtkWidget *widget)
}
}
for (i = 0; i < GIMP_CANVAS_NUM_STIPPLES; i++)
{
if (canvas->stipple[i])
{
g_object_unref (canvas->stipple[i]);
canvas->stipple[i] = NULL;
}
}
if (canvas->layout)
{
g_object_unref (canvas->layout);
@ -369,15 +256,6 @@ gimp_canvas_gc_new (GimpCanvas *canvas,
switch (style)
{
case GIMP_CANVAS_STYLE_BLACK:
case GIMP_CANVAS_STYLE_WHITE:
break;
case GIMP_CANVAS_STYLE_RENDER:
mask |= GDK_GC_EXPOSURES;
values.graphics_exposures = TRUE;
break;
case GIMP_CANVAS_STYLE_XOR_DOTTED:
case GIMP_CANVAS_STYLE_XOR_DASHED:
mask |= GDK_GC_LINE_STYLE;
@ -396,14 +274,6 @@ gimp_canvas_gc_new (GimpCanvas *canvas,
values.join_style = GDK_JOIN_MITER;
break;
case GIMP_CANVAS_STYLE_SELECTION_IN:
case GIMP_CANVAS_STYLE_SELECTION_OUT:
mask |= GDK_GC_CAP_STYLE | GDK_GC_FILL | GDK_GC_STIPPLE;
values.cap_style = GDK_CAP_NOT_LAST;
values.fill = GDK_OPAQUE_STIPPLED;
values.stipple = canvas->stipple[0];
break;
default:
return NULL;
}
@ -426,33 +296,6 @@ gimp_canvas_gc_new (GimpCanvas *canvas,
case GIMP_CANVAS_STYLE_XOR_DASHED:
case GIMP_CANVAS_STYLE_XOR:
break;
case GIMP_CANVAS_STYLE_WHITE:
fg.red = 0xffff;
fg.green = 0xffff;
fg.blue = 0xffff;
break;
case GIMP_CANVAS_STYLE_BLACK:
case GIMP_CANVAS_STYLE_SELECTION_IN:
fg.red = 0x0;
fg.green = 0x0;
fg.blue = 0x0;
bg.red = 0xffff;
bg.green = 0xffff;
bg.blue = 0xffff;
break;
case GIMP_CANVAS_STYLE_SELECTION_OUT:
fg.red = 0xffff;
fg.green = 0xffff;
fg.blue = 0xffff;
bg.red = 0x7f7f;
bg.green = 0x7f7f;
bg.blue = 0x7f7f;
break;
}
gdk_gc_set_rgb_fg_color (gc, &fg);
@ -499,54 +342,6 @@ gimp_canvas_new (GimpDisplayConfig *config)
NULL);
}
/**
* gimp_canvas_draw_point:
* @canvas: a #GimpCanvas widget
* @style: one of the enumerated #GimpCanvasStyle's.
* @x: x coordinate
* @y: y coordinate
*
* Draw a single pixel at the specified location in the specified
* style.
**/
void
gimp_canvas_draw_point (GimpCanvas *canvas,
GimpCanvasStyle style,
gint x,
gint y)
{
if (! gimp_canvas_ensure_style (canvas, style))
return;
gdk_draw_point (gtk_widget_get_window (GTK_WIDGET (canvas)),
canvas->gc[style],
x, y);
}
/**
* gimp_canvas_draw_points:
* @canvas: a #GimpCanvas widget
* @style: one of the enumerated #GimpCanvasStyle's.
* @points: an array of GdkPoint x-y pairs.
* @num_points: the number of points in the array
*
* Draws a set of one-pixel points at the locations given in the
* @points argument, in the specified style.
**/
void
gimp_canvas_draw_points (GimpCanvas *canvas,
GimpCanvasStyle style,
GdkPoint *points,
gint num_points)
{
if (! gimp_canvas_ensure_style (canvas, style))
return;
gdk_draw_points (gtk_widget_get_window (GTK_WIDGET (canvas)),
canvas->gc[style],
points, num_points);
}
/**
* gimp_canvas_draw_line:
* @canvas: a #GimpCanvas widget
@ -754,89 +549,6 @@ gimp_canvas_get_layout (GimpCanvas *canvas,
return canvas->layout;
}
/**
* gimp_canvas_draw_rgb:
* @canvas: a #GimpCanvas widget
* @style: one of the enumerated #GimpCanvasStyle's.
* @x: X coordinate of the upper left corner.
* @y: Y coordinate of the upper left corner.
* @width: width of the rectangle to be drawn.
* @height: height of the rectangle to be drawn.
* @rgb_buf: pixel data for the image to be drawn.
* @rowstride: the rowstride in @rgb_buf.
* @xdith: x offset for dither alignment.
* @ydith: y offset for dither alignment.
*
* Draws an RGB image on the canvas in the specified style.
**/
void
gimp_canvas_draw_rgb (GimpCanvas *canvas,
GimpCanvasStyle style,
gint x,
gint y,
gint width,
gint height,
guchar *rgb_buf,
gint rowstride,
gint xdith,
gint ydith)
{
if (! gimp_canvas_ensure_style (canvas, style))
return;
gdk_draw_rgb_image_dithalign (gtk_widget_get_window (GTK_WIDGET (canvas)),
canvas->gc[style],
x, y, width, height,
GDK_RGB_DITHER_MAX,
rgb_buf, rowstride, xdith, ydith);
}
void
gimp_canvas_draw_drop_zone (GimpCanvas *canvas,
cairo_t *cr)
{
GtkWidget *widget = GTK_WIDGET (canvas);
GtkStyle *style = gtk_widget_get_style (widget);
GtkStateType state = gtk_widget_get_state (widget);
GtkAllocation allocation;
gdouble wilber_width;
gdouble wilber_height;
gdouble width;
gdouble height;
gdouble side;
gdouble factor;
gtk_widget_get_allocation (widget, &allocation);
gimp_cairo_wilber_get_size (cr, &wilber_width, &wilber_height);
wilber_width /= 2;
wilber_height /= 2;
side = MIN (MIN (allocation.width, allocation.height),
MAX (allocation.width, allocation.height) / 2);
width = MAX (wilber_width, side);
height = MAX (wilber_height, side);
factor = MIN (width / wilber_width, height / wilber_height);
cairo_scale (cr, factor, factor);
/* magic factors depend on the image used, everything else is generic
*/
gimp_cairo_wilber (cr,
- wilber_width * 0.6,
allocation.height / factor - wilber_height * 1.1);
cairo_set_source_rgba (cr,
style->fg[state].red / 65535.0,
style->fg[state].green / 65535.0,
style->fg[state].blue / 65535.0,
0.15);
cairo_fill (cr);
}
/**
* gimp_canvas_set_clip_rect:
* @canvas: a #GimpCanvas widget
@ -885,40 +597,6 @@ gimp_canvas_set_clip_region (GimpCanvas *canvas,
gdk_gc_set_clip_region (canvas->gc[style], region);
}
/**
* gimp_canvas_set_stipple_index:
* @canvas: a #GimpCanvas widget
* @style: the #GimpCanvasStyle to alter
* @index: the new stipple index
*
* Some styles of the #GimpCanvas do a stipple fill. #GimpCanvas has a
* set of %GIMP_CANVAS_NUM_STIPPLES stipple bitmaps. This function
* allows you to change the bitmap being used. This can be used to
* implement a marching ants effect. An older implementation used to
* use this feature and so it is included since it might be useful in
* the future. All stipple bitmaps but the default one are created on
* the fly.
*/
void
gimp_canvas_set_stipple_index (GimpCanvas *canvas,
GimpCanvasStyle style,
guint index)
{
if (! gimp_canvas_ensure_style (canvas, style))
return;
index = index % GIMP_CANVAS_NUM_STIPPLES;
if (! canvas->stipple[index])
{
canvas->stipple[index] =
gdk_bitmap_create_from_data (gtk_widget_get_window (GTK_WIDGET (canvas)),
(const gchar *) stipples[index], 8, 8);
}
gdk_gc_set_stipple (canvas->gc[style], canvas->stipple[index]);
}
/**
* gimp_canvas_set_bg_color:
* @canvas: a #GimpCanvas widget

View File

@ -24,14 +24,9 @@
typedef enum
{
GIMP_CANVAS_STYLE_BLACK,
GIMP_CANVAS_STYLE_WHITE,
GIMP_CANVAS_STYLE_RENDER,
GIMP_CANVAS_STYLE_XOR,
GIMP_CANVAS_STYLE_XOR_DASHED,
GIMP_CANVAS_STYLE_XOR_DOTTED,
GIMP_CANVAS_STYLE_SELECTION_IN,
GIMP_CANVAS_STYLE_SELECTION_OUT,
GIMP_CANVAS_NUM_STYLES
} GimpCanvasStyle;
@ -82,14 +77,6 @@ GType gimp_canvas_get_type (void) G_GNUC_CONST;
GtkWidget * gimp_canvas_new (GimpDisplayConfig *config);
void gimp_canvas_draw_point (GimpCanvas *canvas,
GimpCanvasStyle style,
gint x,
gint y);
void gimp_canvas_draw_points (GimpCanvas *canvas,
GimpCanvasStyle style,
GdkPoint *points,
gint num_points);
void gimp_canvas_draw_line (GimpCanvas *canvas,
GimpCanvasStyle style,
gint x1,
@ -128,18 +115,6 @@ void gimp_canvas_draw_segments (GimpCanvas *canvas,
PangoLayout *gimp_canvas_get_layout (GimpCanvas *canvas,
const gchar *format,
...) G_GNUC_PRINTF (2, 3);
void gimp_canvas_draw_rgb (GimpCanvas *canvas,
GimpCanvasStyle style,
gint x,
gint y,
gint width,
gint height,
guchar *rgb_buf,
gint rowstride,
gint xdith,
gint ydith);
void gimp_canvas_draw_drop_zone (GimpCanvas *canvas,
cairo_t *cr);
void gimp_canvas_set_clip_rect (GimpCanvas *canvas,
GimpCanvasStyle style,
@ -147,9 +122,6 @@ void gimp_canvas_set_clip_rect (GimpCanvas *canvas,
void gimp_canvas_set_clip_region (GimpCanvas *canvas,
GimpCanvasStyle style,
const GdkRegion *region);
void gimp_canvas_set_stipple_index (GimpCanvas *canvas,
GimpCanvasStyle style,
guint index);
void gimp_canvas_set_bg_color (GimpCanvas *canvas,
GimpRGB *color);

View File

@ -48,6 +48,7 @@
#include "tools/tool_manager.h"
#include "tools/tools-enums.h"
#include "widgets/gimpcairo.h"
#include "widgets/gimpcontrollers.h"
#include "widgets/gimpcontrollerkeyboard.h"
#include "widgets/gimpcontrollerwheel.h"
@ -56,7 +57,6 @@
#include "widgets/gimpdevices.h"
#include "widgets/gimpdialogfactory.h"
#include "widgets/gimpuimanager.h"
#include "widgets/gimpwidgets-utils.h"
#include "gimpcanvas.h"
#include "gimpdisplay.h"
@ -103,9 +103,11 @@ static GdkModifierType
static GdkEvent * gimp_display_shell_compress_motion (GimpDisplayShell *shell);
static void gimp_display_shell_canvas_expose_image (GimpDisplayShell *shell,
GdkEventExpose *eevent);
GdkEventExpose *eevent,
cairo_t *cr);
static void gimp_display_shell_canvas_expose_drop_zone (GimpDisplayShell *shell,
GdkEventExpose *eevent);
GdkEventExpose *eevent,
cairo_t *cr);
static void gimp_display_shell_process_tool_event_queue (GimpDisplayShell *shell,
GdkModifierType state,
guint32 time);
@ -392,19 +394,33 @@ gimp_display_shell_canvas_expose (GtkWidget *widget,
/* ignore events on overlays */
if (eevent->window == gtk_widget_get_window (widget))
{
cairo_t *cr;
if (gimp_display_get_image (shell->display))
{
gimp_display_shell_pause (shell);
if (gimp_display_shell_is_double_buffered (shell))
gdk_window_begin_paint_region (eevent->window, eevent->region);
}
gimp_display_shell_canvas_expose_image (shell, eevent);
/* create the cairo_t after enabling double buffering, or we
* will get the wrong window destination surface
*/
cr = gdk_cairo_create (gtk_widget_get_window (shell->canvas));
gdk_cairo_region (cr, eevent->region);
cairo_clip (cr);
if (gimp_display_get_image (shell->display))
{
gimp_display_shell_canvas_expose_image (shell, eevent, cr);
}
else
{
gimp_display_shell_canvas_expose_drop_zone (shell, eevent);
gimp_display_shell_canvas_expose_drop_zone (shell, eevent, cr);
}
cairo_destroy (cr);
}
return FALSE;
@ -2078,7 +2094,7 @@ gimp_display_shell_hscrollbar_update (GtkAdjustment *adjustment,
GimpDisplayShell *shell)
{
/* If we are panning with mouse, scrollbars are to be ignored
* or they will cause jitter in motion
* or they will cause jitter in motion
*/
if (! shell->scrolling)
gimp_display_shell_scroll (shell,
@ -2214,9 +2230,9 @@ gimp_display_shell_compress_motion (GimpDisplayShell *shell)
static void
gimp_display_shell_canvas_expose_image (GimpDisplayShell *shell,
GdkEventExpose *eevent)
GdkEventExpose *eevent,
cairo_t *cr)
{
cairo_t *cr;
GdkRegion *clear_region;
GdkRegion *image_region;
GdkRectangle image_rect;
@ -2224,11 +2240,6 @@ gimp_display_shell_canvas_expose_image (GimpDisplayShell *shell,
gint n_rects;
gint i;
cr = gdk_cairo_create (eevent->window);
gdk_cairo_region (cr, eevent->region);
cairo_clip (cr);
/* first, clear the exposed part of the region that is outside the
* image, which is the exposed region minus the image rectangle
*/
@ -2273,13 +2284,17 @@ gimp_display_shell_canvas_expose_image (GimpDisplayShell *shell,
{
gdk_region_get_rectangles (image_region, &rects, &n_rects);
cairo_save (cr);
for (i = 0; i < n_rects; i++)
gimp_display_shell_draw_area (shell,
gimp_display_shell_draw_area (shell, cr,
rects[i].x,
rects[i].y,
rects[i].width,
rects[i].height);
cairo_restore (cr);
g_free (rects);
}
@ -2313,15 +2328,13 @@ gimp_display_shell_canvas_expose_image (GimpDisplayShell *shell,
/* restart (and recalculate) the selection boundaries */
gimp_display_shell_selection_control (shell, GIMP_SELECTION_ON);
cairo_destroy (cr);
}
static void
gimp_display_shell_canvas_expose_drop_zone (GimpDisplayShell *shell,
GdkEventExpose *eevent)
GdkEventExpose *eevent,
cairo_t *cr)
{
cairo_t *cr;
GdkRectangle *rects;
gint n_rects;
gint i;
@ -2339,11 +2352,5 @@ gimp_display_shell_canvas_expose_drop_zone (GimpDisplayShell *shell,
g_free (rects);
cr = gdk_cairo_create (gtk_widget_get_window (shell->canvas));
gdk_cairo_region (cr, eevent->region);
cairo_clip (cr);
gimp_canvas_draw_drop_zone (GIMP_CANVAS (shell->canvas), cr);
cairo_destroy (cr);
gimp_cairo_draw_drop_wilber (shell->canvas, cr);
}

View File

@ -43,6 +43,7 @@
#include "vectors/gimpstroke.h"
#include "vectors/gimpvectors.h"
#include "widgets/gimpcairo.h"
#include "widgets/gimpwidgets-utils.h"
#include "gimpcanvas.h"
@ -540,8 +541,6 @@ gimp_display_shell_draw_layer_boundary (GimpDisplayShell *shell,
GdkSegment *segs,
gint n_segs)
{
gint i;
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
g_return_if_fail (cr != NULL);
g_return_if_fail (GIMP_IS_DRAWABLE (drawable));
@ -549,20 +548,7 @@ gimp_display_shell_draw_layer_boundary (GimpDisplayShell *shell,
gimp_display_shell_set_layer_style (shell, cr, drawable);
for (i = 0; i < n_segs; i++)
{
if (segs[i].x1 == segs[i].x2)
{
cairo_move_to (cr, segs[i].x1 + 0.5, segs[i].y1);
cairo_line_to (cr, segs[i].x2 + 0.5, segs[i].y2);
}
else
{
cairo_move_to (cr, segs[i].x1, segs[i].y1 + 0.5);
cairo_line_to (cr, segs[i].x2, segs[i].y2 + 0.5);
}
}
gimp_cairo_add_segments (cr, segs, n_segs);
cairo_stroke (cr);
}
@ -572,61 +558,29 @@ gimp_display_shell_draw_selection_out (GimpDisplayShell *shell,
GdkSegment *segs,
gint n_segs)
{
gint i;
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
g_return_if_fail (cr != NULL);
g_return_if_fail (segs != NULL && n_segs > 0);
gimp_display_shell_set_selection_out_style (shell, cr);
for (i = 0; i < n_segs; i++)
{
if (segs[i].x1 == segs[i].x2)
{
cairo_move_to (cr, segs[i].x1 + 0.5, segs[i].y1);
cairo_line_to (cr, segs[i].x2 + 0.5, segs[i].y2);
}
else
{
cairo_move_to (cr, segs[i].x1, segs[i].y1 + 0.5);
cairo_line_to (cr, segs[i].x2, segs[i].y2 + 0.5);
}
}
gimp_cairo_add_segments (cr, segs, n_segs);
cairo_stroke (cr);
}
void
gimp_display_shell_draw_selection_in (GimpDisplayShell *shell,
cairo_t *cr,
GdkSegment *segs,
gint n_segs,
gint index)
gimp_display_shell_draw_selection_in (GimpDisplayShell *shell,
cairo_t *cr,
cairo_pattern_t *mask,
gint index)
{
gint i;
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
g_return_if_fail (cr != NULL);
g_return_if_fail (segs != NULL && n_segs > 0);
g_return_if_fail (mask != NULL);
gimp_display_shell_set_selection_in_style (shell, cr, index);
for (i = 0; i < n_segs; i++)
{
if (segs[i].x1 == segs[i].x2)
{
cairo_move_to (cr, segs[i].x1 + 0.5, segs[i].y1);
cairo_line_to (cr, segs[i].x2 + 0.5, segs[i].y2);
}
else
{
cairo_move_to (cr, segs[i].x1, segs[i].y1 + 0.5);
cairo_line_to (cr, segs[i].x2, segs[i].y2 + 0.5);
}
}
cairo_stroke (cr);
cairo_mask (cr, mask);
}
void
@ -738,6 +692,7 @@ gimp_display_shell_draw_cursor (GimpDisplayShell *shell,
void
gimp_display_shell_draw_area (GimpDisplayShell *shell,
cairo_t *cr,
gint x,
gint y,
gint w,
@ -749,6 +704,7 @@ gimp_display_shell_draw_area (GimpDisplayShell *shell,
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
g_return_if_fail (gimp_display_get_image (shell->display));
g_return_if_fail (cr != NULL);
x2 = x + w;
y2 = y + h;
@ -778,7 +734,7 @@ gimp_display_shell_draw_area (GimpDisplayShell *shell,
&disp_xoffset,
&disp_yoffset);
gimp_display_shell_render (shell,
gimp_display_shell_render (shell, cr,
j - disp_xoffset,
i - disp_yoffset,
dx, dy,

View File

@ -59,8 +59,7 @@ void gimp_display_shell_draw_selection_out (GimpDisplayShell *shell,
gint n_segs);
void gimp_display_shell_draw_selection_in (GimpDisplayShell *shell,
cairo_t *cr,
GdkSegment *segs,
gint n_segs,
cairo_pattern_t *mask,
gint index);
void gimp_display_shell_draw_vector (GimpDisplayShell *shell,
GimpVectors *vectors);
@ -68,6 +67,7 @@ void gimp_display_shell_draw_vectors (GimpDisplayShell *shell)
void gimp_display_shell_draw_cursor (GimpDisplayShell *shell,
cairo_t *cr);
void gimp_display_shell_draw_area (GimpDisplayShell *shell,
cairo_t *cr,
gint x,
gint y,
gint w,

View File

@ -76,7 +76,6 @@ struct _RenderInfo
gint src_y;
gint dest_bpp;
gint dest_bpl;
gint dest_width;
gint zoom_quality;
@ -195,6 +194,7 @@ static const guchar * render_image_tile_fault (RenderInfo *info);
static void gimp_display_shell_render_highlight (GimpDisplayShell *shell,
RenderInfo *info,
gint x,
gint y,
gint w,
@ -213,6 +213,7 @@ static void gimp_display_shell_render_mask (GimpDisplayShell *shell,
void
gimp_display_shell_render (GimpDisplayShell *shell,
cairo_t *cr,
gint x,
gint y,
gint w,
@ -227,6 +228,7 @@ gimp_display_shell_render (GimpDisplayShell *shell,
gint offset_y;
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
g_return_if_fail (cr != NULL);
g_return_if_fail (w > 0 && h > 0);
image = gimp_display_get_image (shell->display);
@ -239,16 +241,15 @@ gimp_display_shell_render (GimpDisplayShell *shell,
/* Initialize RenderInfo with values that don't change during the
* call of this function.
*/
info.shell = shell;
info.shell = shell;
info.x = x + offset_x;
info.y = y + offset_y;
info.w = w;
info.h = h;
info.x = x + offset_x;
info.y = y + offset_y;
info.w = w;
info.h = h;
info.dest_bpp = 3;
info.dest_bpl = info.dest_bpp * GIMP_DISPLAY_RENDER_BUF_WIDTH;
info.dest_width = info.dest_bpp * info.w;
info.dest_bpp = 4;
info.dest_bpl = cairo_image_surface_get_stride (shell->render_surface);
switch (shell->display->config->zoom_quality)
{
@ -293,17 +294,19 @@ gimp_display_shell_render (GimpDisplayShell *shell,
}
/* apply filters to the rendered projection */
#if 0
if (shell->filter_stack)
gimp_color_display_stack_convert (shell->filter_stack,
shell->render_buf,
w, h,
3,
3 * GIMP_DISPLAY_RENDER_BUF_WIDTH);
#endif
/* dim pixels outside the highlighted rectangle */
if (highlight)
{
gimp_display_shell_render_highlight (shell, x, y, w, h, highlight);
gimp_display_shell_render_highlight (shell, &info, x, y, w, h, highlight);
}
else if (shell->mask)
{
@ -315,6 +318,8 @@ gimp_display_shell_render (GimpDisplayShell *shell,
gimp_display_shell_render_mask (shell, &info);
}
cairo_surface_mark_dirty (shell->render_surface);
/* put it to the screen */
{
gint disp_xoffset, disp_yoffset;
@ -322,35 +327,43 @@ gimp_display_shell_render (GimpDisplayShell *shell,
gimp_display_shell_scroll_get_disp_offset (shell,
&disp_xoffset, &disp_yoffset);
gimp_canvas_draw_rgb (GIMP_CANVAS (shell->canvas),
GIMP_CANVAS_STYLE_RENDER,
x + disp_xoffset, y + disp_yoffset,
w, h,
shell->render_buf,
3 * GIMP_DISPLAY_RENDER_BUF_WIDTH,
offset_x, offset_y);
cairo_set_source_surface (cr, shell->render_surface,
x + disp_xoffset, y + disp_yoffset);
cairo_rectangle (cr, x + disp_xoffset, y + disp_yoffset, w, h);
cairo_fill (cr);
}
}
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
#define CAIRO_RGB24_RED_PIXEL 2
#define CAIRO_RGB24_GREEN_PIXEL 1
#define CAIRO_RGB24_BLUE_PIXEL 0
#else
#define CAIRO_RGB24_RED_PIXEL 1
#define CAIRO_RGB24_GREEN_PIXEL 2
#define CAIRO_RGB24_BLUE_PIXEL 3
#endif
#define GIMP_DISPLAY_SHELL_DIM_PIXEL(buf,x) \
{ \
buf[3 * (x) + 0] >>= 1; \
buf[3 * (x) + 1] >>= 1; \
buf[3 * (x) + 2] >>= 1; \
buf[4 * (x) + CAIRO_RGB24_RED_PIXEL] >>= 1; \
buf[4 * (x) + CAIRO_RGB24_GREEN_PIXEL] >>= 1; \
buf[4 * (x) + CAIRO_RGB24_BLUE_PIXEL] >>= 1; \
}
/* This function highlights the given area by dimming all pixels outside. */
static void
gimp_display_shell_render_highlight (GimpDisplayShell *shell,
RenderInfo *info,
gint x,
gint y,
gint w,
gint h,
const GdkRectangle *highlight)
{
guchar *buf = shell->render_buf;
guchar *buf = cairo_image_surface_get_data (shell->render_surface);
GdkRectangle rect;
gint offset_x;
gint offset_y;
@ -373,7 +386,7 @@ gimp_display_shell_render_highlight (GimpDisplayShell *shell,
for (x = 0; x < w; x++)
GIMP_DISPLAY_SHELL_DIM_PIXEL (buf, x)
buf += 3 * GIMP_DISPLAY_RENDER_BUF_WIDTH;
buf += info->dest_bpl;
}
for ( ; y < rect.y + rect.height; y++)
@ -384,7 +397,7 @@ gimp_display_shell_render_highlight (GimpDisplayShell *shell,
for (x += rect.width; x < w; x++)
GIMP_DISPLAY_SHELL_DIM_PIXEL (buf, x)
buf += 3 * GIMP_DISPLAY_RENDER_BUF_WIDTH;
buf += info->dest_bpl;
}
for ( ; y < h; y++)
@ -392,7 +405,7 @@ gimp_display_shell_render_highlight (GimpDisplayShell *shell,
for (x = 0; x < w; x++)
GIMP_DISPLAY_SHELL_DIM_PIXEL (buf, x)
buf += 3 * GIMP_DISPLAY_RENDER_BUF_WIDTH;
buf += info->dest_bpl;
}
}
else
@ -402,7 +415,7 @@ gimp_display_shell_render_highlight (GimpDisplayShell *shell,
for (x = 0; x < w; x++)
GIMP_DISPLAY_SHELL_DIM_PIXEL (buf, x)
buf += 3 * GIMP_DISPLAY_RENDER_BUF_WIDTH;
buf += info->dest_bpl;
}
}
}
@ -429,35 +442,35 @@ gimp_display_shell_render_mask (GimpDisplayShell *shell,
switch (shell->mask_color)
{
case GIMP_RED_CHANNEL:
for (x = info->x; x < xe; x++, src++, dest += 3)
for (x = info->x; x < xe; x++, src++, dest += info->dest_bpp)
{
if (*src & 0x80)
continue;
dest[1] = dest[1] >> 2;
dest[2] = dest[2] >> 2;
dest[CAIRO_RGB24_GREEN_PIXEL] >>= 2;
dest[CAIRO_RGB24_BLUE_PIXEL] >>= 2;
}
break;
case GIMP_GREEN_CHANNEL:
for (x = info->x; x < xe; x++, src++, dest += 3)
for (x = info->x; x < xe; x++, src++, dest += info->dest_bpp)
{
if (*src & 0x80)
continue;
dest[0] = dest[0] >> 2;
dest[2] = dest[2] >> 2;
dest[CAIRO_RGB24_RED_PIXEL] >>= 2;
dest[CAIRO_RGB24_BLUE_PIXEL] >>= 2;
}
break;
case GIMP_BLUE_CHANNEL:
for (x = info->x; x < xe; x++, src++, dest += 3)
for (x = info->x; x < xe; x++, src++, dest += info->dest_bpp)
{
if (*src & 0x80)
continue;
dest[0] = dest[0] >> 2;
dest[1] = dest[1] >> 2;
dest[CAIRO_RGB24_RED_PIXEL] >>= 2;
dest[CAIRO_RGB24_GREEN_PIXEL] >>= 2;
}
break;
@ -504,7 +517,7 @@ render_image_gray_a (RenderInfo *info)
dark_light = (y >> check_shift) + (info->x >> check_shift);
for (x = info->x; x < xe; x++, src += 2, dest += 3)
for (x = info->x; x < xe; x++, src += 2, dest += info->dest_bpp)
{
guint v;
@ -513,7 +526,7 @@ render_image_gray_a (RenderInfo *info)
else
v = ((src[0] << 8) + check_light * (256 - src[1])) >> 8;
dest[0] = dest[1] = dest[2] = v;
GIMP_CAIRO_RGB24_SET_PIXEL (dest, v, v, v);
if (((x + 1) & check_mod) == 0)
dark_light += 1;
@ -553,7 +566,7 @@ render_image_rgb_a (RenderInfo *info)
dark_light = (y >> check_shift) + (info->x >> check_shift);
for (x = info->x; x < xe; x++, src += 4, dest += 3)
for (x = info->x; x < xe; x++, src += 4, dest += info->dest_bpp)
{
guint r, g, b;
@ -570,9 +583,7 @@ render_image_rgb_a (RenderInfo *info)
b = ((src[2] << 8) + check_light * (256 - src[3])) >> 8;
}
dest[0] = r;
dest[1] = g;
dest[2] = b;
GIMP_CAIRO_RGB24_SET_PIXEL (dest, r, g, b);
if (((x + 1) & check_mod) == 0)
dark_light += 1;
@ -605,7 +616,7 @@ gimp_display_shell_render_info_scale (RenderInfo *info,
/* We must reset info->dest because this member is modified in render
* functions.
*/
info->dest = shell->render_buf;
info->dest = cairo_image_surface_get_data (shell->render_surface);
info->scalex = shell->scale_x * (1 << level);
info->scaley = shell->scale_y * (1 << level);

View File

@ -27,6 +27,7 @@ void gimp_display_shell_render_init (Gimp *gimp);
void gimp_display_shell_render_exit (Gimp *gimp);
void gimp_display_shell_render (GimpDisplayShell *shell,
cairo_t *cr,
gint x,
gint y,
gint w,

View File

@ -31,7 +31,8 @@
#include "core/gimplayermask.h"
#include "core/gimpimage.h"
#include "gimpcanvas.h"
#include "widgets/gimpcairo.h"
#include "gimpdisplay.h"
#include "gimpdisplayshell.h"
#include "gimpdisplayshell-appearance.h"
@ -41,18 +42,10 @@
#include "gimpdisplayshell-transform.h"
#undef VERBOSE
#define MAX_POINTS_INC 2048
#define USE_DRAWPOINTS TRUE
struct _Selection
{
GimpDisplayShell *shell; /* shell that owns the selection */
gboolean use_cairo; /* temp hack */
GdkSegment *segs_in; /* gdk segments of area boundary */
gint n_segs_in; /* number of segments in segs_in */
@ -68,8 +61,7 @@ struct _Selection
gboolean hidden; /* is the selection hidden? */
gboolean layer_hidden; /* is the layer boundary hidden? */
guint timeout; /* timer for successive draws */
GdkPoint *points_in[8]; /* points of segs_in for fast ants */
gint num_points_in[8]; /* number of points in points_in */
cairo_pattern_t *segs_in_mask; /* cache for rendered segments */
};
@ -86,12 +78,7 @@ static void selection_undraw (Selection *selection);
static void selection_layer_undraw (Selection *selection);
static void selection_layer_draw (Selection *selection);
static void selection_add_point (GdkPoint *points[8],
gint max_npoints[8],
gint npoints[8],
gint x,
gint y);
static void selection_render_points (Selection *selection);
static void selection_render_mask (Selection *selection);
static void selection_transform_segs (Selection *selection,
const BoundSeg *src_segs,
@ -124,7 +111,6 @@ gimp_display_shell_selection_init (GimpDisplayShell *shell)
selection = g_slice_new0 (Selection);
selection->shell = shell;
selection->use_cairo = g_getenv ("CAIRO_SELECTION") != NULL;
selection->visible = TRUE;
selection->hidden = ! gimp_display_shell_get_show_selection (shell);
selection->layer_hidden = ! gimp_display_shell_get_show_layer (shell);
@ -298,105 +284,21 @@ selection_resume (Selection *selection)
selection_start (selection);
}
/* #define BENCHMARK 1 */
static void
selection_draw (Selection *selection)
{
GimpCanvas *canvas = GIMP_CANVAS (selection->shell->canvas);
#ifdef BENCHMARK
GTimer *timer = g_timer_new ();
gint test;
for (test = 0; test < 20; test++)
if (selection->segs_in)
{
#endif /* BENCHMARK */
if (selection->use_cairo)
{
if (selection->segs_in)
{
cairo_t *cr;
cairo_t *cr;
cr = gdk_cairo_create (gtk_widget_get_window (selection->shell->canvas));
cr = gdk_cairo_create (gtk_widget_get_window (selection->shell->canvas));
gimp_display_shell_draw_selection_in (selection->shell, cr,
selection->segs_in,
selection->n_segs_in,
selection->index % 8);
gimp_display_shell_draw_selection_in (selection->shell, cr,
selection->segs_in_mask,
selection->index % 8);
cairo_destroy (cr);
}
cairo_destroy (cr);
}
else
{
#ifdef USE_DRAWPOINTS
#ifdef VERBOSE
{
gint j, sum;
sum = 0;
for (j = 0; j < 8; j++)
sum += selection->num_points_in[j];
g_print ("%d segments, %d points\n", selection->n_segs_in, sum);
}
#endif
if (selection->segs_in)
{
gint i;
if (selection->index == 0)
{
for (i = 0; i < 4; i++)
if (selection->num_points_in[i])
gimp_canvas_draw_points (canvas, GIMP_CANVAS_STYLE_WHITE,
selection->points_in[i],
selection->num_points_in[i]);
for (i = 4; i < 8; i++)
if (selection->num_points_in[i])
gimp_canvas_draw_points (canvas, GIMP_CANVAS_STYLE_BLACK,
selection->points_in[i],
selection->num_points_in[i]);
}
else
{
i = ((selection->index + 3) & 7);
if (selection->num_points_in[i])
gimp_canvas_draw_points (canvas, GIMP_CANVAS_STYLE_WHITE,
selection->points_in[i],
selection->num_points_in[i]);
i = ((selection->index + 7) & 7);
if (selection->num_points_in[i])
gimp_canvas_draw_points (canvas, GIMP_CANVAS_STYLE_BLACK,
selection->points_in[i],
selection->num_points_in[i]);
}
}
#else /* ! USE_DRAWPOINTS */
gimp_canvas_set_stipple_index (canvas,
GIMP_CANVAS_STYLE_SELECTION_IN,
selection->index);
if (selection->segs_in)
gimp_canvas_draw_segments (canvas, GIMP_CANVAS_STYLE_SELECTION_IN,
selection->segs_in,
selection->n_segs_in);
#endif /* USE_DRAWPOINTS */
}
#ifdef BENCHMARK
}
g_printerr ("drawing 20 selections took %f seconds\n",
g_timer_elapsed (timer, NULL));
g_timer_destroy (timer);
#endif /* BENCHMARK */
}
static void
@ -432,7 +334,8 @@ selection_layer_draw (Selection *selection)
cr = gdk_cairo_create (gtk_widget_get_window (selection->shell->canvas));
gimp_display_shell_draw_layer_boundary (selection->shell, cr, drawable,
gimp_display_shell_draw_layer_boundary (selection->shell, cr,
drawable,
selection->segs_layer,
selection->n_segs_layer);
@ -447,15 +350,15 @@ selection_layer_undraw (Selection *selection)
if (selection->segs_layer && selection->n_segs_layer == 4)
{
gint x1 = selection->segs_layer[0].x1 - 1;
gint y1 = selection->segs_layer[0].y1 - 1;
gint x2 = selection->segs_layer[3].x2 + 1;
gint y2 = selection->segs_layer[3].y2 + 1;
const gint x1 = selection->segs_layer[0].x1 - 1;
const gint y1 = selection->segs_layer[0].y1 - 1;
const gint x2 = selection->segs_layer[3].x2 + 1;
const gint y2 = selection->segs_layer[3].y2 + 1;
gint x3 = selection->segs_layer[0].x1 + 1;
gint y3 = selection->segs_layer[0].y1 + 1;
gint x4 = selection->segs_layer[3].x2 - 1;
gint y4 = selection->segs_layer[3].y2 - 1;
const gint x3 = selection->segs_layer[0].x1 + 1;
const gint y3 = selection->segs_layer[0].y1 + 1;
const gint x4 = selection->segs_layer[3].x2 - 1;
const gint y4 = selection->segs_layer[3].y2 - 1;
/* expose the region, this will restart the selection */
gimp_display_shell_expose_area (selection->shell,
@ -474,137 +377,24 @@ selection_layer_undraw (Selection *selection)
}
static void
selection_add_point (GdkPoint *points[8],
gint max_npoints[8],
gint npoints[8],
gint x,
gint y)
selection_render_mask (Selection *selection)
{
gint i, j;
cairo_t *cr;
j = (x - y) & 7;
cr = gdk_cairo_create (gtk_widget_get_window (selection->shell->canvas));
i = npoints[j]++;
if (i == max_npoints[j])
{
max_npoints[j] += 2048;
points[j] = g_realloc (points[j], sizeof (GdkPoint) * max_npoints[j]);
}
cairo_push_group_with_content (cr, CAIRO_CONTENT_ALPHA);
points[j][i].x = x;
points[j][i].y = y;
}
cairo_set_line_width (cr, 1.0);
gimp_cairo_add_segments (cr,
selection->segs_in,
selection->n_segs_in);
cairo_stroke (cr);
/* Render the segs_in array into points_in */
selection->segs_in_mask = cairo_pop_group (cr);
static void
selection_render_points (Selection *selection)
{
gint max_npoints[8];
gint i;
if (selection->segs_in == NULL)
return;
for (i = 0; i < 8; i++)
{
max_npoints[i] = MAX_POINTS_INC;
selection->points_in[i] = g_new (GdkPoint, max_npoints[i]);
selection->num_points_in[i] = 0;
}
for (i = 0; i < selection->n_segs_in; i++)
{
gint x, y;
gint dx, dy;
gint dxa, dya;
gint r;
#ifdef VERBOSE
g_print ("%2d: (%d, %d) - (%d, %d)\n", i,
selection->segs_in[i].x1,
selection->segs_in[i].y1,
selection->segs_in[i].x2,
selection->segs_in[i].y2);
#endif
x = selection->segs_in[i].x1;
dxa = selection->segs_in[i].x2 - x;
if (dxa > 0)
{
dx = 1;
}
else
{
dxa = -dxa;
dx = -1;
}
y = selection->segs_in[i].y1;
dya = selection->segs_in[i].y2 - y;
if (dya > 0)
{
dy = 1;
}
else
{
dya = -dya;
dy = -1;
}
if (dxa > dya)
{
r = dya;
do
{
selection_add_point (selection->points_in,
max_npoints,
selection->num_points_in,
x, y);
x += dx;
r += dya;
if (r >= (dxa << 1))
{
y += dy;
r -= (dxa << 1);
}
}
while (x != selection->segs_in[i].x2);
}
else if (dxa < dya)
{
r = dxa;
do
{
selection_add_point (selection->points_in,
max_npoints,
selection->num_points_in,
x, y);
y += dy;
r += dxa;
if (r >= (dya << 1))
{
x += dx;
r -= (dya << 1);
}
}
while (y != selection->segs_in[i].y2);
}
else
{
selection_add_point (selection->points_in,
max_npoints,
selection->num_points_in,
x, y);
}
}
cairo_destroy (cr);
}
static void
@ -613,9 +403,9 @@ selection_transform_segs (Selection *selection,
GdkSegment *dest_segs,
gint n_segs)
{
gint xclamp = selection->shell->disp_width + 1;
gint yclamp = selection->shell->disp_height + 1;
gint i;
const gint xclamp = selection->shell->disp_width + 1;
const gint yclamp = selection->shell->disp_height + 1;
gint i;
gimp_display_shell_transform_segments (selection->shell,
src_segs, dest_segs, n_segs, FALSE);
@ -633,7 +423,7 @@ selection_transform_segs (Selection *selection,
* lie outside the region...
* we need to transform it by one display pixel
*/
if (!src_segs[i].open)
if (! src_segs[i].open)
{
/* If it is vertical */
if (dest_segs[i].x1 == dest_segs[i].x2)
@ -672,9 +462,7 @@ selection_generate_segs (Selection *selection)
selection_transform_segs (selection, segs_in,
selection->segs_in, selection->n_segs_in);
#ifdef USE_DRAWPOINTS
selection_render_points (selection);
#endif
selection_render_mask (selection);
}
else
{
@ -718,8 +506,6 @@ selection_generate_segs (Selection *selection)
static void
selection_free_segs (Selection *selection)
{
gint j;
if (selection->segs_in)
{
g_free (selection->segs_in);
@ -741,14 +527,10 @@ selection_free_segs (Selection *selection)
selection->n_segs_layer = 0;
}
for (j = 0; j < 8; j++)
if (selection->segs_in_mask)
{
if (selection->points_in[j])
{
g_free (selection->points_in[j]);
selection->points_in[j] = NULL;
selection->num_points_in[j] = 0;
}
cairo_pattern_destroy (selection->segs_in_mask);
selection->segs_in_mask = NULL;
}
}
@ -771,31 +553,21 @@ selection_start_timeout (Selection *selection)
/* Draw the ants */
if (! selection->hidden)
{
GimpCanvas *canvas = GIMP_CANVAS (selection->shell->canvas);
GimpDisplayConfig *config = selection->shell->display->config;
selection_draw (selection);
if (selection->segs_out)
{
if (selection->use_cairo)
{
cairo_t *cr;
cairo_t *cr;
cr = gdk_cairo_create (gtk_widget_get_window (selection->shell->canvas));
cr = gdk_cairo_create (gtk_widget_get_window (selection->shell->canvas));
gimp_display_shell_draw_selection_out (selection->shell, cr,
selection->segs_out,
selection->n_segs_out);
gimp_display_shell_draw_selection_out (selection->shell, cr,
selection->segs_out,
selection->n_segs_out);
cairo_destroy (cr);
}
else
{
gimp_canvas_draw_segments (canvas, GIMP_CANVAS_STYLE_SELECTION_OUT,
selection->segs_out,
selection->n_segs_out);
}
cairo_destroy (cr);
}
if (selection->segs_in && selection->visible)

View File

@ -34,6 +34,8 @@
#include "core/gimpgrid.h"
#include "core/gimplayermask.h"
#include "widgets/gimpcairo.h"
#include "gimpdisplayshell.h"
#include "gimpdisplayshell-style.h"
@ -62,14 +64,6 @@ static const GimpRGB selection_in_fg = { 0.0, 0.0, 0.0, 1.0 };
static const GimpRGB selection_in_bg = { 1.0, 1.0, 1.0, 1.0 };
/* local function prototypes */
static void gimp_display_shell_set_stipple_style (cairo_t *cr,
const GimpRGB *fg,
const GimpRGB *bg,
gint index);
/* public functions */
void
@ -77,21 +71,24 @@ gimp_display_shell_set_guide_style (GimpDisplayShell *shell,
cairo_t *cr,
gboolean active)
{
cairo_pattern_t *pattern;
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
g_return_if_fail (cr != NULL);
cairo_set_line_width (cr, 1.0);
if (active)
gimp_display_shell_set_stipple_style (cr,
&guide_active_fg,
&guide_active_bg,
0);
pattern = gimp_cairo_stipple_pattern_create (&guide_active_fg,
&guide_active_bg,
0);
else
gimp_display_shell_set_stipple_style (cr,
&guide_normal_fg,
&guide_normal_bg,
0);
pattern = gimp_cairo_stipple_pattern_create (&guide_normal_fg,
&guide_normal_bg,
0);
cairo_set_source (cr, pattern);
cairo_pattern_destroy (pattern);
}
void
@ -129,24 +126,27 @@ gimp_display_shell_set_grid_style (GimpDisplayShell *shell,
switch (grid->style)
{
cairo_pattern_t *pattern;
case GIMP_GRID_ON_OFF_DASH:
case GIMP_GRID_DOUBLE_DASH:
if (grid->style == GIMP_GRID_DOUBLE_DASH)
{
gimp_display_shell_set_stipple_style (cr,
&grid->fgcolor,
&grid->bgcolor,
0);
pattern = gimp_cairo_stipple_pattern_create (&grid->fgcolor,
&grid->bgcolor,
0);
}
else
{
GimpRGB bg = { 0.0, 0.0, 0.0, 0.0 };
gimp_display_shell_set_stipple_style (cr,
&grid->fgcolor,
&bg,
0);
pattern = gimp_cairo_stipple_pattern_create (&grid->fgcolor,
&bg,
0);
}
cairo_set_source (cr, pattern);
cairo_pattern_destroy (pattern);
break;
case GIMP_GRID_DOTS:
@ -208,6 +208,8 @@ gimp_display_shell_set_layer_style (GimpDisplayShell *shell,
cairo_t *cr,
GimpDrawable *drawable)
{
cairo_pattern_t *pattern;
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
g_return_if_fail (cr != NULL);
g_return_if_fail (GIMP_IS_DRAWABLE (drawable));
@ -216,40 +218,43 @@ gimp_display_shell_set_layer_style (GimpDisplayShell *shell,
if (GIMP_IS_LAYER_MASK (drawable))
{
gimp_display_shell_set_stipple_style (cr,
&layer_mask_fg,
&layer_mask_bg,
0);
pattern = gimp_cairo_stipple_pattern_create (&layer_mask_fg,
&layer_mask_bg,
0);
}
else if (gimp_viewable_get_children (GIMP_VIEWABLE (drawable)))
{
gimp_display_shell_set_stipple_style (cr,
&layer_group_fg,
&layer_group_bg,
0);
pattern = gimp_cairo_stipple_pattern_create (&layer_group_fg,
&layer_group_bg,
0);
}
else
{
gimp_display_shell_set_stipple_style (cr,
&layer_fg,
&layer_bg,
0);
pattern = gimp_cairo_stipple_pattern_create (&layer_fg,
&layer_bg,
0);
}
cairo_set_source (cr, pattern);
cairo_pattern_destroy (pattern);
}
void
gimp_display_shell_set_selection_out_style (GimpDisplayShell *shell,
cairo_t *cr)
{
cairo_pattern_t *pattern;
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
g_return_if_fail (cr != NULL);
cairo_set_line_width (cr, 1.0);
gimp_display_shell_set_stipple_style (cr,
&selection_out_fg,
&selection_out_bg,
0);
pattern = gimp_cairo_stipple_pattern_create (&selection_out_fg,
&selection_out_bg,
0);
cairo_set_source (cr, pattern);
cairo_pattern_destroy (pattern);
}
void
@ -257,61 +262,16 @@ gimp_display_shell_set_selection_in_style (GimpDisplayShell *shell,
cairo_t *cr,
gint index)
{
cairo_pattern_t *pattern;
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
g_return_if_fail (cr != NULL);
cairo_set_line_width (cr, 1.0);
gimp_display_shell_set_stipple_style (cr,
&selection_in_fg,
&selection_in_bg,
index);
}
/* private functions */
static cairo_user_data_key_t surface_data_key = { 0, };
static void
gimp_display_shell_set_stipple_style (cairo_t *cr,
const GimpRGB *fg,
const GimpRGB *bg,
gint index)
{
cairo_surface_t *surface;
guchar *data = g_malloc0 (8 * 8 * 4);
guchar fg_r, fg_g, fg_b, fg_a;
guchar bg_r, bg_g, bg_b, bg_a;
gint x, y;
guchar *d;
gimp_rgba_get_uchar (fg, &fg_r, &fg_g, &fg_b, &fg_a);
gimp_rgba_get_uchar (bg, &bg_r, &bg_g, &bg_b, &bg_a);
d = data;
for (y = 0; y < 8; y++)
{
for (x = 0; x < 8; x++)
{
if ((x + y + index) % 8 >= 4)
GIMP_CAIRO_ARGB32_SET_PIXEL (d, fg_r, fg_g, fg_b, fg_a);
else
GIMP_CAIRO_ARGB32_SET_PIXEL (d, bg_r, bg_g, bg_b, bg_a);
d += 4;
}
}
surface = cairo_image_surface_create_for_data (data,
CAIRO_FORMAT_ARGB32,
8, 8, 8 * 4);
cairo_surface_set_user_data (surface, &surface_data_key,
data, (cairo_destroy_func_t) g_free);
cairo_set_source_surface (cr, surface, 0, 0);
cairo_surface_destroy (surface);
cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT);
pattern = gimp_cairo_stipple_pattern_create (&selection_in_fg,
&selection_in_bg,
index);
cairo_set_source (cr, pattern);
cairo_pattern_destroy (pattern);
}

View File

@ -289,9 +289,9 @@ gimp_display_shell_init (GimpDisplayShell *shell)
shell->x_src_dec = 1;
shell->y_src_dec = 1;
shell->render_buf = g_new (guchar,
GIMP_DISPLAY_RENDER_BUF_WIDTH *
GIMP_DISPLAY_RENDER_BUF_HEIGHT * 3);
shell->render_surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24,
GIMP_DISPLAY_RENDER_BUF_WIDTH,
GIMP_DISPLAY_RENDER_BUF_HEIGHT);
shell->icon_size = 32;
@ -868,10 +868,10 @@ gimp_display_shell_destroy (GtkObject *object)
shell->filter_idle_id = 0;
}
if (shell->render_buf)
if (shell->render_surface)
{
g_free (shell->render_buf);
shell->render_buf = NULL;
cairo_surface_destroy (shell->render_surface);
shell->render_surface = NULL;
}
if (shell->highlight)

View File

@ -131,7 +131,7 @@ struct _GimpDisplayShell
GtkWidget *statusbar; /* statusbar */
guchar *render_buf; /* buffer for rendering the image */
cairo_surface_t *render_surface; /* buffer for rendering the image */
guint title_idle_id; /* title update idle ID */
gchar *title; /* current title */

View File

@ -315,7 +315,7 @@ gimp_pdb_item_is_attached (GimpItem *item,
if (! gimp_item_is_attached (item))
{
g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
_("Item '%s' (%d) can not be used because it has not "
_("Item '%s' (%d) cannot be used because it has not "
"been added to an image"),
gimp_object_get_name (item),
gimp_item_get_ID (item));
@ -325,7 +325,7 @@ gimp_pdb_item_is_attached (GimpItem *item,
if (image && image != gimp_item_get_image (item))
{
g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
_("Item '%s' (%d) can not be used because it is "
_("Item '%s' (%d) cannot be used because it is "
"attached to another image"),
gimp_object_get_name (item),
gimp_item_get_ID (item));
@ -354,7 +354,7 @@ gimp_pdb_item_is_in_tree (GimpItem *item,
if (! gimp_item_get_tree (item))
{
g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
_("Item '%s' (%d) can not be used because it is not "
_("Item '%s' (%d) cannot be used because it is not "
"a direct child of an item tree"),
gimp_object_get_name (item),
gimp_item_get_ID (item));
@ -364,6 +364,61 @@ gimp_pdb_item_is_in_tree (GimpItem *item,
return TRUE;
}
gboolean
gimp_pdb_item_is_in_same_tree (GimpItem *item,
GimpItem *item2,
GimpImage *image,
GError **error)
{
g_return_val_if_fail (GIMP_IS_ITEM (item), FALSE);
g_return_val_if_fail (GIMP_IS_ITEM (item2), FALSE);
g_return_val_if_fail (image == NULL || GIMP_IS_IMAGE (image), FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
if (! gimp_pdb_item_is_in_tree (item, image, FALSE, error) ||
! gimp_pdb_item_is_in_tree (item2, image, FALSE, error))
return FALSE;
if (gimp_item_get_tree (item) != gimp_item_get_tree (item2))
{
g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
_("Items '%s' (%d) and '%s' (%d) cannot be used "
"because they are not part of the same item tree"),
gimp_object_get_name (item),
gimp_item_get_ID (item),
gimp_object_get_name (item2),
gimp_item_get_ID (item2));
return FALSE;
}
return TRUE;
}
gboolean
gimp_pdb_item_is_not_ancestor (GimpItem *item,
GimpItem *not_descendant,
GError **error)
{
g_return_val_if_fail (GIMP_IS_ITEM (item), FALSE);
g_return_val_if_fail (GIMP_IS_ITEM (not_descendant), FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
if (gimp_viewable_is_ancestor (GIMP_VIEWABLE (item),
GIMP_VIEWABLE (not_descendant)))
{
g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
_("Item '%s' (%d) must not be an ancestor of "
"'%s' (%d)"),
gimp_object_get_name (item),
gimp_item_get_ID (item),
gimp_object_get_name (not_descendant),
gimp_item_get_ID (not_descendant));
return FALSE;
}
return TRUE;
}
gboolean
gimp_pdb_item_is_floating (GimpItem *item,
GimpImage *dest_image,
@ -413,6 +468,26 @@ gimp_pdb_item_is_writable (GimpItem *item,
return TRUE;
}
gboolean
gimp_pdb_item_is_group (GimpItem *item,
GError **error)
{
g_return_val_if_fail (GIMP_IS_ITEM (item), FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
if (! gimp_viewable_get_children (GIMP_VIEWABLE (item)))
{
g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
_("Item '%s' (%d) cannot be used because it is "
"not a group item"),
gimp_object_get_name (item),
gimp_item_get_ID (item));
return FALSE;
}
return TRUE;
}
gboolean
gimp_pdb_item_is_not_group (GimpItem *item,
GError **error)
@ -444,7 +519,7 @@ gimp_pdb_layer_is_text_layer (GimpLayer *layer,
if (! gimp_drawable_is_text_layer (GIMP_DRAWABLE (layer)))
{
g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
_("Layer '%s' (%d) can not be used because it is not "
_("Layer '%s' (%d) cannot be used because it is not "
"a text layer"),
gimp_object_get_name (layer),
gimp_item_get_ID (GIMP_ITEM (layer)));

View File

@ -56,11 +56,20 @@ gboolean gimp_pdb_item_is_in_tree (GimpItem *item,
GimpImage *image,
gboolean writable,
GError **error);
gboolean gimp_pdb_item_is_in_same_tree (GimpItem *item,
GimpItem *item2,
GimpImage *image,
GError **error);
gboolean gimp_pdb_item_is_not_ancestor (GimpItem *item,
GimpItem *not_descendant,
GError **error);
gboolean gimp_pdb_item_is_floating (GimpItem *item,
GimpImage *dest_image,
GError **error);
gboolean gimp_pdb_item_is_writable (GimpItem *item,
GError **error);
gboolean gimp_pdb_item_is_group (GimpItem *item,
GError **error);
gboolean gimp_pdb_item_is_not_group (GimpItem *item,
GError **error);

File diff suppressed because it is too large Load Diff

View File

@ -28,7 +28,7 @@
#include "internal-procs.h"
/* 621 procedures registered total */
/* 630 procedures registered total */
void
internal_procs_init (GimpPDB *pdb)

View File

@ -26,6 +26,7 @@
#include "core/gimpimage.h"
#include "core/gimpitem.h"
#include "core/gimplayermask.h"
#include "core/gimplist.h"
#include "core/gimpparamspecs.h"
#include "core/gimpselection.h"
#include "text/gimptextlayer.h"
@ -293,6 +294,120 @@ item_is_vectors_invoker (GimpProcedure *procedure,
return return_vals;
}
static GValueArray *
item_is_group_invoker (GimpProcedure *procedure,
Gimp *gimp,
GimpContext *context,
GimpProgress *progress,
const GValueArray *args,
GError **error)
{
gboolean success = TRUE;
GValueArray *return_vals;
GimpItem *item;
gboolean group = FALSE;
item = gimp_value_get_item (&args->values[0], gimp);
if (success)
{
group = (gimp_viewable_get_children (GIMP_VIEWABLE (item)) != NULL);
}
return_vals = gimp_procedure_get_return_values (procedure, success,
error ? *error : NULL);
if (success)
g_value_set_boolean (&return_vals->values[1], group);
return return_vals;
}
static GValueArray *
item_get_parent_invoker (GimpProcedure *procedure,
Gimp *gimp,
GimpContext *context,
GimpProgress *progress,
const GValueArray *args,
GError **error)
{
gboolean success = TRUE;
GValueArray *return_vals;
GimpItem *item;
GimpItem *parent = NULL;
item = gimp_value_get_item (&args->values[0], gimp);
if (success)
{
parent = gimp_item_get_parent (item);
}
return_vals = gimp_procedure_get_return_values (procedure, success,
error ? *error : NULL);
if (success)
gimp_value_set_item (&return_vals->values[1], parent);
return return_vals;
}
static GValueArray *
item_get_children_invoker (GimpProcedure *procedure,
Gimp *gimp,
GimpContext *context,
GimpProgress *progress,
const GValueArray *args,
GError **error)
{
gboolean success = TRUE;
GValueArray *return_vals;
GimpItem *item;
gint32 num_children = 0;
gint32 *child_ids = NULL;
item = gimp_value_get_item (&args->values[0], gimp);
if (success)
{
GimpContainer *children = gimp_viewable_get_children (GIMP_VIEWABLE (item));
if (children)
{
num_children = gimp_container_get_n_children (children);
if (num_children)
{
GList *list;
gint i;
child_ids = g_new (gint32, num_children);
for (list = GIMP_LIST (children)->list, i = 0;
list;
list = g_list_next (list), i++)
{
child_ids[i] = gimp_item_get_ID (GIMP_ITEM (list->data));
}
}
}
else
success = FALSE;
}
return_vals = gimp_procedure_get_return_values (procedure, success,
error ? *error : NULL);
if (success)
{
g_value_set_int (&return_vals->values[1], num_children);
gimp_value_take_int32array (&return_vals->values[2], child_ids, num_children);
}
return return_vals;
}
static GValueArray *
item_get_name_invoker (GimpProcedure *procedure,
Gimp *gimp,
@ -821,6 +936,98 @@ register_item_procs (GimpPDB *pdb)
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
/*
* gimp-item-is-group
*/
procedure = gimp_procedure_new (item_is_group_invoker);
gimp_object_set_static_name (GIMP_OBJECT (procedure),
"gimp-item-is-group");
gimp_procedure_set_static_strings (procedure,
"gimp-item-is-group",
"Returns whether the item is a group item.",
"This procedure returns TRUE if the specified item is a group item which can have children.",
"Michael Natterer <mitch@gimp.org>",
"Michael Natterer",
"2010",
NULL);
gimp_procedure_add_argument (procedure,
gimp_param_spec_item_id ("item",
"item",
"The item",
pdb->gimp, FALSE,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
g_param_spec_boolean ("group",
"group",
"TRUE if the item is a group, FALSE otherwise",
FALSE,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
/*
* gimp-item-get-parent
*/
procedure = gimp_procedure_new (item_get_parent_invoker);
gimp_object_set_static_name (GIMP_OBJECT (procedure),
"gimp-item-get-parent");
gimp_procedure_set_static_strings (procedure,
"gimp-item-get-parent",
"Returns the item's parent item.",
"This procedure returns the item's parent item, if any.",
"Michael Natterer <mitch@gimp.org>",
"Michael Natterer",
"2010",
NULL);
gimp_procedure_add_argument (procedure,
gimp_param_spec_item_id ("item",
"item",
"The item",
pdb->gimp, FALSE,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
gimp_param_spec_item_id ("parent",
"parent",
"The item's parent item",
pdb->gimp, FALSE,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
/*
* gimp-item-get-children
*/
procedure = gimp_procedure_new (item_get_children_invoker);
gimp_object_set_static_name (GIMP_OBJECT (procedure),
"gimp-item-get-children");
gimp_procedure_set_static_strings (procedure,
"gimp-item-get-children",
"Returns the item's list of children.",
"This procedure returns the list of items which are children of the specified item. The order is topmost to bottommost.",
"Michael Natterer <mitch@gimp.org>",
"Michael Natterer",
"2010",
NULL);
gimp_procedure_add_argument (procedure,
gimp_param_spec_item_id ("item",
"item",
"The item",
pdb->gimp, FALSE,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
gimp_param_spec_int32 ("num-children",
"num children",
"The item's number of children",
0, G_MAXINT32, 0,
GIMP_PARAM_READWRITE));
gimp_procedure_add_return_value (procedure,
gimp_param_spec_int32_array ("child-ids",
"child ids",
"The item's list of children",
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
/*
* gimp-item-get-name
*/

View File

@ -39,6 +39,8 @@ libappwidgets_a_sources = \
gimpbrushselect.h \
gimpbufferview.c \
gimpbufferview.h \
gimpcairo.c \
gimpcairo.h \
gimpcairo-wilber.c \
gimpcairo-wilber.h \
gimpcellrendererdashes.c \

201
app/widgets/gimpcairo.c Normal file
View File

@ -0,0 +1,201 @@
/* GIMP - The GNU Image Manipulation Program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* gimpcairo.c
* Copyright (C) 2010 Michael Natterer <mitch@gimp.org>
*
* Some code here is based on code from librsvg that was originally
* written by Raph Levien <raph@artofcode.com> for Gill.
*
* 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 3 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, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <gtk/gtk.h>
#include "libgimpcolor/gimpcolor.h"
#include "libgimpwidgets/gimpwidgets.h"
#include "widgets-types.h"
#include "gimpcairo.h"
#include "gimpcairo-wilber.h"
static cairo_user_data_key_t surface_data_key = { 0, };
cairo_pattern_t *
gimp_cairo_stipple_pattern_create (const GimpRGB *fg,
const GimpRGB *bg,
gint index)
{
cairo_surface_t *surface;
cairo_pattern_t *pattern;
guchar *data;
guchar *d;
guchar fg_r, fg_g, fg_b, fg_a;
guchar bg_r, bg_g, bg_b, bg_a;
gint x, y;
g_return_val_if_fail (fg != NULL, NULL);
g_return_val_if_fail (bg != NULL, NULL);
data = g_malloc (8 * 8 * 4);
gimp_rgba_get_uchar (fg, &fg_r, &fg_g, &fg_b, &fg_a);
gimp_rgba_get_uchar (bg, &bg_r, &bg_g, &bg_b, &bg_a);
d = data;
for (y = 0; y < 8; y++)
{
for (x = 0; x < 8; x++)
{
if ((x + y + index) % 8 >= 4)
GIMP_CAIRO_ARGB32_SET_PIXEL (d, fg_r, fg_g, fg_b, fg_a);
else
GIMP_CAIRO_ARGB32_SET_PIXEL (d, bg_r, bg_g, bg_b, bg_a);
d += 4;
}
}
surface = cairo_image_surface_create_for_data (data,
CAIRO_FORMAT_ARGB32,
8, 8, 8 * 4);
cairo_surface_set_user_data (surface, &surface_data_key,
data, (cairo_destroy_func_t) g_free);
pattern = cairo_pattern_create_for_surface (surface);
cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT);
cairo_surface_destroy (surface);
return pattern;
}
void
gimp_cairo_add_segments (cairo_t *cr,
GdkSegment *segs,
gint n_segs)
{
gint i;
g_return_if_fail (cr != NULL);
g_return_if_fail (segs != NULL && n_segs > 0);
for (i = 0; i < n_segs; i++)
{
if (segs[i].x1 == segs[i].x2)
{
cairo_move_to (cr, segs[i].x1 + 0.5, segs[i].y1);
cairo_line_to (cr, segs[i].x2 + 0.5, segs[i].y2);
}
else
{
cairo_move_to (cr, segs[i].x1, segs[i].y1 + 0.5);
cairo_line_to (cr, segs[i].x2, segs[i].y2 + 0.5);
}
}
}
void
gimp_cairo_draw_toolbox_wilber (GtkWidget *widget,
cairo_t *cr)
{
GtkStyle *style;
GtkStateType state;
GtkAllocation allocation;
gdouble wilber_width;
gdouble wilber_height;
gdouble factor;
g_return_if_fail (GTK_IS_WIDGET (widget));
g_return_if_fail (cr != NULL);
style = gtk_widget_get_style (widget);
state = gtk_widget_get_state (widget);
gtk_widget_get_allocation (widget, &allocation);
gimp_cairo_wilber_get_size (cr, &wilber_width, &wilber_height);
factor = allocation.width / wilber_width * 0.9;
cairo_scale (cr, factor, factor);
gimp_cairo_wilber (cr,
(allocation.width / factor - wilber_width) / 2.0,
(allocation.height / factor - wilber_height) / 2.0);
cairo_set_source_rgba (cr,
style->fg[state].red / 65535.0,
style->fg[state].green / 65535.0,
style->fg[state].blue / 65535.0,
0.10);
cairo_fill (cr);
}
void
gimp_cairo_draw_drop_wilber (GtkWidget *widget,
cairo_t *cr)
{
GtkStyle *style;
GtkStateType state;
GtkAllocation allocation;
gdouble wilber_width;
gdouble wilber_height;
gdouble width;
gdouble height;
gdouble side;
gdouble factor;
g_return_if_fail (GTK_IS_WIDGET (widget));
g_return_if_fail (cr != NULL);
style = gtk_widget_get_style (widget);
state = gtk_widget_get_state (widget);
gtk_widget_get_allocation (widget, &allocation);
gimp_cairo_wilber_get_size (cr, &wilber_width, &wilber_height);
wilber_width /= 2;
wilber_height /= 2;
side = MIN (MIN (allocation.width, allocation.height),
MAX (allocation.width, allocation.height) / 2);
width = MAX (wilber_width, side);
height = MAX (wilber_height, side);
factor = MIN (width / wilber_width, height / wilber_height);
cairo_scale (cr, factor, factor);
/* magic factors depend on the image used, everything else is generic
*/
gimp_cairo_wilber (cr,
- wilber_width * 0.6,
allocation.height / factor - wilber_height * 1.1);
cairo_set_source_rgba (cr,
style->fg[state].red / 65535.0,
style->fg[state].green / 65535.0,
style->fg[state].blue / 65535.0,
0.15);
cairo_fill (cr);
}

42
app/widgets/gimpcairo.h Normal file
View File

@ -0,0 +1,42 @@
/* GIMP - The GNU Image Manipulation Program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* gimpcairo.h
* Copyright (C) 2010 Michael Natterer <mitch@gimp.org>
*
* Some code here is based on code from librsvg that was originally
* written by Raph Levien <raph@artofcode.com> for Gill.
*
* 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 3 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, see <http://www.gnu.org/licenses/>.
*/
#ifndef __GIMP_CAIRO_H__
#define __GIMP_CAIRO_H__
cairo_pattern_t * gimp_cairo_stipple_pattern_create (const GimpRGB *fg,
const GimpRGB *bg,
gint index);
void gimp_cairo_add_segments (cairo_t *cr,
GdkSegment *segs,
gint n_segs);
void gimp_cairo_draw_toolbox_wilber (GtkWidget *widget,
cairo_t *cr);
void gimp_cairo_draw_drop_wilber (GtkWidget *widget,
cairo_t *cr);
#endif /* __GIMP_CAIRO_H__ */

View File

@ -54,6 +54,7 @@
* all changes need to flush colormap lookup cache
*/
#define BORDER 6
enum
{
@ -90,14 +91,10 @@ static void gimp_colormap_editor_clear (GimpColormapEditor *editor,
gint start_row);
static void gimp_colormap_editor_update_entries (GimpColormapEditor *editor);
static void gimp_colormap_preview_size_allocate (GtkWidget *widget,
GtkAllocation *allocation,
GimpColormapEditor *editor);
static void gimp_colormap_preview_expose (GtkWidget *widget,
static gboolean gimp_colormap_preview_expose (GtkWidget *widget,
GdkEventExpose *event,
GimpColormapEditor *editor);
static gboolean
gimp_colormap_preview_button_press (GtkWidget *widget,
static gboolean gimp_colormap_preview_button_press (GtkWidget *widget,
GdkEventButton *bevent,
GimpColormapEditor *editor);
static void gimp_colormap_preview_drag_color (GtkWidget *widget,
@ -162,11 +159,9 @@ gimp_colormap_editor_class_init (GimpColormapEditorClass* klass)
static void
gimp_colormap_editor_init (GimpColormapEditor *editor)
{
GtkWidget *frame;
GtkWidget *table;
GtkObject *adj;
gint width;
gint height;
GtkWidget *frame;
GtkWidget *table;
GtkObject *adj;
editor->col_index = 0;
editor->dnd_col_index = 0;
@ -188,17 +183,9 @@ gimp_colormap_editor_init (GimpColormapEditor *editor)
editor->layout = gimp_colormap_editor_create_layout (editor->preview);
pango_layout_set_width (editor->layout, 180 * PANGO_SCALE);
pango_layout_get_pixel_size (editor->layout, &width, &height);
gtk_widget_set_size_request (editor->preview, width, height);
g_signal_connect_after (editor->preview, "size-allocate",
G_CALLBACK (gimp_colormap_preview_size_allocate),
editor);
g_signal_connect_after (editor->preview, "expose-event",
G_CALLBACK (gimp_colormap_preview_expose),
editor);
g_signal_connect (editor->preview, "expose-event",
G_CALLBACK (gimp_colormap_preview_expose),
editor);
g_signal_connect (editor->preview, "button-press-event",
G_CALLBACK (gimp_colormap_preview_button_press),
@ -486,6 +473,7 @@ gimp_colormap_editor_create_layout (GtkWidget *widget)
layout = gtk_widget_create_pango_layout (widget,
_("Only indexed images have "
"a colormap."));
pango_layout_set_alignment (layout, PANGO_ALIGN_CENTER);
attrs = pango_attr_list_new ();
@ -526,7 +514,8 @@ gimp_colormap_editor_draw (GimpColormapEditor *editor)
cellsize = sqrt (allocation.width * allocation.height / ncol);
while (cellsize >= MIN_CELL_SIZE
&& (xn = allocation.width / cellsize) * (yn = allocation.height / cellsize) < ncol)
&& ((xn = allocation.width / cellsize) *
(yn = allocation.height / cellsize) < ncol))
cellsize--;
if (cellsize < MIN_CELL_SIZE)
@ -560,7 +549,9 @@ gimp_colormap_editor_draw (GimpColormapEditor *editor)
}
if (j * cellsize < allocation.width)
memset (row + j * cellsize * 3, 255, 3 * (allocation.width - j * cellsize));
memset (row + j * cellsize * 3,
255,
3 * (allocation.width - j * cellsize));
for (k = 0; k < cellsize; k++)
{
@ -647,31 +638,45 @@ gimp_colormap_editor_draw_cell (GimpColormapEditor *editor,
cellsize, cellsize);
}
static void
static gboolean
gimp_colormap_preview_expose (GtkWidget *widget,
GdkEventExpose *event,
GimpColormapEditor *editor)
{
GimpImageEditor *image_editor = GIMP_IMAGE_EDITOR (editor);
GtkStyle *style;
cairo_t *cr;
GtkAllocation allocation;
gint x, y;
gint width, height;
gint y;
if (image_editor->image == NULL ||
gimp_image_base_type (image_editor->image) == GIMP_INDEXED)
return;
return FALSE;
cr = gdk_cairo_create (event->window);
gdk_cairo_region (cr, event->region);
cairo_clip (cr);
style = gtk_widget_get_style (widget);
gdk_cairo_set_source_color (cr, &style->fg[gtk_widget_get_state (widget)]);
gtk_widget_get_allocation (widget, &allocation);
pango_layout_set_width (editor->layout,
PANGO_SCALE * (allocation.width - 2 * BORDER));
pango_layout_get_pixel_size (editor->layout, &width, &height);
x = (allocation.width - width) / 2;
y = (allocation.height - height) / 2;
gdk_draw_layout (gtk_widget_get_window (editor->preview),
gtk_widget_get_style (editor->preview)->fg_gc[gtk_widget_get_state (widget)],
MAX (x, 0), MAX (y, 0),
editor->layout);
cairo_move_to (cr, BORDER, MAX (y, 0));
pango_cairo_show_layout (cr, editor->layout);
cairo_fill (cr);
cairo_destroy (cr);
return TRUE;
}
static void
@ -734,20 +739,6 @@ gimp_colormap_editor_update_entries (GimpColormapEditor *editor)
}
}
static void
gimp_colormap_preview_size_allocate (GtkWidget *widget,
GtkAllocation *alloc,
GimpColormapEditor *editor)
{
GimpImage *image = GIMP_IMAGE_EDITOR (editor)->image;
if (HAVE_COLORMAP (image))
gimp_colormap_editor_draw (editor);
else
gimp_colormap_editor_clear (editor, -1);
}
static gboolean
gimp_colormap_preview_button_press (GtkWidget *widget,
GdkEventButton *bevent,

View File

@ -37,7 +37,7 @@
#include "file/file-open.h"
#include "file/file-utils.h"
#include "gimpcairo-wilber.h"
#include "gimpcairo.h"
#include "gimpdevices.h"
#include "gimpdialogfactory.h"
#include "gimpdockwindow.h"
@ -674,38 +674,13 @@ gimp_toolbox_expose_event (GtkWidget *widget,
&header_allocation,
&clip_rect))
{
GtkStyle *style = gtk_widget_get_style (widget);
GtkStateType state = gtk_widget_get_state (widget);
cairo_t *cr;
gint header_height;
gint header_width;
gdouble wilber_width;
gdouble wilber_height;
gdouble factor;
cairo_t *cr;
cr = gdk_cairo_create (gtk_widget_get_window (widget));
gdk_cairo_rectangle (cr, &clip_rect);
cairo_clip (cr);
header_width = header_allocation.width;
header_height = header_allocation.height;
gimp_cairo_wilber_get_size (cr, &wilber_width, &wilber_height);
factor = header_width / wilber_width * 0.9;
cairo_scale (cr, factor, factor);
gimp_cairo_wilber (cr,
(header_width / factor - wilber_width) / 2.0,
(header_height / factor - wilber_height) / 2.0);
cairo_set_source_rgba (cr,
style->fg[state].red / 65535.0,
style->fg[state].green / 65535.0,
style->fg[state].blue / 65535.0,
0.10);
cairo_fill (cr);
gimp_cairo_draw_toolbox_wilber (toolbox->p->header, cr);
cairo_destroy (cr);
}

2
build/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/Makefile
/Makefile.in

2
build/Makefile.am Normal file
View File

@ -0,0 +1,2 @@
SUBDIRS = \
windows

View File

@ -0,0 +1,21 @@
# This is a 'suppressionFile' for buildbot
# We use isn.*t because UTF-8 ' might be interpreted as ASCII...
# Ignore warning from gtk-doc during make
: .*warning: Value descriptions for .* are missing in source code comment block.*
: .*warning: Property .* has no documentation.*
: .*html:.*: warning: no link for: .*
: .*warning: Field descriptions for .* are missing in source code comment block.*
: .*warning: Section .* is not defined in the .* file.*
: .*warning: .* unused declarations.*They should be added to .* in the appropriate place.*
# This will die in GIMP 3.0, don't bother fixing...
: ^gimp-composite-.* warning: function declaration isn.*t a prototype.*
: .*gimpcpuaccel.c:182: warning: dereferencing type-punned pointer will break strict-aliasing rules.*
# Well-known harmless warnings
: .*gtkitemfactory.h:47: warning: function declaration isn.*t a prototype.*
: .*app/core/gimpimagemap.c:.*: warning: implicit declaration of function .*gegl_node_get_pad.*
# who cares
: .*gimp.desktop: warning: value .* contains .* more than once.*

4
build/windows/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
/Makefile
/Makefile.in
/gimp.rc
/gimp-plug-ins.rc

View File

@ -0,0 +1,8 @@
EXTRA_DIST = \
gimprc.rule \
gimprc-plug-ins.rule \
gimp.rc \
gimp-plug-ins.rc \
gimp.manifest \
fileicon.ico \
wilber.ico

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -0,0 +1,66 @@
#include <winver.h>
#define _QUOTE(x) #x
#define QUOTE(x) _QUOTE(x)
#define VER_COMPANYNAME_STR "Spencer Kimball, Peter Mattis and the GIMP Development Team"
#define VER_PRODUCTVERSION @GIMP_MAJOR_VERSION@,@GIMP_MINOR_VERSION@,@GIMP_MICRO_VERSION@,0
#define VER_PRODUCTVERSION_STR "@GIMP_MAJOR_VERSION@.@GIMP_MINOR_VERSION@.@GIMP_MICRO_VERSION@\0"
#define VER_PRODUCTNAME_STR "@GIMP_FULL_NAME@"
#define VER_FILEVERSION @GIMP_MAJOR_VERSION@,@GIMP_MINOR_VERSION@,@GIMP_MICRO_VERSION@,0
#define VER_FILEVERSION_STR "@GIMP_MAJOR_VERSION@.@GIMP_MINOR_VERSION@.@GIMP_MICRO_VERSION@.0\0"
#define VER_FILEDESCRIPTION_STR "@GIMP_FULL_NAME@ Plug-In"
#define VER_INTERNALNAME_STR QUOTE(INTERNALNAME_STR)
#define VER_ORIGINALFILENAME_STR QUOTE(ORIGINALFILENAME_STR)
#define VER_LEGALCOPYRIGHT_STR "Copyright © 1995-2010"
#ifndef DEBUG
#define VER_DEBUG 0
#else
#define VER_DEBUG VS_FF_DEBUG
#endif
#ifndef GIMP_UNSTABLE
#define VER_PRERELEASE 0
#else
#define VER_PRERELEASE VS_FF_PRERELEASE
#endif
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILEVERSION
PRODUCTVERSION VER_PRODUCTVERSION
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS (VER_PRERELEASE|VER_DEBUG)
FILEOS VOS__WINDOWS32
FILETYPE VFT_APP
FILESUBTYPE VFT2_UNKNOWN
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904B0"
BEGIN
VALUE "CompanyName", VER_COMPANYNAME_STR
VALUE "FileDescription", VER_FILEDESCRIPTION_STR
VALUE "FileVersion", VER_FILEVERSION_STR
VALUE "InternalName", VER_INTERNALNAME_STR
VALUE "OriginalFilename", VER_ORIGINALFILENAME_STR
VALUE "ProductName", VER_PRODUCTNAME_STR
VALUE "ProductVersion", VER_PRODUCTVERSION_STR
VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
#include "winuser.h"
1 ICON QUOTE(TOP_SRCDIR) "/build/windows/plug-ins.ico"
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST QUOTE(TOP_SRCDIR) "/build/windows/gimp.manifest"

View File

@ -16,7 +16,7 @@
#define VER_INTERNALNAME_STR QUOTE(INTERNALNAME_STR)
#define VER_ORIGINALFILENAME_STR QUOTE(ORIGINALFILENAME_STR)
#define VER_LEGALCOPYRIGHT_STR "Copyright © 1995-2009"
#define VER_LEGALCOPYRIGHT_STR "Copyright © 1995-2010"
#ifndef DEBUG
#define VER_DEBUG 0
@ -62,6 +62,6 @@ BEGIN
END
#include "winuser.h"
1 ICON "wilber.ico"
2 ICON "fileicon.ico"
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "gimp.manifest"
1 ICON QUOTE(TOP_SRCDIR) "/build/windows/wilber.ico"
2 ICON QUOTE(TOP_SRCDIR) "/build/windows/fileicon.ico"
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST QUOTE(TOP_SRCDIR) "/build/windows/gimp.manifest"

View File

@ -0,0 +1,6 @@
# Version resources for Microsoft Windows
%.rc.o: $(top_srcdir)/build/windows/gimp-plug-ins.rc
$(WINDRES) --define ORIGINALFILENAME_STR="$*$(EXEEXT)" \
--define INTERNALNAME_STR="$*" \
--define TOP_SRCDIR="$(top_srcdir)" \
$< $@

View File

@ -0,0 +1,6 @@
# Version resources for Microsoft Windows
%.rc.o: $(top_srcdir)/build/windows/gimp.rc
$(WINDRES) --define ORIGINALFILENAME_STR="$*$(EXEEXT)" \
--define INTERNALNAME_STR="$*" \
--define TOP_SRCDIR="$(top_srcdir)" \
$< $@

BIN
build/windows/plug-ins.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View File

@ -46,6 +46,7 @@ m4_define([glib_required_version], [2.24.0])
m4_define([gtk_required_version], [2.20.0])
m4_define([gdk_pixbuf_required_version], [gtk_required_version])
m4_define([cairo_required_version], [1.8.0])
m4_define([cairo_pdf_required_version], [1.8.0])
m4_define([pangocairo_required_version], [1.20.1])
m4_define([fontconfig_required_version], [2.2.0])
m4_define([gtkdoc_required_version], [1.0])
@ -1317,7 +1318,7 @@ have_poppler=no
if test "x$with_poppler" != xno; then
PKG_CHECK_MODULES(POPPLER,
poppler-glib >= poppler_required_version gthread-2.0,
FILE_PDF='file-pdf$(EXEEXT)'
FILE_PDF_LOAD='file-pdf-load$(EXEEXT)'
AC_DEFINE(HAVE_POPPLER, 1, [Define to 1 if libpoppler is available])
have_poppler=yes,
have_poppler="Using PostScript plug-in (libpoppler not found)")
@ -1325,7 +1326,30 @@ else
have_poppler="Using PostScript plug-in (libpoppler support disabled)"
fi
AC_SUBST(FILE_PDF)
AC_SUBST(FILE_PDF_LOAD)
#####################
# Check for cairo-pdf
#####################
AC_ARG_WITH(cairo_pdf,[ --without-cairo-pdf build without cairo-pdf support])
have_cairo_pdf=no
if test "x$with_cairo_pdf" != xno; then
have_cairo_pdf=yes
PKG_CHECK_MODULES(CAIRO_PDF, cairo-pdf >= cairo_pdf_required_version,
FILE_PDF_SAVE='file-pdf-save$(EXEEXT)',
have_cairo_pdf="no (cairo-pdf not found)")
else
have_cairo_pdf="no (cairo-pdf support disabled)"
fi
AC_SUBST(FILE_PDF_SAVE)
## If both poppler and cairo-pdf are enabled then we have complete PDF support
if test "x$have_cairo_pdf" = xyes && test "x$have_poppler" = xyes; then
MIME_TYPES="$MIME_TYPES;application/pdf"
fi
################################
@ -2017,7 +2041,6 @@ libgimpmath/Makefile
libgimpmodule/Makefile
libgimpthumb/Makefile
libgimpwidgets/Makefile
app/gimp.rc
app/Makefile
app/actions/Makefile
app/base/Makefile
@ -2049,6 +2072,10 @@ app/tests/gimpdir/Makefile
app/tests/gimpdir/brushes/Makefile
app/tests/gimpdir/gradients/Makefile
app/tests/gimpdir/patterns/Makefile
build/Makefile
build/windows/Makefile
build/windows/gimp.rc
build/windows/gimp-plug-ins.rc
plug-ins/Makefile
plug-ins/color-rotate/Makefile
plug-ins/color-rotate/images/Makefile
@ -2192,7 +2219,8 @@ Optional Plug-Ins:
JPEG: $jpeg_ok
JPEG 2000: $have_jp2
MNG: $have_libmng
PDF: $have_poppler
PDF (import): $have_poppler
PDF (export): $have_cairo_pdf
PNG: $have_libpng
Print: $enable_print
PSP: $have_zlib

View File

@ -330,6 +330,7 @@ EXPORTS
gimp_image_get_floating_sel
gimp_image_get_guide_orientation
gimp_image_get_guide_position
gimp_image_get_item_position
gimp_image_get_layer_by_tattoo
gimp_image_get_layer_position
gimp_image_get_layers
@ -358,6 +359,8 @@ EXPORTS
gimp_image_is_valid
gimp_image_list
gimp_image_lower_channel
gimp_image_lower_item
gimp_image_lower_item_to_bottom
gimp_image_lower_layer
gimp_image_lower_layer_to_bottom
gimp_image_lower_vectors
@ -372,6 +375,8 @@ EXPORTS
gimp_image_pick_color
gimp_image_pick_correlate_layer
gimp_image_raise_channel
gimp_image_raise_item
gimp_image_raise_item_to_top
gimp_image_raise_layer
gimp_image_raise_layer_to_top
gimp_image_raise_vectors
@ -379,6 +384,7 @@ EXPORTS
gimp_image_remove_channel
gimp_image_remove_layer
gimp_image_remove_vectors
gimp_image_reorder_item
gimp_image_resize
gimp_image_resize_to_layers
gimp_image_rotate
@ -409,14 +415,17 @@ EXPORTS
gimp_install_temp_proc
gimp_invert
gimp_item_delete
gimp_item_get_children
gimp_item_get_image
gimp_item_get_linked
gimp_item_get_lock_content
gimp_item_get_name
gimp_item_get_parent
gimp_item_get_tattoo
gimp_item_get_visible
gimp_item_is_channel
gimp_item_is_drawable
gimp_item_is_group
gimp_item_is_layer
gimp_item_is_layer_mask
gimp_item_is_selection

View File

@ -1042,180 +1042,6 @@ gimp_image_remove_layer (gint32 image_ID,
return success;
}
/**
* gimp_image_get_layer_position:
* @image_ID: The image.
* @layer_ID: The layer.
*
* Returns the position of the layer in the layer stack.
*
* This procedure determines the position of the specified layer in the
* images layer stack. If the layer doesn't exist in the image, an
* error is returned.
*
* Returns: The position of the layer in the layer stack.
*
* Since: GIMP 2.4
*/
gint
gimp_image_get_layer_position (gint32 image_ID,
gint32 layer_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gint position = 0;
return_vals = gimp_run_procedure ("gimp-image-get-layer-position",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_LAYER, layer_ID,
GIMP_PDB_END);
if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
position = return_vals[1].data.d_int32;
gimp_destroy_params (return_vals, nreturn_vals);
return position;
}
/**
* gimp_image_raise_layer:
* @image_ID: The image.
* @layer_ID: The layer to raise.
*
* Raise the specified layer in the image's layer stack
*
* This procedure raises the specified layer one step in the existing
* layer stack. The procecure call will fail if there is no layer above
* it.
*
* Returns: TRUE on success.
*/
gboolean
gimp_image_raise_layer (gint32 image_ID,
gint32 layer_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean success = TRUE;
return_vals = gimp_run_procedure ("gimp-image-raise-layer",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_LAYER, layer_ID,
GIMP_PDB_END);
success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
gimp_destroy_params (return_vals, nreturn_vals);
return success;
}
/**
* gimp_image_lower_layer:
* @image_ID: The image.
* @layer_ID: The layer to lower.
*
* Lower the specified layer in the image's layer stack
*
* This procedure lowers the specified layer one step in the existing
* layer stack. The procecure call will fail if there is no layer below
* it.
*
* Returns: TRUE on success.
*/
gboolean
gimp_image_lower_layer (gint32 image_ID,
gint32 layer_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean success = TRUE;
return_vals = gimp_run_procedure ("gimp-image-lower-layer",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_LAYER, layer_ID,
GIMP_PDB_END);
success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
gimp_destroy_params (return_vals, nreturn_vals);
return success;
}
/**
* gimp_image_raise_layer_to_top:
* @image_ID: The image.
* @layer_ID: The layer to raise to top.
*
* Raise the specified layer in the image's layer stack to top of stack
*
* This procedure raises the specified layer to top of the existing
* layer stack. It will not move the layer if there is no layer above
* it.
*
* Returns: TRUE on success.
*/
gboolean
gimp_image_raise_layer_to_top (gint32 image_ID,
gint32 layer_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean success = TRUE;
return_vals = gimp_run_procedure ("gimp-image-raise-layer-to-top",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_LAYER, layer_ID,
GIMP_PDB_END);
success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
gimp_destroy_params (return_vals, nreturn_vals);
return success;
}
/**
* gimp_image_lower_layer_to_bottom:
* @image_ID: The image.
* @layer_ID: The layer to lower to bottom.
*
* Lower the specified layer in the image's layer stack to bottom of
* stack
*
* This procedure lowers the specified layer to bottom of the existing
* layer stack. It will not move the layer if there is no layer below
* it.
*
* Returns: TRUE on success.
*/
gboolean
gimp_image_lower_layer_to_bottom (gint32 image_ID,
gint32 layer_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean success = TRUE;
return_vals = gimp_run_procedure ("gimp-image-lower-layer-to-bottom",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_LAYER, layer_ID,
GIMP_PDB_END);
success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
gimp_destroy_params (return_vals, nreturn_vals);
return success;
}
/**
* gimp_image_add_channel:
* @image_ID: The image.
@ -1287,111 +1113,6 @@ gimp_image_remove_channel (gint32 image_ID,
return success;
}
/**
* gimp_image_get_channel_position:
* @image_ID: The image.
* @channel_ID: The channel.
*
* Returns the position of the channel in the channel stack.
*
* This procedure determines the position of the specified channel in
* the images channel stack. If the channel doesn't exist in the image,
* an error is returned.
*
* Returns: The position of the channel in the channel stack.
*
* Since: GIMP 2.4
*/
gint
gimp_image_get_channel_position (gint32 image_ID,
gint32 channel_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gint position = 0;
return_vals = gimp_run_procedure ("gimp-image-get-channel-position",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_CHANNEL, channel_ID,
GIMP_PDB_END);
if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
position = return_vals[1].data.d_int32;
gimp_destroy_params (return_vals, nreturn_vals);
return position;
}
/**
* gimp_image_raise_channel:
* @image_ID: The image.
* @channel_ID: The channel to raise.
*
* Raise the specified channel in the image's channel stack
*
* This procedure raises the specified channel one step in the existing
* channel stack. The procecure call will fail if there is no channel
* above it.
*
* Returns: TRUE on success.
*/
gboolean
gimp_image_raise_channel (gint32 image_ID,
gint32 channel_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean success = TRUE;
return_vals = gimp_run_procedure ("gimp-image-raise-channel",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_CHANNEL, channel_ID,
GIMP_PDB_END);
success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
gimp_destroy_params (return_vals, nreturn_vals);
return success;
}
/**
* gimp_image_lower_channel:
* @image_ID: The image.
* @channel_ID: The channel to lower.
*
* Lower the specified channel in the image's channel stack
*
* This procedure lowers the specified channel one step in the existing
* channel stack. The procecure call will fail if there is no channel
* below it.
*
* Returns: TRUE on success.
*/
gboolean
gimp_image_lower_channel (gint32 image_ID,
gint32 channel_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean success = TRUE;
return_vals = gimp_run_procedure ("gimp-image-lower-channel",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_CHANNEL, channel_ID,
GIMP_PDB_END);
success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
gimp_destroy_params (return_vals, nreturn_vals);
return success;
}
/**
* gimp_image_add_vectors:
* @image_ID: The image.
@ -1464,17 +1185,477 @@ gimp_image_remove_vectors (gint32 image_ID,
return success;
}
/**
* gimp_image_get_item_position:
* @image_ID: The image.
* @item_ID: The item.
*
* Returns the position of the item in its level of its item tree.
*
* This procedure determines the position of the specified item in its
* level in its item tree in the image. If the item doesn't exist in
* the image, or the item is not part of an item tree, an error is
* returned.
*
* Returns: The position of the item in its level in the item tree.
*
* Since: GIMP 2.8
*/
gint
gimp_image_get_item_position (gint32 image_ID,
gint32 item_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gint position = 0;
return_vals = gimp_run_procedure ("gimp-image-get-item-position",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_ITEM, item_ID,
GIMP_PDB_END);
if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
position = return_vals[1].data.d_int32;
gimp_destroy_params (return_vals, nreturn_vals);
return position;
}
/**
* gimp_image_raise_item:
* @image_ID: The image.
* @item_ID: The item to raise.
*
* Raise the specified item in its level in its item tree
*
* This procedure raises the specified item one step in the item tree.
* The procecure call will fail if there is no item above it.
*
* Returns: TRUE on success.
*
* Since: GIMP 2.8
*/
gboolean
gimp_image_raise_item (gint32 image_ID,
gint32 item_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean success = TRUE;
return_vals = gimp_run_procedure ("gimp-image-raise-item",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_ITEM, item_ID,
GIMP_PDB_END);
success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
gimp_destroy_params (return_vals, nreturn_vals);
return success;
}
/**
* gimp_image_lower_item:
* @image_ID: The image.
* @item_ID: The item to lower.
*
* Lower the specified item in its level in its item tree
*
* This procedure lowers the specified item one step in the item tree.
* The procecure call will fail if there is no item below it.
*
* Returns: TRUE on success.
*
* Since: GIMP 2.8
*/
gboolean
gimp_image_lower_item (gint32 image_ID,
gint32 item_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean success = TRUE;
return_vals = gimp_run_procedure ("gimp-image-lower-item",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_ITEM, item_ID,
GIMP_PDB_END);
success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
gimp_destroy_params (return_vals, nreturn_vals);
return success;
}
/**
* gimp_image_raise_item_to_top:
* @image_ID: The image.
* @item_ID: The item to raise to top.
*
* Raise the specified item to the top of its level in its item tree
*
* This procedure raises the specified item to top of its level in the
* item tree. It will not move the item if there is no item above it.
*
* Returns: TRUE on success.
*
* Since: GIMP 2.8
*/
gboolean
gimp_image_raise_item_to_top (gint32 image_ID,
gint32 item_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean success = TRUE;
return_vals = gimp_run_procedure ("gimp-image-raise-item-to-top",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_ITEM, item_ID,
GIMP_PDB_END);
success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
gimp_destroy_params (return_vals, nreturn_vals);
return success;
}
/**
* gimp_image_lower_item_to_bottom:
* @image_ID: The image.
* @item_ID: The item to lower to bottom.
*
* Lower the specified item to the bottom of its level in its item tree
*
* This procedure lowers the specified item to bottom of its level in
* the item tree. It will not move the layer if there is no layer below
* it.
*
* Returns: TRUE on success.
*
* Since: GIMP 2.8
*/
gboolean
gimp_image_lower_item_to_bottom (gint32 image_ID,
gint32 item_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean success = TRUE;
return_vals = gimp_run_procedure ("gimp-image-lower-item-to-bottom",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_ITEM, item_ID,
GIMP_PDB_END);
success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
gimp_destroy_params (return_vals, nreturn_vals);
return success;
}
/**
* gimp_image_reorder_item:
* @image_ID: The image.
* @item_ID: The item to reorder.
* @parent_ID: The new parent item.
* @position: The new position of the item.
*
* Reorder the specified item within its item tree
*
* This procedure reorders the specified item within its item tree.
*
* Returns: TRUE on success.
*
* Since: GIMP 2.8
*/
gboolean
gimp_image_reorder_item (gint32 image_ID,
gint32 item_ID,
gint32 parent_ID,
gint position)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean success = TRUE;
return_vals = gimp_run_procedure ("gimp-image-reorder-item",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_ITEM, item_ID,
GIMP_PDB_ITEM, parent_ID,
GIMP_PDB_INT32, position,
GIMP_PDB_END);
success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
gimp_destroy_params (return_vals, nreturn_vals);
return success;
}
/**
* gimp_image_get_layer_position:
* @image_ID: The image.
* @layer_ID: The layer.
*
* Deprecated: Use gimp_image_get_item_position() instead.
*
* Returns: The position of the layer in the layer stack.
*
* Since: GIMP 2.4
*/
gint
gimp_image_get_layer_position (gint32 image_ID,
gint32 layer_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gint position = 0;
return_vals = gimp_run_procedure ("gimp-image-get-layer-position",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_LAYER, layer_ID,
GIMP_PDB_END);
if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
position = return_vals[1].data.d_int32;
gimp_destroy_params (return_vals, nreturn_vals);
return position;
}
/**
* gimp_image_raise_layer:
* @image_ID: The image.
* @layer_ID: The layer to raise.
*
* Deprecated: Use gimp_image_raise_item() instead.
*
* Returns: TRUE on success.
*/
gboolean
gimp_image_raise_layer (gint32 image_ID,
gint32 layer_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean success = TRUE;
return_vals = gimp_run_procedure ("gimp-image-raise-layer",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_LAYER, layer_ID,
GIMP_PDB_END);
success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
gimp_destroy_params (return_vals, nreturn_vals);
return success;
}
/**
* gimp_image_lower_layer:
* @image_ID: The image.
* @layer_ID: The layer to lower.
*
* Deprecated: Use gimp_image_lower_item() instead.
*
* Returns: TRUE on success.
*/
gboolean
gimp_image_lower_layer (gint32 image_ID,
gint32 layer_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean success = TRUE;
return_vals = gimp_run_procedure ("gimp-image-lower-layer",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_LAYER, layer_ID,
GIMP_PDB_END);
success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
gimp_destroy_params (return_vals, nreturn_vals);
return success;
}
/**
* gimp_image_raise_layer_to_top:
* @image_ID: The image.
* @layer_ID: The layer to raise to top.
*
* Deprecated: Use gimp_image_raise_item_to_top() instead.
*
* Returns: TRUE on success.
*/
gboolean
gimp_image_raise_layer_to_top (gint32 image_ID,
gint32 layer_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean success = TRUE;
return_vals = gimp_run_procedure ("gimp-image-raise-layer-to-top",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_LAYER, layer_ID,
GIMP_PDB_END);
success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
gimp_destroy_params (return_vals, nreturn_vals);
return success;
}
/**
* gimp_image_lower_layer_to_bottom:
* @image_ID: The image.
* @layer_ID: The layer to lower to bottom.
*
* Deprecated: Use gimp_image_lower_item_to_bottom() instead.
*
* Returns: TRUE on success.
*/
gboolean
gimp_image_lower_layer_to_bottom (gint32 image_ID,
gint32 layer_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean success = TRUE;
return_vals = gimp_run_procedure ("gimp-image-lower-layer-to-bottom",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_LAYER, layer_ID,
GIMP_PDB_END);
success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
gimp_destroy_params (return_vals, nreturn_vals);
return success;
}
/**
* gimp_image_get_channel_position:
* @image_ID: The image.
* @channel_ID: The channel.
*
* Deprecated: Use gimp_image_get_item_position() instead.
*
* Returns: The position of the channel in the channel stack.
*
* Since: GIMP 2.4
*/
gint
gimp_image_get_channel_position (gint32 image_ID,
gint32 channel_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gint position = 0;
return_vals = gimp_run_procedure ("gimp-image-get-channel-position",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_CHANNEL, channel_ID,
GIMP_PDB_END);
if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
position = return_vals[1].data.d_int32;
gimp_destroy_params (return_vals, nreturn_vals);
return position;
}
/**
* gimp_image_raise_channel:
* @image_ID: The image.
* @channel_ID: The channel to raise.
*
* Deprecated: Use gimp_image_raise_item() instead.
*
* Returns: TRUE on success.
*/
gboolean
gimp_image_raise_channel (gint32 image_ID,
gint32 channel_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean success = TRUE;
return_vals = gimp_run_procedure ("gimp-image-raise-channel",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_CHANNEL, channel_ID,
GIMP_PDB_END);
success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
gimp_destroy_params (return_vals, nreturn_vals);
return success;
}
/**
* gimp_image_lower_channel:
* @image_ID: The image.
* @channel_ID: The channel to lower.
*
* Deprecated: Use gimp_image_lower_item() instead.
*
* Returns: TRUE on success.
*/
gboolean
gimp_image_lower_channel (gint32 image_ID,
gint32 channel_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean success = TRUE;
return_vals = gimp_run_procedure ("gimp-image-lower-channel",
&nreturn_vals,
GIMP_PDB_IMAGE, image_ID,
GIMP_PDB_CHANNEL, channel_ID,
GIMP_PDB_END);
success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
gimp_destroy_params (return_vals, nreturn_vals);
return success;
}
/**
* gimp_image_get_vectors_position:
* @image_ID: The image.
* @vectors_ID: The vectors object.
*
* Returns the position of the vectors object in the vectors objects
* stack.
*
* This procedure determines the position of the specified vectors
* object in the images vectors object stack. If the vectors object
* doesn't exist in the image, an error is returned.
* Deprecated: Use gimp_image_get_item_position() instead.
*
* Returns: The position of the vectors object in the vectors stack.
*
@ -1507,11 +1688,7 @@ gimp_image_get_vectors_position (gint32 image_ID,
* @image_ID: The image.
* @vectors_ID: The vectors object to raise.
*
* Raise the specified vectors in the image's vectors stack
*
* This procedure raises the specified vectors one step in the existing
* vectors stack. The procecure call will fail if there is no vectors
* above it.
* Deprecated: Use gimp_image_raise_item() instead.
*
* Returns: TRUE on success.
*
@ -1543,11 +1720,7 @@ gimp_image_raise_vectors (gint32 image_ID,
* @image_ID: The image.
* @vectors_ID: The vectors object to lower.
*
* Lower the specified vectors in the image's vectors stack
*
* This procedure lowers the specified vectors one step in the existing
* vectors stack. The procecure call will fail if there is no vectors
* below it.
* Deprecated: Use gimp_image_lower_item() instead.
*
* Returns: TRUE on success.
*
@ -1579,12 +1752,7 @@ gimp_image_lower_vectors (gint32 image_ID,
* @image_ID: The image.
* @vectors_ID: The vectors object to raise to top.
*
* Raise the specified vectors in the image's vectors stack to top of
* stack
*
* This procedure raises the specified vectors to top of the existing
* vectors stack. It will not move the vectors if there is no vectors
* above it.
* Deprecated: Use gimp_image_raise_item_to_top() instead.
*
* Returns: TRUE on success.
*
@ -1616,12 +1784,7 @@ gimp_image_raise_vectors_to_top (gint32 image_ID,
* @image_ID: The image.
* @vectors_ID: The vectors object to lower to bottom.
*
* Lower the specified vectors in the image's vectors stack to bottom
* of stack
*
* This procedure lowers the specified vectors to bottom of the
* existing vectors stack. It will not move the vectors if there is no
* vectors below it.
* Deprecated: Use gimp_image_lower_item_to_bottom() instead.
*
* Returns: TRUE on success.
*

View File

@ -89,6 +89,31 @@ gboolean gimp_image_add_layer (gint32
gint position);
gboolean gimp_image_remove_layer (gint32 image_ID,
gint32 layer_ID);
gboolean gimp_image_add_channel (gint32 image_ID,
gint32 channel_ID,
gint position);
gboolean gimp_image_remove_channel (gint32 image_ID,
gint32 channel_ID);
gboolean gimp_image_add_vectors (gint32 image_ID,
gint32 vectors_ID,
gint position);
gboolean gimp_image_remove_vectors (gint32 image_ID,
gint32 vectors_ID);
gint gimp_image_get_item_position (gint32 image_ID,
gint32 item_ID);
gboolean gimp_image_raise_item (gint32 image_ID,
gint32 item_ID);
gboolean gimp_image_lower_item (gint32 image_ID,
gint32 item_ID);
gboolean gimp_image_raise_item_to_top (gint32 image_ID,
gint32 item_ID);
gboolean gimp_image_lower_item_to_bottom (gint32 image_ID,
gint32 item_ID);
gboolean gimp_image_reorder_item (gint32 image_ID,
gint32 item_ID,
gint32 parent_ID,
gint position);
#ifndef GIMP_DISABLE_DEPRECATED
gint gimp_image_get_layer_position (gint32 image_ID,
gint32 layer_ID);
gboolean gimp_image_raise_layer (gint32 image_ID,
@ -99,22 +124,12 @@ gboolean gimp_image_raise_layer_to_top (gint32
gint32 layer_ID);
gboolean gimp_image_lower_layer_to_bottom (gint32 image_ID,
gint32 layer_ID);
gboolean gimp_image_add_channel (gint32 image_ID,
gint32 channel_ID,
gint position);
gboolean gimp_image_remove_channel (gint32 image_ID,
gint32 channel_ID);
gint gimp_image_get_channel_position (gint32 image_ID,
gint32 channel_ID);
gboolean gimp_image_raise_channel (gint32 image_ID,
gint32 channel_ID);
gboolean gimp_image_lower_channel (gint32 image_ID,
gint32 channel_ID);
gboolean gimp_image_add_vectors (gint32 image_ID,
gint32 vectors_ID,
gint position);
gboolean gimp_image_remove_vectors (gint32 image_ID,
gint32 vectors_ID);
gint gimp_image_get_vectors_position (gint32 image_ID,
gint32 vectors_ID);
gboolean gimp_image_raise_vectors (gint32 image_ID,
@ -125,6 +140,7 @@ gboolean gimp_image_raise_vectors_to_top (gint32
gint32 vectors_ID);
gboolean gimp_image_lower_vectors_to_bottom (gint32 image_ID,
gint32 vectors_ID);
#endif /* GIMP_DISABLE_DEPRECATED */
gint32 gimp_image_flatten (gint32 image_ID);
gint32 gimp_image_merge_visible_layers (gint32 image_ID,
GimpMergeType merge_type);

View File

@ -22,6 +22,8 @@
#include "config.h"
#include <string.h>
#include "gimp.h"
@ -326,6 +328,114 @@ gimp_item_is_vectors (gint32 item_ID)
return vectors;
}
/**
* gimp_item_is_group:
* @item_ID: The item.
*
* Returns whether the item is a group item.
*
* This procedure returns TRUE if the specified item is a group item
* which can have children.
*
* Returns: TRUE if the item is a group, FALSE otherwise.
*
* Since: GIMP 2.8
*/
gboolean
gimp_item_is_group (gint32 item_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean group = FALSE;
return_vals = gimp_run_procedure ("gimp-item-is-group",
&nreturn_vals,
GIMP_PDB_ITEM, item_ID,
GIMP_PDB_END);
if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
group = return_vals[1].data.d_int32;
gimp_destroy_params (return_vals, nreturn_vals);
return group;
}
/**
* gimp_item_get_parent:
* @item_ID: The item.
*
* Returns the item's parent item.
*
* This procedure returns the item's parent item, if any.
*
* Returns: The item's parent item.
*
* Since: GIMP 2.8
*/
gint32
gimp_item_get_parent (gint32 item_ID)
{
GimpParam *return_vals;
gint nreturn_vals;
gint32 parent_ID = -1;
return_vals = gimp_run_procedure ("gimp-item-get-parent",
&nreturn_vals,
GIMP_PDB_ITEM, item_ID,
GIMP_PDB_END);
if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
parent_ID = return_vals[1].data.d_item;
gimp_destroy_params (return_vals, nreturn_vals);
return parent_ID;
}
/**
* gimp_item_get_children:
* @item_ID: The item.
* @num_children: The item's number of children.
*
* Returns the item's list of children.
*
* This procedure returns the list of items which are children of the
* specified item. The order is topmost to bottommost.
*
* Returns: The item's list of children.
*
* Since: GIMP 2.8
*/
gint *
gimp_item_get_children (gint32 item_ID,
gint *num_children)
{
GimpParam *return_vals;
gint nreturn_vals;
gint *child_ids = NULL;
return_vals = gimp_run_procedure ("gimp-item-get-children",
&nreturn_vals,
GIMP_PDB_ITEM, item_ID,
GIMP_PDB_END);
*num_children = 0;
if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
{
*num_children = return_vals[1].data.d_int32;
child_ids = g_new (gint32, *num_children);
memcpy (child_ids,
return_vals[2].data.d_int32array,
*num_children * sizeof (gint32));
}
gimp_destroy_params (return_vals, nreturn_vals);
return child_ids;
}
/**
* gimp_item_get_name:
* @item_ID: The item.

View File

@ -37,6 +37,10 @@ gboolean gimp_item_is_channel (gint32 item_ID);
gboolean gimp_item_is_layer_mask (gint32 item_ID);
gboolean gimp_item_is_selection (gint32 item_ID);
gboolean gimp_item_is_vectors (gint32 item_ID);
gboolean gimp_item_is_group (gint32 item_ID);
gint32 gimp_item_get_parent (gint32 item_ID);
gint* gimp_item_get_children (gint32 item_ID,
gint *num_children);
gchar* gimp_item_get_name (gint32 item_ID);
gboolean gimp_item_set_name (gint32 item_ID,
const gchar *name);

View File

@ -102,12 +102,12 @@ main (void)
if (failures)
{
g_print ("%d out of %d samples failed!\n\n",
failures, G_N_ELEMENTS (samples));
failures, (int)G_N_ELEMENTS (samples));
return EXIT_FAILURE;
}
else
{
g_print ("All %d samples passed.\n\n", G_N_ELEMENTS (samples));
g_print ("All %d samples passed.\n\n", (int)G_N_ELEMENTS (samples));
return EXIT_SUCCESS;
}
}

View File

@ -55,7 +55,9 @@ if GIMP_UNSTABLE
DEBUG_MENU_PARAMS = --stringparam debug-menu yes
endif
%.xml: %.xml.in $(top_srcdir)/configure.ac $(srcdir)/menus.xsl dialogs-menuitems.xml
SUFFIXES = .xml.in .xml
.xml.in.xml: $(top_srcdir)/configure.ac $(srcdir)/menus.xsl dialogs-menuitems.xml
if HAVE_XSLTPROC
$(XSLTPROC) --xinclude $(DEBUG_MENU_PARAMS) $(srcdir)/menus.xsl $< > $(@) || rm -f $(@)
else

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
color_rotate_RC = color-rotate.rc.o
endif
AM_LDFLAGS = $(mwindows)
SUBDIRS = images
@ -49,4 +54,5 @@ LDADD = \
$(libgimpbase) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(color_rotate_RC)

View File

@ -130,8 +130,10 @@
/file-pat.exe
/file-pcx
/file-pcx.exe
/file-pdf
/file-pdf.exe
/file-pdf-load
/file-pdf-load.exe
/file-pdf-save
/file-pdf-save.exe
/file-pix
/file-pix.exe
/file-png

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
/* GIMP - The GNU Image Manipulation Program
*
* file-pdf.c - PDF file loader
* file-pdf-load.c - PDF file loader
*
* Copyright (C) 2005 Nathan Summers
*
@ -34,7 +34,7 @@
#define LOAD_PROC "file-pdf-load"
#define LOAD_THUMB_PROC "file-pdf-load-thumb"
#define PLUG_IN_BINARY "file-pdf"
#define PLUG_IN_BINARY "file-pdf-load"
#define THUMBNAIL_SIZE 128

1477
plug-ins/common/file-pdf-save.c Executable file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,145 @@
alien_map_RC = alien-map.rc.o
align_layers_RC = align-layers.rc.o
animation_optimize_RC = animation-optimize.rc.o
animation_play_RC = animation-play.rc.o
antialias_RC = antialias.rc.o
apply_canvas_RC = apply-canvas.rc.o
blinds_RC = blinds.rc.o
blur_RC = blur.rc.o
blur_gauss_RC = blur-gauss.rc.o
blur_gauss_selective_RC = blur-gauss-selective.rc.o
blur_motion_RC = blur-motion.rc.o
border_average_RC = border-average.rc.o
bump_map_RC = bump-map.rc.o
cartoon_RC = cartoon.rc.o
channel_mixer_RC = channel-mixer.rc.o
checkerboard_RC = checkerboard.rc.o
cml_explorer_RC = cml-explorer.rc.o
color_cube_analyze_RC = color-cube-analyze.rc.o
color_enhance_RC = color-enhance.rc.o
color_exchange_RC = color-exchange.rc.o
color_to_alpha_RC = color-to-alpha.rc.o
colorify_RC = colorify.rc.o
colormap_remap_RC = colormap-remap.rc.o
compose_RC = compose.rc.o
contrast_normalize_RC = contrast-normalize.rc.o
contrast_retinex_RC = contrast-retinex.rc.o
contrast_stretch_RC = contrast-stretch.rc.o
contrast_stretch_hsv_RC = contrast-stretch-hsv.rc.o
convolution_matrix_RC = convolution-matrix.rc.o
crop_auto_RC = crop-auto.rc.o
crop_zealous_RC = crop-zealous.rc.o
cubism_RC = cubism.rc.o
curve_bend_RC = curve-bend.rc.o
decompose_RC = decompose.rc.o
deinterlace_RC = deinterlace.rc.o
depth_merge_RC = depth-merge.rc.o
despeckle_RC = despeckle.rc.o
destripe_RC = destripe.rc.o
diffraction_RC = diffraction.rc.o
displace_RC = displace.rc.o
edge_RC = edge.rc.o
edge_dog_RC = edge-dog.rc.o
edge_laplace_RC = edge-laplace.rc.o
edge_neon_RC = edge-neon.rc.o
edge_sobel_RC = edge-sobel.rc.o
emboss_RC = emboss.rc.o
engrave_RC = engrave.rc.o
file_aa_RC = file-aa.rc.o
file_cel_RC = file-cel.rc.o
file_compressor_RC = file-compressor.rc.o
file_csource_RC = file-csource.rc.o
file_desktop_link_RC = file-desktop-link.rc.o
file_dicom_RC = file-dicom.rc.o
file_gbr_RC = file-gbr.rc.o
file_gif_load_RC = file-gif-load.rc.o
file_gif_save_RC = file-gif-save.rc.o
file_gih_RC = file-gih.rc.o
file_glob_RC = file-glob.rc.o
file_header_RC = file-header.rc.o
file_html_table_RC = file-html-table.rc.o
file_jp2_load_RC = file-jp2-load.rc.o
file_mng_RC = file-mng.rc.o
file_pat_RC = file-pat.rc.o
file_pcx_RC = file-pcx.rc.o
file_pdf_load_RC = file-pdf-load.rc.o
file_pdf_save_RC = file-pdf-save.rc.o
file_pix_RC = file-pix.rc.o
file_png_RC = file-png.rc.o
file_pnm_RC = file-pnm.rc.o
file_ps_RC = file-ps.rc.o
file_psp_RC = file-psp.rc.o
file_raw_RC = file-raw.rc.o
file_sunras_RC = file-sunras.rc.o
file_svg_RC = file-svg.rc.o
file_tga_RC = file-tga.rc.o
file_tiff_load_RC = file-tiff-load.rc.o
file_tiff_save_RC = file-tiff-save.rc.o
file_wmf_RC = file-wmf.rc.o
file_xbm_RC = file-xbm.rc.o
file_xmc_RC = file-xmc.rc.o
file_xpm_RC = file-xpm.rc.o
file_xwd_RC = file-xwd.rc.o
film_RC = film.rc.o
filter_pack_RC = filter-pack.rc.o
fractal_trace_RC = fractal-trace.rc.o
gradient_map_RC = gradient-map.rc.o
grid_RC = grid.rc.o
guillotine_RC = guillotine.rc.o
hot_RC = hot.rc.o
illusion_RC = illusion.rc.o
iwarp_RC = iwarp.rc.o
jigsaw_RC = jigsaw.rc.o
lcms_RC = lcms.rc.o
lens_apply_RC = lens-apply.rc.o
lens_distortion_RC = lens-distortion.rc.o
lens_flare_RC = lens-flare.rc.o
mail_RC = mail.rc.o
max_rgb_RC = max-rgb.rc.o
mosaic_RC = mosaic.rc.o
newsprint_RC = newsprint.rc.o
nl_filter_RC = nl-filter.rc.o
noise_hsv_RC = noise-hsv.rc.o
noise_randomize_RC = noise-randomize.rc.o
noise_rgb_RC = noise-rgb.rc.o
noise_solid_RC = noise-solid.rc.o
noise_spread_RC = noise-spread.rc.o
nova_RC = nova.rc.o
oilify_RC = oilify.rc.o
photocopy_RC = photocopy.rc.o
pixelize_RC = pixelize.rc.o
plasma_RC = plasma.rc.o
plugin_browser_RC = plugin-browser.rc.o
polar_coords_RC = polar-coords.rc.o
procedure_browser_RC = procedure-browser.rc.o
qbist_RC = qbist.rc.o
red_eye_removal_RC = red-eye-removal.rc.o
ripple_RC = ripple.rc.o
rotate_RC = rotate.rc.o
sample_colorize_RC = sample-colorize.rc.o
screenshot_RC = screenshot.rc.o
semi_flatten_RC = semi-flatten.rc.o
sharpen_RC = sharpen.rc.o
shift_RC = shift.rc.o
sinus_RC = sinus.rc.o
smooth_palette_RC = smooth-palette.rc.o
softglow_RC = softglow.rc.o
sparkle_RC = sparkle.rc.o
sphere_designer_RC = sphere-designer.rc.o
threshold_alpha_RC = threshold-alpha.rc.o
tile_RC = tile.rc.o
tile_glass_RC = tile-glass.rc.o
tile_paper_RC = tile-paper.rc.o
tile_seamless_RC = tile-seamless.rc.o
tile_small_RC = tile-small.rc.o
unit_editor_RC = unit-editor.rc.o
unsharp_mask_RC = unsharp-mask.rc.o
value_invert_RC = value-invert.rc.o
value_propagate_RC = value-propagate.rc.o
van_gogh_lic_RC = van-gogh-lic.rc.o
video_RC = video.rc.o
warp_RC = warp.rc.o
waves_RC = waves.rc.o
web_browser_RC = web-browser.rc.o
whirl_pinch_RC = whirl-pinch.rc.o
wind_RC = wind.rc.o

View File

@ -8,11 +8,15 @@ require 'util.pl';
*FILE_EXT = \$Gimp::CodeGen::util::FILE_EXT;
$ignorefile = ".gitignore";
$rcfile = "gimprc.common";
$outmk = "Makefile.am$FILE_EXT";
$outignore = "$ignorefile$FILE_EXT";
$outrc = "$rcfile$FILE_EXT";
open MK, "> $outmk";
open IGNORE, "> $outignore";
open RC, "> $outrc";
require 'plugin-defs.pl';
@ -57,6 +61,11 @@ else
libm = -lm
endif
if HAVE_WINDRES
include \$(top_srcdir)/build/windows/gimprc-plug-ins.rule
include $rcfile
endif
libgimp = \$(top_builddir)/libgimp/libgimp-\$(GIMP_API_VERSION).la
libgimpbase = \$(top_builddir)/libgimpbase/libgimpbase-\$(GIMP_API_VERSION).la
libgimpcolor = \$(top_builddir)/libgimpcolor/libgimpcolor-\$(GIMP_API_VERSION).la
@ -73,7 +82,8 @@ libexecdir = \$(gimpplugindir)/plug-ins
EXTRA_DIST = \\
mkgen.pl \\
plugin-defs.pl$extra
plugin-defs.pl$extra \\
$rcfile
INCLUDES = \\
-I\$(top_srcdir) \\
@ -160,6 +170,8 @@ EOT
}
}
my $rclib = "\$(${makename}_RC)";
print MK <<EOT;
${makename}_SOURCES = \\
@ -168,16 +180,23 @@ ${makename}_SOURCES = \\
${makename}_LDADD = \\
$libgimp \\
$glib \\$optlib
$deplib
$deplib \\
$rclib
EOT
print RC <<EOT;
${makename}_RC = $_.rc.o
EOT
print IGNORE "/$_\n";
print IGNORE "/$_.exe\n";
}
close RC;
close MK;
close IGNORE;
&write_file($outmk);
&write_file($outignore);
&write_file($outrc);

View File

@ -66,7 +66,8 @@
'file-pix' => { ui => 1 },
'file-png' => { ui => 1, optional => 1, libs => 'PNG_LIBS', cflags => 'PNG_CFLAGS' },
'file-pnm' => { ui => 1 },
'file-pdf' => { ui => 1, optional => 1, libs => 'POPPLER_LIBS', cflags => 'POPPLER_CFLAGS' },
'file-pdf-load' => { ui => 1, optional => 1, libs => 'POPPLER_LIBS', cflags => 'POPPLER_CFLAGS' },
'file-pdf-save' => { ui => 1, optional => 1, libs => 'CAIRO_PDF_LIBS', cflags => 'CAIRO_PDF_CFLAGS' },
'file-ps' => { ui => 1 },
'file-psp' => { ui => 1, optional => 1, libs => 'Z_LIBS' },
'file-raw' => { ui => 1 },

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
file_bmp_RC = file-bmp.rc.o
endif
AM_LDFLAGS = $(mwindows)
libexecdir = $(gimpplugindir)/plug-ins
@ -39,4 +44,5 @@ LDADD = \
$(libgimpbase) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(file_bmp_RC)

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
file_faxg3_RC = file-faxg3.rc.o
endif
AM_LDFLAGS = $(mwindows)
libexecdir = $(gimpplugindir)/plug-ins
@ -36,4 +41,5 @@ LDADD = \
$(libgimpmath) \
$(GLIB_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(file_faxg3_RC)

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
file_fits_RC = file-fits.rc.o
endif
AM_LDFLAGS = $(mwindows)
libexecdir = $(gimpplugindir)/plug-ins
@ -38,4 +43,5 @@ LDADD = \
$(libgimpbase) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(file_fits_RC)

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
file_fli_RC = file-fli.rc.o
endif
AM_LDFLAGS = $(mwindows)
libexecdir = $(gimpplugindir)/plug-ins
@ -38,4 +43,5 @@ LDADD = \
$(libgimpbase) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(file_fli_RC)

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
file_ico_RC = file-ico.rc.o
endif
AM_LDFLAGS = $(mwindows)
libexecdir = $(gimpplugindir)/plug-ins
@ -46,4 +51,5 @@ LDADD = \
$(PNG_LIBS) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(file_ico_RC)

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
file_jpeg_RC = file-jpeg.rc.o
endif
AM_LDFLAGS = $(mwindows)
libexecdir = $(gimpplugindir)/plug-ins
@ -55,7 +60,8 @@ file_jpeg_LDADD = \
$(GTK_LIBS) \
$(EXIF_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(file_jpeg_RC)
noinst_PROGRAMS = jpegqual

View File

@ -12,6 +12,12 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
file_psd_load_RC = file-psd-load.rc.o
file_psd_save_RC = file-psd-save.rc.o
endif
AM_LDFLAGS = $(mwindows)
libexecdir = $(gimpplugindir)/plug-ins
@ -60,3 +66,11 @@ LDADD = \
$(IPTCDATA_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
file_psd_load_LDADD = \
$(LDADD) \
$(file_psd_load_RC)
file_psd_save_LDADD = \
$(LDADD) \
$(file_psd_save_RC)

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
file_sgi_RC = file-sgi.rc.o
endif
AM_LDFLAGS = $(mwindows)
libexecdir = $(gimpplugindir)/plug-ins
@ -38,4 +43,5 @@ LDADD = \
$(libgimpbase) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(file_sgi_RC)

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
file_uri_RC = file-uri.rc.o
endif
AM_LDFLAGS = $(mwindows)
libexecdir = $(gimpplugindir)/plug-ins
@ -56,4 +61,5 @@ LDADD = \
$(backend_libs) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(file_uri_RC)

View File

@ -8,6 +8,11 @@ libgimpcolor = $(top_builddir)/libgimpcolor/libgimpcolor-$(GIMP_API_VERSION).la
libgimpbase = $(top_builddir)/libgimpbase/libgimpbase-$(GIMP_API_VERSION).la
libgimpmath = $(top_builddir)/libgimpmath/libgimpmath-$(GIMP_API_VERSION).la
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
file_xjt_RC = file-xjt.rc.o
endif
libexecdir = $(gimpplugindir)/plug-ins
libexec_PROGRAMS = file-xjt
@ -37,4 +42,5 @@ LDADD = \
$(GTK_LIBS) \
$(RT_LIBS) \
$(JPEG_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(file_xjt_RC)

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
flame_RC = flame.rc.o
endif
AM_LDFLAGS = $(mwindows)
libexecdir = $(gimpplugindir)/plug-ins
@ -45,4 +50,5 @@ LDADD = \
$(libgimpbase) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(flame_RC)

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
fractal_explorer_RC = fractal-explorer.rc.o
endif
AM_LDFLAGS = $(mwindows)
SUBDIRS = examples
@ -41,4 +46,5 @@ LDADD = \
$(libgimpbase) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(fractal_explorer_RC)

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
gfig_RC = gfig.rc.o
endif
AM_LDFLAGS = $(mwindows)
SUBDIRS = gfig-examples images
@ -72,4 +77,5 @@ LDADD = \
$(libgimpbase) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(gfig_RC)

View File

@ -14,6 +14,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
gimpressionist_RC = gimpressionist.rc.o
endif
AM_CPPFLAGS = \
-DDEFAULTPATH=\""~/$(gimpdir)/gimpressionist:$(gimpdatadir)/gimpressionist"\"
@ -72,6 +77,7 @@ LDADD = \
$(libgimpbase) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(gimpressionist_RC)
EXTRA_DIST = README

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
gradient_flare_RC = gradient-flare.rc.o
endif
AM_LDFLAGS = $(mwindows)
SUBDIRS = flares
@ -37,4 +42,5 @@ LDADD = \
$(libgimpbase) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(gradient_flare_RC)

View File

@ -14,6 +14,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
help_browser_RC = help-browser.rc.o
endif
AM_LDFLAGS = $(mwindows)
libexecdir = $(gimpplugindir)/plug-ins
@ -38,7 +43,8 @@ LDADD = \
$(GIO_LIBS) \
$(GLIB_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(help_browser_RC)
help_browser_SOURCES = \
gimpthrobber.c \

View File

@ -11,6 +11,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
help_RC = help.rc.o
endif
AM_CPPFLAGS = -DDATADIR=\""$(gimpdatadir)"\"
AM_LDFLAGS = $(mwindows)
@ -51,7 +56,8 @@ LDADD = \
$(libgimpmath) \
$(GIO_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(help_RC)
noinst_PROGRAMS = gimp-help-lookup

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
ifs_compose_RC = ifs-compose.rc.o
endif
AM_LDFLAGS = $(mwindows)
libexecdir = $(gimpplugindir)/plug-ins
@ -41,4 +46,5 @@ LDADD = \
$(libgimpbase) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(ifs_compose_RC)

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
imagemap_RC = imagemap.rc.o
endif
AM_LDFLAGS = $(mwindows)
SUBDIRS = images
@ -139,7 +144,8 @@ LDADD = \
$(libgimpbase) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(imagemap)
CLEANFILES = y.tab.c y.tab.h

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
lighting_RC = lighting.rc.o
endif
AM_LDFLAGS = $(mwindows)
SUBDIRS = images
@ -51,4 +56,5 @@ LDADD = \
$(libgimpbase) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(lighting_RC)

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
map_object_RC = map-object.rc.o
endif
AM_LDFLAGS = $(mwindows)
libexecdir = $(gimpplugindir)/plug-ins
@ -51,4 +56,5 @@ LDADD = \
$(libgimpbase) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(map_object_RC)

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
maze_RC = maze.rc.o
endif
AM_LDFLAGS = $(mwindows)
libexecdir = $(gimpplugindir)/plug-ins
@ -43,4 +48,5 @@ LDADD = \
$(libgimpbase) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(maze_RC)

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
metadata_RC = metadata.rc.o
endif
AM_LDFLAGS = $(mwindows)
libexecdir = $(gimpplugindir)/plug-ins
@ -77,7 +82,8 @@ LDADD = \
$(EXIF_LIBS) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(metadata_RC)
# test program, not built by default

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
pagecurl_RC = pagecurl.rc.o
endif
AM_LDFLAGS = $(mwindows)
libexecdir = $(gimpplugindir)/plug-ins
@ -42,7 +47,8 @@ LDADD = \
$(libgimpbase) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(pagecurl_RC)
PAGECURL_IMAGES = \

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
print_RC = print.rc.o
endif
AM_LDFLAGS = $(mwindows)
INCLUDES = \
@ -29,7 +34,8 @@ LDADD = \
$(libgimpbase) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(print_RC)
libexecdir = $(gimpplugindir)/plug-ins

View File

@ -16,6 +16,11 @@ mwindows = -mwindows
WINSOCK_LIBS = -lws2_32
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
script_fu_RC = script-fu.rc.o
endif
AM_CFLAGS = \
-DSTANDALONE=0 \
-DUSE_INTERFACE=1 \
@ -74,4 +79,5 @@ LDADD = \
$(SOCKET_LIBS) \
$(WINSOCK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(script_fu_RC)

View File

@ -12,6 +12,11 @@ if OS_WIN32
mwindows = -mwindows
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
selection_to_path_RC = selection-to-path.rc.o
endif
AM_LDFLAGS = $(mwindows)
libexecdir = $(gimpplugindir)/plug-ins
@ -59,4 +64,5 @@ LDADD = \
$(libgimpbase) \
$(GTK_LIBS) \
$(RT_LIBS) \
$(INTLLIBS)
$(INTLLIBS) \
$(selection_to_path_RC)

View File

@ -19,6 +19,10 @@ twain_LDFLAGS = -mwindows -luser32
twainplatform = tw_win.c
endif
if HAVE_WINDRES
include $(top_srcdir)/build/windows/gimprc-plug-ins.rule
twain_RC = twain.rc.o
endif
if HAVE_MAC_TWAIN
twain_LDFLAGS = -framework Carbon -framework TWAIN
@ -61,4 +65,5 @@ LDADD = \
$(GLIB_LIBS) \
$(RT_LIBS) \
$(INTLLIBS) \
$(twain_LIBS)
$(twain_LIBS) \
$(twain_RC)

File diff suppressed because it is too large Load Diff

View File

@ -70,7 +70,7 @@ plug-ins/common/file-jp2-load.c
plug-ins/common/file-mng.c
plug-ins/common/file-pat.c
plug-ins/common/file-pcx.c
plug-ins/common/file-pdf.c
plug-ins/common/file-pdf-load.c
plug-ins/common/file-pix.c
plug-ins/common/file-png.c
plug-ins/common/file-pnm.c

File diff suppressed because it is too large Load Diff

View File

@ -4,6 +4,7 @@ ar
az
be
bg
br
ca
ca@valencia
cs

337
po-python/br.po Normal file
View File

@ -0,0 +1,337 @@
# Breton translation for Gimp Python
# Copyright (c) 2010 The Gnome Project
# This file is distributed under the same license as the Gimp Python package.
# Alan Monfort <alan.monfort@free.fr>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: Gimp Python\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gimp&component=general\n"
"POT-Creation-Date: 2010-08-25 11:03+0000\n"
"PO-Revision-Date: 2010-08-27 12:14+0100\n"
"Last-Translator: Denis <denisarnuad@yahoo.fr>\n"
"Language-Team: Drouizig <alan.monfort@free.fr>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Breton\n"
"X-Poedit-Country: FRANCE\n"
"X-Poedit-SourceCharset: utf-8\n"
#: ../plug-ins/pygimp/gimpfu.py:394
msgid "Missing exception information"
msgstr "Stlennoù an nemedenn o vankout"
#: ../plug-ins/pygimp/gimpfu.py:403
#, python-format
msgid "An error occurred running %s"
msgstr "Degouezhet ez eus bet ur fazi e-pad ma oa oc'h erounit %s"
#: ../plug-ins/pygimp/gimpfu.py:414
msgid "_More Information"
msgstr "_Muioc'h a stlennoù"
#: ../plug-ins/pygimp/gimpfu.py:526
#: ../plug-ins/pygimp/gimpfu.py:538
#: ../plug-ins/pygimp/gimpfu.py:544
msgid "No"
msgstr "Ket"
#: ../plug-ins/pygimp/gimpfu.py:536
#: ../plug-ins/pygimp/gimpfu.py:544
msgid "Yes"
msgstr "Ya"
#: ../plug-ins/pygimp/gimpfu.py:596
#: ../plug-ins/pygimp/gimpui.py:223
msgid "Python-Fu File Selection"
msgstr "Diuzad restr Python-Fu"
#: ../plug-ins/pygimp/gimpfu.py:607
msgid "Python-Fu Folder Selection"
msgstr "Diuzad teuliad Python-Fu"
#: ../plug-ins/pygimp/gimpfu.py:696
#, python-format
msgid "Invalid input for '%s'"
msgstr "Enankad didalvoudek evit '%s'"
#: ../plug-ins/pygimp/gimpui.py:176
msgid "Python-Fu Color Selection"
msgstr "Diuzad liv Python-Fu"
#: ../plug-ins/pygimp/plug-ins/colorxhtml.py:106
msgid "Saving as colored XHTML"
msgstr "Oc'h enrollañ evel XHTML livet"
#: ../plug-ins/pygimp/plug-ins/colorxhtml.py:183
msgid "Save as colored XHTML"
msgstr "Enrollañ evel XHTML livet"
#: ../plug-ins/pygimp/plug-ins/colorxhtml.py:188
msgid "Colored XHTML"
msgstr "XHTML livet"
#: ../plug-ins/pygimp/plug-ins/colorxhtml.py:195
msgid "Character _source"
msgstr "_Tarzh an arouezennoù"
#: ../plug-ins/pygimp/plug-ins/colorxhtml.py:196
msgid "Source code"
msgstr "Tarzh ar voneg"
#: ../plug-ins/pygimp/plug-ins/colorxhtml.py:197
msgid "Text file"
msgstr "Restr testenn"
#: ../plug-ins/pygimp/plug-ins/colorxhtml.py:198
msgid "Entry box"
msgstr "Boestad enankañ"
#: ../plug-ins/pygimp/plug-ins/colorxhtml.py:199
msgid "_File to read or characters to use"
msgstr "_Restr da lenn pe arouezenn da arverañ"
#: ../plug-ins/pygimp/plug-ins/colorxhtml.py:201
msgid "Fo_nt size in pixels"
msgstr "Ment an _nodrezh e pikselioù"
#: ../plug-ins/pygimp/plug-ins/colorxhtml.py:202
msgid "_Write a separate CSS file"
msgstr "Skrivañ ur restr CSS disrannet"
#: ../plug-ins/pygimp/plug-ins/foggify.py:56
msgid "Add a layer of fog"
msgstr "Ouzhpennañ un dreuzfollennad latar"
#: ../plug-ins/pygimp/plug-ins/foggify.py:61
msgid "_Fog..."
msgstr "_Latar..."
#: ../plug-ins/pygimp/plug-ins/foggify.py:66
msgid "_Layer name"
msgstr "Anv an _dreuzfollenn"
#: ../plug-ins/pygimp/plug-ins/foggify.py:66
msgid "Clouds"
msgstr "Koumoul"
#: ../plug-ins/pygimp/plug-ins/foggify.py:67
msgid "_Fog color"
msgstr "_Liv al latar"
#: ../plug-ins/pygimp/plug-ins/foggify.py:68
msgid "_Turbulence"
msgstr "S_trafuilh"
#: ../plug-ins/pygimp/plug-ins/foggify.py:69
msgid "Op_acity"
msgstr "_Demerez"
#: ../plug-ins/pygimp/plug-ins/palette-offset.py:44
msgid "Offset the colors in a palette"
msgstr "Linkañ al livioù wwar ul livaoueg"
#: ../plug-ins/pygimp/plug-ins/palette-offset.py:49
msgid "_Offset Palette..."
msgstr "Linkañ al liva_oueg..."
#: ../plug-ins/pygimp/plug-ins/palette-offset.py:52
#: ../plug-ins/pygimp/plug-ins/palette-sort.py:56
#: ../plug-ins/pygimp/plug-ins/palette-to-gradient.py:56
#: ../plug-ins/pygimp/plug-ins/palette-to-gradient.py:78
msgid "Palette"
msgstr "Livaoueg"
#: ../plug-ins/pygimp/plug-ins/palette-offset.py:53
msgid "Off_set"
msgstr "Lin_kañ"
#: ../plug-ins/pygimp/plug-ins/palette-sort.py:48
msgid "Sort the colors in a palette"
msgstr "Rummañ al livioù war ul livaoueg"
#: ../plug-ins/pygimp/plug-ins/palette-sort.py:53
msgid "_Sort Palette..."
msgstr "_Rummañ al livaoueg..."
#: ../plug-ins/pygimp/plug-ins/palette-sort.py:57
msgid "Color _model"
msgstr "Skouer li_v"
#: ../plug-ins/pygimp/plug-ins/palette-sort.py:58
msgid "RGB"
msgstr "RGG"
#: ../plug-ins/pygimp/plug-ins/palette-sort.py:59
msgid "HSV"
msgstr "APL"
#: ../plug-ins/pygimp/plug-ins/palette-sort.py:60
msgid "Channel to _sort"
msgstr "_Sanell da rummañ"
#: ../plug-ins/pygimp/plug-ins/palette-sort.py:61
msgid "Red or Hue"
msgstr "Rue pe arliv"
#: ../plug-ins/pygimp/plug-ins/palette-sort.py:62
msgid "Green or Saturation"
msgstr "Gwer pe peurvec'hiañ"
#: ../plug-ins/pygimp/plug-ins/palette-sort.py:63
msgid "Blue or Value"
msgstr "Glas pe lintr"
#: ../plug-ins/pygimp/plug-ins/palette-sort.py:64
msgid "_Ascending"
msgstr "W_ar gresk"
#: ../plug-ins/pygimp/plug-ins/palette-to-gradient.py:49
msgid "Create a repeating gradient using colors from the palette"
msgstr "Krouiñ un ilrezenn arrenek oc'h arverañ al livioù diwar al livaoueg"
#: ../plug-ins/pygimp/plug-ins/palette-to-gradient.py:54
msgid "Palette to _Repeating Gradient"
msgstr "Livaoueg war an ilrezenn ar_rennek"
#: ../plug-ins/pygimp/plug-ins/palette-to-gradient.py:71
msgid "Create a gradient using colors from the palette"
msgstr "Krouiñ un ilrezenn oc'h arverañ al livioù diwar al livaoueg"
#: ../plug-ins/pygimp/plug-ins/palette-to-gradient.py:76
msgid "Palette to _Gradient"
msgstr "Livaoueg d'an _ilrezenn"
#: ../plug-ins/pygimp/plug-ins/py-slice.py:56
msgid "Slice"
msgstr "Darn"
#. table snippet means a small piece of HTML code here
#: ../plug-ins/pygimp/plug-ins/py-slice.py:417
msgid "Cuts an image along its guides, creates images and a HTML table snippet"
msgstr "Troc'hañ ur skeudenn a-hed he dealfoù, krouiñ a ra skeudennoù ha brizhenn un daolenn HTML "
#: ../plug-ins/pygimp/plug-ins/py-slice.py:428
msgid "_Slice..."
msgstr "_Darnañ..."
#: ../plug-ins/pygimp/plug-ins/py-slice.py:433
msgid "Path for HTML export"
msgstr "TReug evit an ezporzhiañ HTML"
#: ../plug-ins/pygimp/plug-ins/py-slice.py:434
msgid "Filename for export"
msgstr "Anv restr evit an ezporzhiañ"
#: ../plug-ins/pygimp/plug-ins/py-slice.py:435
msgid "Image name prefix"
msgstr "Rakger anv ar skeudenn"
#: ../plug-ins/pygimp/plug-ins/py-slice.py:436
msgid "Image format"
msgstr "Mentrezh ar skeudenn"
#: ../plug-ins/pygimp/plug-ins/py-slice.py:437
msgid "Separate image folder"
msgstr "Dispartiañ an teuliad skeudennoù"
#: ../plug-ins/pygimp/plug-ins/py-slice.py:439
msgid "Folder for image export"
msgstr "Teuliad evit ezporzhiañ ar skeudenn"
#: ../plug-ins/pygimp/plug-ins/py-slice.py:440
msgid "Space between table elements"
msgstr "Egor etre elfennoù an daolenn"
#: ../plug-ins/pygimp/plug-ins/py-slice.py:442
msgid "Javascript for onmouseover and clicked"
msgstr "Javascript evit onmouseover ha kliket"
#. table caps are table cells on the edge of the table
#: ../plug-ins/pygimp/plug-ins/py-slice.py:445
msgid "Skip animation for table caps"
msgstr "Dilemel ar bliverezh evit pennlizherennoù an daolenn"
#: ../plug-ins/pygimp/plug-ins/python-console.py:56
msgid "Python Console"
msgstr "Penel Python"
#: ../plug-ins/pygimp/plug-ins/python-console.py:60
msgid "_Browse..."
msgstr "_Kantreal..."
#: ../plug-ins/pygimp/plug-ins/python-console.py:138
msgid "Python Procedure Browser"
msgstr "Kantreer argerzhadur Python"
#: ../plug-ins/pygimp/plug-ins/python-console.py:167
#, python-format
msgid "Could not open '%s' for writing: %s"
msgstr "N'haller ket digeriñ '%s' evit skrivañ : %s"
#: ../plug-ins/pygimp/plug-ins/python-console.py:182
#, python-format
msgid "Could not write to '%s': %s"
msgstr "N'haller ket skrivañ war '%s' : %s"
#: ../plug-ins/pygimp/plug-ins/python-console.py:190
msgid "Save Python-Fu Console Output"
msgstr "Enrollañ ec'hankad penel Python-Fu"
#: ../plug-ins/pygimp/plug-ins/python-console.py:216
msgid "Interactive GIMP Python interpreter"
msgstr "Jubenner etrewezhiat Python evit GIMP"
#: ../plug-ins/pygimp/plug-ins/python-console.py:221
msgid "_Console"
msgstr "_Penel"
#: ../plug-ins/pygimp/plug-ins/shadow_bevel.py:60
msgid "Add a drop shadow to a layer, and optionally bevel it"
msgstr "Ouzhpennañ un disheol o kouezhañ dindan an dreuzfollenn, ha dre zibarzh lakaat beskell warni"
#: ../plug-ins/pygimp/plug-ins/shadow_bevel.py:65
msgid "_Drop Shadow and Bevel..."
msgstr "_Disheol o kouezhañ ha beskell..."
#: ../plug-ins/pygimp/plug-ins/shadow_bevel.py:70
msgid "_Shadow blur"
msgstr "_Ruzed an disheol"
#: ../plug-ins/pygimp/plug-ins/shadow_bevel.py:71
msgid "_Bevel"
msgstr "_Beskell"
#: ../plug-ins/pygimp/plug-ins/shadow_bevel.py:72
msgid "_Drop shadow"
msgstr "_Disheol o kouezhañ"
#: ../plug-ins/pygimp/plug-ins/shadow_bevel.py:73
msgid "Drop shadow _X displacement"
msgstr "Dilec'hiadur _X an disheol o kouezhañ"
#: ../plug-ins/pygimp/plug-ins/shadow_bevel.py:74
msgid "Drop shadow _Y displacement"
msgstr "Dilec'hiadur _Y an disheol o kouezhañ"
#: ../plug-ins/pygimp/plug-ins/text-brush.py:75
msgid "Create a new brush with characters from a text sequence"
msgstr "Krouiñ ur broust nevez gant arouezennoù un destenn"
#: ../plug-ins/pygimp/plug-ins/text-brush.py:81
msgid "New Brush from _Text..."
msgstr "Broust nevez diouzh an des_tenn..."
#: ../plug-ins/pygimp/plug-ins/text-brush.py:84
msgid "Font"
msgstr "Nodrezh"
#: ../plug-ins/pygimp/plug-ins/text-brush.py:85
msgid "Pixel Size"
msgstr "Ment ar piksel"
#: ../plug-ins/pygimp/plug-ins/text-brush.py:86
msgid "Text"
msgstr "Testenn"

View File

@ -1,64 +1,71 @@
# Breton translation for gimp
# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
# French translation of gimp-script-fu.
# Copyright (C) 2000-2006 Free Software Foundation, Inc.
# This file is distributed under the same license as the gimp package.
# Alan Monfort <alan.monfort@free.fr>, 2007.
#
# David Monniaux <monniaux@arbouse.ens.fr>, 2000.
# Christophe Merlet (RedFox) <redfox@redfoxcenter.org>, 2000-2006.
# maintainer: Raymond Ostertag <r.ostertag@caramail.com>, 2002-2006.
# Jean-Louis Berliet <jl.berliet@free.fr>, 2004.
#
#
msgid ""
msgstr ""
"Project-Id-Version: gimp\n"
"Report-Msgid-Bugs-To: An Drouizig <drouizig@drouizig.org>\n"
"POT-Creation-Date: 2009-03-10 06:21+0000\n"
"PO-Revision-Date: 2009-07-28 04:47+0100\n"
"Project-Id-Version: gimp-script-fu 2.4\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gimp&component=general\n"
"POT-Creation-Date: 2010-08-25 11:03+0000\n"
"PO-Revision-Date: 2010-08-25 20:09+0100\n"
"Last-Translator: Alan Monfort <alan.monfort@free.fr>\n"
"Language-Team: An Drouizig <drouizig@drouizig.org>\n"
"Language-Team: Alan Monfort <drouizig@drouizig.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: breton\n"
"X-Poedit-Country: france\n"
#: ../plug-ins/script-fu/script-fu-console.c:131
#: ../plug-ins/script-fu/script-fu-console.c:198
#: ../plug-ins/script-fu/script-fu-console.c:130
#: ../plug-ins/script-fu/script-fu-console.c:197
msgid "Script-Fu Console"
msgstr "Penel Skript-Fu"
msgstr "Penel Script-Fu"
#: ../plug-ins/script-fu/script-fu-console.c:194
#: ../plug-ins/script-fu/script-fu-console.c:193
msgid "Welcome to TinyScheme"
msgstr "Degemer mat e TinyScheme"
#: ../plug-ins/script-fu/script-fu-console.c:200
#: ../plug-ins/script-fu/script-fu-console.c:199
msgid "Interactive Scheme Development"
msgstr "Steuñv diorrenn etrewezhiat"
#: ../plug-ins/script-fu/script-fu-console.c:236
#: ../plug-ins/script-fu/script-fu-console.c:235
msgid "_Browse..."
msgstr "_Furchal..."
msgstr "_Kantreal..."
#: ../plug-ins/script-fu/script-fu-console.c:294
#: ../plug-ins/script-fu/script-fu-console.c:293
msgid "Save Script-Fu Console Output"
msgstr "Enrollañ ec'hankad penel Skript-Fu"
#: ../plug-ins/script-fu/script-fu-console.c:341
#: ../plug-ins/script-fu/script-fu-console.c:340
#, c-format
msgid "Could not open '%s' for writing: %s"
msgstr "N'haller ket digeriñ '%s' evit skrivañ : %s"
#: ../plug-ins/script-fu/script-fu-console.c:370
#: ../plug-ins/script-fu/script-fu-console.c:369
msgid "Script-Fu Procedure Browser"
msgstr "Merdeer an treugennadoù Skript-Fu"
#: ../plug-ins/script-fu/script-fu-eval.c:63
#: ../plug-ins/script-fu/script-fu-eval.c:60
msgid "Script-Fu evaluation mode only allows non-interactive invocation"
msgstr "Aotreet e vez galvadennoù anetrewezhiat hepken gant mod priziañ Skript-Fu"
#: ../plug-ins/script-fu/script-fu-interface.c:196
#: ../plug-ins/script-fu/script-fu-interface.c:195
msgid "Script-Fu cannot process two scripts at the same time."
msgstr "Skript-Fu n'eo ket gouest da erounit daou skript war un dro."
#: ../plug-ins/script-fu/script-fu-interface.c:198
#: ../plug-ins/script-fu/script-fu-interface.c:197
#, c-format
msgid "You are already running the \"%s\" script."
msgstr "Emaoc'h oc'h erounit ar skript \"%s\" ."
#: ../plug-ins/script-fu/script-fu-interface.c:224
#: ../plug-ins/script-fu/script-fu-interface.c:223
#, c-format
msgid "Script-Fu: %s"
msgstr "Skript-Fu : %s"
@ -66,148 +73,148 @@ msgstr "Skript-Fu : %s"
#. we add a colon after the label;
#. * some languages want an extra space here
#.
#: ../plug-ins/script-fu/script-fu-interface.c:288
#: ../plug-ins/script-fu/script-fu-interface.c:287
#, c-format
msgid "%s:"
msgstr "%s :"
#: ../plug-ins/script-fu/script-fu-interface.c:336
#: ../plug-ins/script-fu/script-fu-interface.c:335
msgid "Script-Fu Color Selection"
msgstr "Diuzad al liv evit Skript-Fu"
#: ../plug-ins/script-fu/script-fu-interface.c:445
#: ../plug-ins/script-fu/script-fu-interface.c:444
msgid "Script-Fu File Selection"
msgstr "Diuzad ar restr evit Skript-Fu"
#: ../plug-ins/script-fu/script-fu-interface.c:448
#: ../plug-ins/script-fu/script-fu-interface.c:447
msgid "Script-Fu Folder Selection"
msgstr "Diuzad an teuliad evit Skript-Fu"
#: ../plug-ins/script-fu/script-fu-interface.c:461
#: ../plug-ins/script-fu/script-fu-interface.c:460
msgid "Script-Fu Font Selection"
msgstr "Diuzad an nodrezh evit Skript-Fu"
#: ../plug-ins/script-fu/script-fu-interface.c:469
#: ../plug-ins/script-fu/script-fu-interface.c:468
msgid "Script-Fu Palette Selection"
msgstr "Diuzad al livaoueg evit Skript-Fu"
#: ../plug-ins/script-fu/script-fu-interface.c:478
#: ../plug-ins/script-fu/script-fu-interface.c:477
msgid "Script-Fu Pattern Selection"
msgstr "Diuzad ar goustur evit Skript-Fu"
#: ../plug-ins/script-fu/script-fu-interface.c:487
#: ../plug-ins/script-fu/script-fu-interface.c:486
msgid "Script-Fu Gradient Selection"
msgstr "Diuzad an ilrezenn evit Skript-Fu"
#: ../plug-ins/script-fu/script-fu-interface.c:496
#: ../plug-ins/script-fu/script-fu-interface.c:495
msgid "Script-Fu Brush Selection"
msgstr "Diuzad ar broust evit Skript-Fu"
msgstr "Diuzad ar broust evit Skript-Fu "
#: ../plug-ins/script-fu/script-fu-interface.c:824
#: ../plug-ins/script-fu/script-fu-interface.c:826
#, c-format
msgid "Error while executing %s:"
msgstr "Fazi e-pad ma oa oc'h erounit %s :"
#: ../plug-ins/script-fu/script-fu-scripts.c:150
#: ../plug-ins/script-fu/script-fu-scripts.c:149
msgid "Too few arguments to 'script-fu-register' call"
msgstr "Re nebeut a arguzennoù evit galvadenn 'script-fu-register'"
msgstr "N'eus ket arguzennoù a-walc'h evit galv 'script-fu-register'"
#: ../plug-ins/script-fu/script-fu-scripts.c:609
#: ../plug-ins/script-fu/script-fu-scripts.c:608
#, c-format
msgid "Error while loading %s:"
msgstr "Fazi e-pad ma oa o kargañ %s :"
#: ../plug-ins/script-fu/script-fu-server.c:713
#: ../plug-ins/script-fu/script-fu-server.c:804
msgid "Script-Fu Server Options"
msgstr "Dibarzhioù an dafariad Skript-Fu"
msgstr "Dibarzhioù an dafariad Skript-Fu "
#: ../plug-ins/script-fu/script-fu-server.c:718
#: ../plug-ins/script-fu/script-fu-server.c:809
msgid "_Start Server"
msgstr "_Loc'hañ an dafariad"
#: ../plug-ins/script-fu/script-fu-server.c:746
#: ../plug-ins/script-fu/script-fu-server.c:837
msgid "Server port:"
msgstr "Porzh an dafariad :"
#: ../plug-ins/script-fu/script-fu-server.c:752
#: ../plug-ins/script-fu/script-fu-server.c:843
msgid "Server logfile:"
msgstr "Kerzhlevr an dafariad :"
msgstr "Restr kerzhlevr an dafariad :"
#: ../plug-ins/script-fu/script-fu.c:111
#: ../plug-ins/script-fu/script-fu.c:110
msgid "Interactive console for Script-Fu development"
msgstr "Penel etrewezhiat evit diorren Skript-Fu"
#: ../plug-ins/script-fu/script-fu.c:117
#: ../plug-ins/script-fu/script-fu.c:116
msgid "_Console"
msgstr "_Penel"
#: ../plug-ins/script-fu/script-fu.c:141
#: ../plug-ins/script-fu/script-fu.c:140
msgid "Server for remote Script-Fu operation"
msgstr "Dafariad evit gwezhiadurioù Skript-Fu a-bell"
#: ../plug-ins/script-fu/script-fu.c:146
#: ../plug-ins/script-fu/script-fu.c:145
msgid "_Start Server..."
msgstr "_Loc'hañ an dafariad..."
#: ../plug-ins/script-fu/script-fu.c:302
#: ../plug-ins/script-fu/script-fu.c:301
msgid "_GIMP Online"
msgstr "_GIMP enlinenn"
#: ../plug-ins/script-fu/script-fu.c:303
#: ../plug-ins/script-fu/script-fu.c:302
msgid "_User Manual"
msgstr "Dornlevr an arveriad"
msgstr "D_ornlevr an arveriad"
#: ../plug-ins/script-fu/script-fu.c:306
#: ../plug-ins/script-fu/script-fu.c:305
msgid "_Script-Fu"
msgstr "_Script-Fu"
msgstr "_Skript-Fu"
#: ../plug-ins/script-fu/script-fu.c:308
#: ../plug-ins/script-fu/script-fu.c:307
msgid "_Test"
msgstr "_Taol arnod"
#: ../plug-ins/script-fu/script-fu.c:311
#: ../plug-ins/script-fu/script-fu.c:310
msgid "_Buttons"
msgstr "A_fell"
#: ../plug-ins/script-fu/script-fu.c:313
#: ../plug-ins/script-fu/script-fu.c:312
msgid "_Logos"
msgstr "Sie_lloù"
msgstr "_Sielloù"
#: ../plug-ins/script-fu/script-fu.c:315
#: ../plug-ins/script-fu/script-fu.c:314
msgid "_Patterns"
msgstr "_Gousturioù"
#: ../plug-ins/script-fu/script-fu.c:318
#: ../plug-ins/script-fu/script-fu.c:317
msgid "_Web Page Themes"
msgstr "Neuzioù ar bajennad _web"
msgstr "Neuzioù pajennad _web"
#: ../plug-ins/script-fu/script-fu.c:320
#: ../plug-ins/script-fu/script-fu.c:319
msgid "_Alien Glow"
msgstr "S_kleur Alien"
#: ../plug-ins/script-fu/script-fu.c:322
#: ../plug-ins/script-fu/script-fu.c:321
msgid "_Beveled Pattern"
msgstr "Goustur _beskellet"
#: ../plug-ins/script-fu/script-fu.c:324
#: ../plug-ins/script-fu/script-fu.c:323
msgid "_Classic.Gimp.Org"
msgstr "_Gimp.Org Klasel"
#: ../plug-ins/script-fu/script-fu.c:327
#: ../plug-ins/script-fu/script-fu.c:326
msgid "Alpha to _Logo"
msgstr "Alfa war ar _siell"
#: ../plug-ins/script-fu/script-fu.c:330
#: ../plug-ins/script-fu/script-fu.c:329
msgid "Re-read all available Script-Fu scripts"
msgstr "Lenn en-dro an holl skriptoù Script-Fu hegerz"
#: ../plug-ins/script-fu/script-fu.c:335
#: ../plug-ins/script-fu/script-fu.c:334
msgid "_Refresh Scripts"
msgstr "_Azbevaat ar skriptoù"
#: ../plug-ins/script-fu/script-fu.c:358
#: ../plug-ins/script-fu/script-fu.c:357
msgid "You can not use \"Refresh Scripts\" while a Script-Fu dialog box is open. Please close all Script-Fu windows and try again."
msgstr "N'hallit ket arverañ \"Azbevaat ar skriptoù\" mard eo digor ur voestad emziviz Script-Fu. Serrit prenestroù Script-Fu ha klaskit en-dro."
msgstr "N'hallit ket arverañ \"Azbevaat ar skriptoù\" mard eo digor ur voestad emziviz Script-Fu. Serrit ar prenestroù Script-Fu ha klaskit en-dro."
#: ../plug-ins/script-fu/scripts/3d-outline.scm.h:1
msgid "3D _Outline..."
@ -245,8 +252,6 @@ msgstr "Arventennoù ar bosoù dre ziouer"
#: ../plug-ins/script-fu/scripts/coolmetal-logo.scm.h:6
#: ../plug-ins/script-fu/scripts/crystal-logo.scm.h:6
#: ../plug-ins/script-fu/scripts/frosty-logo.scm.h:5
#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:5
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:6
#: ../plug-ins/script-fu/scripts/glossy.scm.h:7
#: ../plug-ins/script-fu/scripts/glowing-logo.scm.h:5
#: ../plug-ins/script-fu/scripts/gradient-bevel-logo.scm.h:7
@ -284,8 +289,6 @@ msgstr "Nodrezh"
#: ../plug-ins/script-fu/scripts/coolmetal-logo.scm.h:7
#: ../plug-ins/script-fu/scripts/crystal-logo.scm.h:7
#: ../plug-ins/script-fu/scripts/frosty-logo.scm.h:6
#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:6
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:7
#: ../plug-ins/script-fu/scripts/glossy.scm.h:8
#: ../plug-ins/script-fu/scripts/glowing-logo.scm.h:6
#: ../plug-ins/script-fu/scripts/gradient-bevel-logo.scm.h:8
@ -357,8 +360,6 @@ msgstr "Skin ruzed an disheol"
#: ../plug-ins/script-fu/scripts/coolmetal-logo.scm.h:10
#: ../plug-ins/script-fu/scripts/crystal-logo.scm.h:8
#: ../plug-ins/script-fu/scripts/frosty-logo.scm.h:7
#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:13
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:17
#: ../plug-ins/script-fu/scripts/glossy.scm.h:18
#: ../plug-ins/script-fu/scripts/glowing-logo.scm.h:8
#: ../plug-ins/script-fu/scripts/gradient-bevel-logo.scm.h:10
@ -396,7 +397,6 @@ msgstr "Truched 3_M..."
#: ../plug-ins/script-fu/scripts/comic-logo.scm.h:2
#: ../plug-ins/script-fu/scripts/coolmetal-logo.scm.h:2
#: ../plug-ins/script-fu/scripts/frosty-logo.scm.h:2
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:1
#: ../plug-ins/script-fu/scripts/glossy.scm.h:2
#: ../plug-ins/script-fu/scripts/glowing-logo.scm.h:2
#: ../plug-ins/script-fu/scripts/gradient-bevel-logo.scm.h:2
@ -417,7 +417,7 @@ msgstr "Ment ar bloc'had"
#: ../plug-ins/script-fu/scripts/3dTruchet.scm.h:4
msgid "Create an image filled with a 3D Truchet pattern"
msgstr "Krouiñ ur skeudenn leuniet gant ur goustur 3M mod Truchet"
msgstr "Krouiñ ur skeudenn leuniet gant ur goustur 3M Truchet"
#: ../plug-ins/script-fu/scripts/3dTruchet.scm.h:5
#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:7
@ -595,7 +595,7 @@ msgstr "A_fell..."
#: ../plug-ins/script-fu/scripts/alien-glow-button.scm.h:3
msgid "Create a button graphic with an eerie glow for web pages"
msgstr "Krouiñ un afell gevregat gant ur skleur iskis evit pajennadoù web"
msgstr "Krouiñ un afell gevregat gant ur skleur iskis evit ajennadoù web"
#: ../plug-ins/script-fu/scripts/alien-glow-button.scm.h:8
msgid "Glow radius"
@ -612,8 +612,6 @@ msgstr "Leuniadur"
#: ../plug-ins/script-fu/scripts/beveled-button.scm.h:10
#: ../plug-ins/script-fu/scripts/beveled-pattern-button.scm.h:8
#: ../plug-ins/script-fu/scripts/blended-logo.scm.h:18
#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:14
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:18
#: ../plug-ins/script-fu/scripts/i26-gunya2.scm.h:8
#: ../plug-ins/script-fu/scripts/news-text.scm.h:11
#: ../plug-ins/script-fu/scripts/pupi-button.scm.h:14
@ -752,7 +750,6 @@ msgid "Create a beveled pattern hrule for webpages"
msgstr "Krouiñ ur goustur reolennH beskellet evit ar pajennadoù web"
#: ../plug-ins/script-fu/scripts/beveled-pattern-hrule.scm.h:2
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:8
#: ../plug-ins/script-fu/scripts/gradient-example.scm.h:4
#: ../plug-ins/script-fu/scripts/mkbrush.scm.h:7
#: ../plug-ins/script-fu/scripts/swirltile.scm.h:7
@ -971,7 +968,7 @@ msgstr "Engravet..."
#: ../plug-ins/script-fu/scripts/carved-logo.scm.h:4
msgid "Create a logo with text raised above or carved in to the specified background image"
msgstr "Krouiñ ur siell gant an destenn savet dirak pe zelwennet e-barzh drekva erspizet ar skeudenn"
msgstr "Krouiñ ur siell gant an destenn savet dirak pe zelwennet e-barzh drekva erspizet ar skeudenn "
#: ../plug-ins/script-fu/scripts/carved-logo.scm.h:7
msgid "Padding around text"
@ -983,7 +980,7 @@ msgstr "Liv ar c'hleiz"
#: ../plug-ins/script-fu/scripts/chalk.scm.h:3
msgid "Create a chalk drawing effect for the selected region (or alpha)"
msgstr "Krouiñ un efed tresañ dre gleiz evit ar maez diuzet (pe an alfa)"
msgstr "Krouiñ un efed tresañ dre gleiz evit ar maez diuzet (pe d'an alfa)"
#: ../plug-ins/script-fu/scripts/chalk.scm.h:4
msgid "Create a logo resembling chalk scribbled on a blackboard"
@ -1062,7 +1059,7 @@ msgstr "Maezioù gwenn ar c'hrom"
#: ../plug-ins/script-fu/scripts/crystal-logo.scm.h:5
#: ../plug-ins/script-fu/scripts/sota-chrome-logo.scm.h:6
msgid "Environment map"
msgstr "Kartenn an amva"
msgstr "Kartennad an amva"
#: ../plug-ins/script-fu/scripts/chrome-it.scm.h:8
#: ../plug-ins/script-fu/scripts/sota-chrome-logo.scm.h:9
@ -1282,12 +1279,10 @@ msgid "Color"
msgstr "Liv"
#: ../plug-ins/script-fu/scripts/drop-shadow.scm.h:5
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:11
msgid "Offset X"
msgstr "Linkañ X"
#: ../plug-ins/script-fu/scripts/drop-shadow.scm.h:6
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:12
msgid "Offset Y"
msgstr "Linkañ Y"
@ -1392,7 +1387,7 @@ msgstr "Du war wenn"
#: ../plug-ins/script-fu/scripts/font-map.scm.h:3
msgid "Create an image filled with previews of fonts matching a fontname filter"
msgstr "Krouiñ ur skeudenn leuniet gant alberzioù nodrezhoù o klotañ gant sil un anv nodrezh"
msgstr "Krouiñ ur skeudenn leuniet gant alberzioù nodrezhioù o klotañ gant sil un anv nodrezh"
#: ../plug-ins/script-fu/scripts/font-map.scm.h:4
msgid "Font _size (pixels)"
@ -1468,91 +1463,61 @@ msgstr "Tevder an disheol (%)"
msgid "_Fuzzy Border..."
msgstr "Riblenn _dispis..."
#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:1
msgid "Autocrop"
msgstr "Didroc'hañ emgefreek"
#: ../plug-ins/script-fu/scripts/gimp-online.scm.h:1
msgid "Bookmark to the GIMP web site"
msgstr "Merker war lec'hienn web GIMP"
#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:2
msgid "Create an image of a large header using the gimp.org webpage theme"
msgstr "Krouiñ ur skeudenn eus un talbenn bras en ur arverañ neuz pajennad web gimp.org"
#: ../plug-ins/script-fu/scripts/gimp-online.scm.h:2
msgid "Bookmark to the user manual"
msgstr "Merker war dornlevr an arveriad"
#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:3
msgid "Create an image of a small header using the gimp.org webpage theme"
msgstr "Krouiñ ur skeudenn eus un talbenn bihan en ur arverañ neuz pajenn web gimp.org"
#: ../plug-ins/script-fu/scripts/gimp-online.scm.h:3
msgid "Create and Use _Selections"
msgstr "Krouiñ hag arverañ diu_zadoù"
#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:4
msgid "Dark color"
msgstr "Liv teñval"
#: ../plug-ins/script-fu/scripts/gimp-online.scm.h:4
msgid "Create, Open and Save _Files"
msgstr "Krouiñ, digeriñ hag enrollañ _restroù"
#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:7
#: ../plug-ins/script-fu/scripts/xach-effect.scm.h:9
msgid "Highlight color"
msgstr "Liv flamm"
#: ../plug-ins/script-fu/scripts/gimp-online.scm.h:5
msgid "Drawing _Simple Objects"
msgstr "Tresañ er_gorennoù eeun"
#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:8
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:9
msgid "Index image"
msgstr "Skeudenn ibil"
#: ../plug-ins/script-fu/scripts/gimp-online.scm.h:6
msgid "How to Use _Dialogs"
msgstr "Penaos arverañ ar _boestadoù emziviz"
#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:9
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:10
msgid "Number of colors"
msgstr "Niver a livioù"
#: ../plug-ins/script-fu/scripts/gimp-online.scm.h:7
msgid "Plug-in _Registry"
msgstr "Marilh an enlugelladoù"
#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:10
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:13
msgid "Remove background"
msgstr "Dilemel an drekva"
#: ../plug-ins/script-fu/scripts/gimp-online.scm.h:8
msgid "Using _Paths"
msgstr "Arverañ _treugoù"
#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:11
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:14
msgid "Select-by-color threshold"
msgstr "Gwehin diuzañ dre liv"
#: ../plug-ins/script-fu/scripts/gimp-online.scm.h:9
msgid "_Basic Concepts"
msgstr "Ergrafoù dia_zez"
#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:12
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:15
msgid "Shadow color"
msgstr "Liv an disheol"
#: ../plug-ins/script-fu/scripts/gimp-online.scm.h:10
msgid "_Developer Web Site"
msgstr "Lec'hienn internet an diorrenourion"
#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:15
msgid "_Big Header..."
msgstr "Tal_benn bras..."
#: ../plug-ins/script-fu/scripts/gimp-online.scm.h:11
msgid "_Main Web Site"
msgstr "L_oad internet pennañ"
#: ../plug-ins/script-fu/scripts/gimp-headers.scm.h:16
msgid "_Small Header..."
msgstr "Talbenn bi_han..."
#: ../plug-ins/script-fu/scripts/gimp-online.scm.h:12
msgid "_Preparing your Images for the Web"
msgstr "_Prientiñ ho skeudenn evit ar web"
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:2
msgid "Create an image of a Tube Button Label Header using the gimp.org webpage theme"
msgstr "Krouiñ ur skeudenn eus un talbenn afell e stumm un duellenn en ur arverañ neuz pajenn web gimp.org"
#: ../plug-ins/script-fu/scripts/gimp-online.scm.h:13
msgid "_User Manual Web Site"
msgstr "L_ec'hienn internet dornlevr an arveriad"
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:3
msgid "Create an image of a Tube Button Label using the gimp.org webpage theme"
msgstr "Krouiñ ur skeudenn eus ur skritell afell he stumm un duellenn en ur arverañ neuz pajenn web gimp.org"
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:4
msgid "Create an image of a second level Tube Button Label using the gimp.org webpage theme"
msgstr "Krouiñ ur skeudenn eus un eil skritell afell he stumm un duellenn en ur arverañ neuz pajenn web gimp.org"
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:5
msgid "Create an image of a third level Tube Button Label using the gimp.org webpage theme"
msgstr "Krouiñ ur skeudenn eus un teirvet skritell afell he stumm un duellenn en ur arverañ neuz pajenn web gimp.org"
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:16
msgid "T_ube Sub-Button Label..."
msgstr "Skritell isafell mod 'Korzenn'..."
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:19
msgid "Tub_e Sub-Sub-Button Label..."
msgstr "Skritell is-isafell mod 'Korzenn'..."
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:20
msgid "_General Tube Labels..."
msgstr "Skritell hollek mod 'Korzenn'..."
#: ../plug-ins/script-fu/scripts/gimp-labels.scm.h:21
msgid "_Tube Button Label..."
msgstr "Skritell afell mod 'Korzenn'..."
#: ../plug-ins/script-fu/scripts/gimp-online.scm.h:14
msgid "_Working with Digital Camera Photos"
msgstr "_Labourat gant ur benveg luc'hskeudennoù niverel"
#: ../plug-ins/script-fu/scripts/glossy.scm.h:1
msgid "Add gradients, patterns, shadows, and bump maps to the selected region (or alpha)"
@ -1898,6 +1863,42 @@ msgstr "Sepia"
msgid "_Old Photo..."
msgstr "Luc'hsk. k_ozh..."
#: ../plug-ins/script-fu/scripts/palette-export.scm.h:1
msgid "All characters in the name are either white-spaces or characters which can not appear in filenames."
msgstr "An holl arouezennoù en anv zo pe egoroù gwenn pe arouezennoù n'hallont ket bezañ en anvioù restr."
#: ../plug-ins/script-fu/scripts/palette-export.scm.h:2
msgid "Export the active palette as a CSS stylesheet with the color entry name as their class name, and the color itself as the color attribute"
msgstr "Ezporzhiañ al livaoueg oberiant evel ur follennad stil gant anv enankañ al liv evel o anv rummad, hag al liv e-unan evel doareenn al liv"
#: ../plug-ins/script-fu/scripts/palette-export.scm.h:3
msgid "Export the active palette as a PHP dictionary (name => color)"
msgstr "Ezporzhiañ al livaoueg oberiant evel ur geriadur PHP (anv => liv)"
#: ../plug-ins/script-fu/scripts/palette-export.scm.h:4
msgid "Export the active palette as a Python dictionary (name: color)"
msgstr "Ezporzhiañ al livaoueg oberiant evel ur geriadur Python (anv: liv)"
#: ../plug-ins/script-fu/scripts/palette-export.scm.h:5
msgid "Export the active palette as a java.util.Hashtable<String, Color>"
msgstr "Ezporzhiañ al livaoueg oberiant evel ur java.util.Hashtable<Hedad, Liv>"
#: ../plug-ins/script-fu/scripts/palette-export.scm.h:6
msgid "Folder for the output file"
msgstr "Teuliad evit ar restr ec'hankañ"
#: ../plug-ins/script-fu/scripts/palette-export.scm.h:7
msgid "The filename you entered is not a suitable name for a file."
msgstr "An anv restr enanket ganeoc'h n'eo ket un anv dereat evit ur restr."
#: ../plug-ins/script-fu/scripts/palette-export.scm.h:8
msgid "The name of the file to create (if a file with this name already exist, it will be replaced)"
msgstr "An anv evit ar restr da grouiñ (mar bez ur restr gant an anv-mañ endeo e vo amsavet)"
#: ../plug-ins/script-fu/scripts/palette-export.scm.h:9
msgid "Write all the colors in a palette to a text file, one hexadecimal value per line (no names)"
msgstr "Skrivañ an holl livioù war al livaoueg en ur restr mod testenn, ur werzh c'hwezekredel gant pep linenn (anv ebet)"
#: ../plug-ins/script-fu/scripts/paste-as-brush.scm.h:1
#: ../plug-ins/script-fu/scripts/select-to-brush.scm.h:1
msgid "Brush name"
@ -1921,7 +1922,7 @@ msgstr "Pegañ ar golverad e-barzh ur broust nevez"
#: ../plug-ins/script-fu/scripts/paste-as-brush.scm.h:6
#: ../plug-ins/script-fu/scripts/paste-as-pattern.scm.h:5
msgid "There is no image data in the clipboard to paste."
msgstr "N'eus tamm roadenn skeudenn ebet er golver da begañ."
msgstr "N'eus roadenn skeudenn ebet er golver da begañ."
#: ../plug-ins/script-fu/scripts/paste-as-pattern.scm.h:2
msgid "New _Pattern..."
@ -1962,7 +1963,7 @@ msgstr "_Diarsell.."
#: ../plug-ins/script-fu/scripts/predator.scm.h:1
msgid "Add a 'Predator' effect to the selected region (or alpha)"
msgstr "Ouzhpennañ un efed mod 'Predator' d'ar maez diuzet (pe d'an alfa)"
msgstr "Ouzhpennañ un efed 'Predator' d'ar maez diuzet (pe d'an alfa)"
#: ../plug-ins/script-fu/scripts/predator.scm.h:2
msgid "Edge amount"
@ -2042,7 +2043,7 @@ msgstr "Munut e kreiz"
#: ../plug-ins/script-fu/scripts/rendermap.scm.h:8
msgid "Render _Map..."
msgstr "Deo_uez..."
msgstr "Glennad an deo_uez..."
#: ../plug-ins/script-fu/scripts/rendermap.scm.h:9
msgid "Tile"
@ -2156,7 +2157,7 @@ msgstr "Skin (%)"
#: ../plug-ins/script-fu/scripts/selection-round.scm.h:4
msgid "Round the corners of the current selection"
msgstr "Rontaat kornioù an diuzad bremanel"
msgstr "Rontaat kornioù an diuzad bremanel."
#: ../plug-ins/script-fu/scripts/selection-round.scm.h:5
msgid "Rounded R_ectangle..."
@ -2164,7 +2165,7 @@ msgstr "R_eizhkorn rontaet..."
#: ../plug-ins/script-fu/scripts/slide.scm.h:1
msgid "Add a slide-film like frame, sprocket holes, and labels to an image"
msgstr "Ouzhpennañ ur frammad heñvel ouzh ur film, toulloù dibunañ ha skritelloù, d'ar skeudenn"
msgstr "Ouzhpennañ ur frammad heñvel ouzh ur film, toulloù dibunañ ha skritelloù d'ar skeudenn"
#: ../plug-ins/script-fu/scripts/slide.scm.h:3
msgid "Font color"
@ -2216,7 +2217,7 @@ msgstr "_Boull o treiñ..."
#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:1
msgid "Add Spirographs, Epitrochoids, and Lissajous Curves to the current layer"
msgstr "Ouzhpennañ krommennoù epitrokoidel, Lissajous ha mod spirograf d'an dreuzfollennad vremanel"
msgstr "Ouzhpennañ krommennoù epitrokoidel, Lissajous ha mod spirograf d'an dreuzfollenn vremanel"
#: ../plug-ins/script-fu/scripts/spyrogimp.scm.h:2
msgid "Airbrush"
@ -2575,62 +2576,6 @@ msgstr "Hed an neudenn"
msgid "_Weave..."
msgstr "_Plezhañ..."
#: ../plug-ins/script-fu/scripts/web-browser.scm.h:1
msgid "Bookmark to the GIMP web site"
msgstr "Merker war lec'hienn web GIMP"
#: ../plug-ins/script-fu/scripts/web-browser.scm.h:2
msgid "Bookmark to the user manual"
msgstr "Merker war dornlevr an arveriad"
#: ../plug-ins/script-fu/scripts/web-browser.scm.h:3
msgid "Create and Use _Selections"
msgstr "Krouiñ hag arverañ diu_zadoù"
#: ../plug-ins/script-fu/scripts/web-browser.scm.h:4
msgid "Create, Open and Save _Files"
msgstr "Krouiñ, digeriñ hag enrollañ _restroù"
#: ../plug-ins/script-fu/scripts/web-browser.scm.h:5
msgid "Drawing _Simple Objects"
msgstr "Tresañ er_gorennoù eeun"
#: ../plug-ins/script-fu/scripts/web-browser.scm.h:6
msgid "How to Use _Dialogs"
msgstr "Penaos arverañ ar _boestadoù emziviz"
#: ../plug-ins/script-fu/scripts/web-browser.scm.h:7
msgid "Plug-in _Registry"
msgstr "Marilh an enlugelladoù"
#: ../plug-ins/script-fu/scripts/web-browser.scm.h:8
msgid "Using _Paths"
msgstr "Arverañ _treugoù"
#: ../plug-ins/script-fu/scripts/web-browser.scm.h:9
msgid "_Basic Concepts"
msgstr "Ergrafoù dia_zez"
#: ../plug-ins/script-fu/scripts/web-browser.scm.h:10
msgid "_Developer Web Site"
msgstr "Load internet an diorrenourion"
#: ../plug-ins/script-fu/scripts/web-browser.scm.h:11
msgid "_Main Web Site"
msgstr "L_oad internet pennañ"
#: ../plug-ins/script-fu/scripts/web-browser.scm.h:12
msgid "_Preparing your Images for the Web"
msgstr "_Prientiñ ho skeudenn evit ar web"
#: ../plug-ins/script-fu/scripts/web-browser.scm.h:13
msgid "_User Manual Web Site"
msgstr "L_ec'hienn internet dornlevr an arveriad"
#: ../plug-ins/script-fu/scripts/web-browser.scm.h:14
msgid "_Working with Digital Camera Photos"
msgstr "_Labourat gant ur benveg luc'hskeudennoù niverel"
#: ../plug-ins/script-fu/scripts/xach-effect.scm.h:1
msgid "Add a subtle translucent 3D effect to the selected region (or alpha)"
msgstr "Ouzhpennañ un efed 3M treuzwelus soutil war ar maez bet diuzet (pe d'an alfa)"
@ -2663,6 +2608,10 @@ msgstr "Linkañ X al lintr"
msgid "Highlight Y offset"
msgstr "Linkañ Y al lintr"
#: ../plug-ins/script-fu/scripts/xach-effect.scm.h:9
msgid "Highlight color"
msgstr "Liv flamm"
#: ../plug-ins/script-fu/scripts/xach-effect.scm.h:10
msgid "Highlight opacity"
msgstr "Demerez al lintr"
@ -2671,3 +2620,145 @@ msgstr "Demerez al lintr"
msgid "_Xach-Effect..."
msgstr "Efed _Xach..."
#~ msgid "_Misc"
#~ msgstr "_Liesseurt"
#~ msgid "_Utilities"
#~ msgstr "_Goulevioù mavek"
#~ msgid "An_imation"
#~ msgstr "Bl_iverezh"
#~ msgid "_Animators"
#~ msgstr "Bli_vourion"
#~ msgid "_Artistic"
#~ msgstr "_Arzel"
#~ msgid "_Blur"
#~ msgstr "_Ruzed"
#~ msgid "_Decor"
#~ msgstr "_Kinkladur"
#~ msgid "_Effects"
#~ msgstr "_Efedoù"
#~ msgid "En_hance"
#~ msgstr "Gw_ellekaat"
#~ msgid "_Light and Shadow"
#~ msgstr "Skêrijenn ha _disheol"
#~ msgid "S_hadow"
#~ msgstr "Dis_heol"
#~ msgid "_Render"
#~ msgstr "_Deouez"
#~ msgid "_Alchemy"
#~ msgstr "_Alkimiezh"
#~ msgid "Autocrop"
#~ msgstr "Didroc'hañ emgefreek"
#~ msgid "Create an image of a large header using the gimp.org webpage theme"
#~ msgstr ""
#~ "Krouiñ ur skeudenn eus un talbenn bras en ur arverañ neuz pajenn web gimp."
#~ "org"
#~ msgid "Create an image of a small header using the gimp.org webpage theme"
#~ msgstr ""
#~ "Krouiñ ur skeudenn eus un talbenn bihan en ur arverañ neuz pajenn web "
#~ "gimp.org"
#~ msgid "Dark color"
#~ msgstr "Liv teñval"
#~ msgid "Index image"
#~ msgstr "Skeudenn ibil"
#~ msgid "Number of colors"
#~ msgstr "Niver a livioù"
#~ msgid "Remove background"
#~ msgstr "Dilemel an drekva"
#~ msgid "Select-by-color threshold"
#~ msgstr "Gwehin diuzañ dre liv"
#~ msgid "Shadow color"
#~ msgstr "Liv an disheol"
#~ msgid "_Big Header..."
#~ msgstr "Tal_benn bras..."
#~ msgid "_Small Header..."
#~ msgstr "Talbenn bi_han..."
#~ msgid ""
#~ "Create an image of a Tube Button Label Header using the gimp.org webpage "
#~ "theme"
#~ msgstr ""
#~ "Krouiñ ur skeudenn eus un talbenn afell e stumm un duellenn en ur arverañ "
#~ "neuz pajenn web gimp.org"
#~ msgid ""
#~ "Create an image of a Tube Button Label using the gimp.org webpage theme"
#~ msgstr ""
#~ "Krouiñ ur skeudenn eus ur skritell afell he stumm un duellenn en ur "
#~ "arverañ neuz pajenn web gimp.org"
#~ msgid ""
#~ "Create an image of a second level Tube Button Label using the gimp.org "
#~ "webpage theme"
#~ msgstr ""
#~ "Krouiñ ur skeudenn eus un eil skritell afell he stumm un duellenn en ur "
#~ "arverañ neuz pajenn web gimp.org"
#~ msgid ""
#~ "Create an image of a third level Tube Button Label using the gimp.org "
#~ "webpage theme"
#~ msgstr ""
#~ "Krouiñ ur skeudenn eus un teirvet skritell afell he stumm un duellenn en "
#~ "ur arverañ neuz pajenn web gimp.org"
#~ msgid "T_ube Sub-Button Label..."
#~ msgstr "Skritell isafell mod 'Korzenn'..."
#~ msgid "Tub_e Sub-Sub-Button Label..."
#~ msgstr "Skritell is-isafell mod 'Korzenn'..."
#~ msgid "_General Tube Labels..."
#~ msgstr "Skritell hollek mod 'Korzenn'..."
#~ msgid "_Tube Button Label..."
#~ msgstr "Skritell afell mod 'Korzenn'..."
#~ msgid "Effect size (pixels * 3)"
#~ msgstr "Ment an efed (pikselioù * 3)"
#~ msgid "BG opacity"
#~ msgstr "Demerez an DV"
#~ msgid "Create a graph of the Hue, Saturation, and Value distributions"
#~ msgstr ""
#~ "Krouiñ ur c'hevregad eus dasparzhadurioù an arliv, ar peurvec'hiañ hag al "
#~ "lintr"
#~ msgid "Draw _HSV Graph..."
#~ msgstr "Tresañ kevregad _APL..."
#~ msgid "End X"
#~ msgstr "Dibenn X"
#~ msgid "End Y"
#~ msgstr "Dibenn Y"
#~ msgid "From top-left to bottom-right"
#~ msgstr "Eus an tu kleiz e lein d'an tu dehou en traoñ"
#~ msgid "Graph scale"
#~ msgstr "Skeul ar c'hevregad"
#~ msgid "Start X"
#~ msgstr "Derou X"
#~ msgid "Start Y"
#~ msgstr "Derou Y"
#~ msgid "Use selection bounds instead of values below"
#~ msgstr "Arverañ bevennoù an diuzad e-lec'h re amañ dindan"
#~ msgid "Effect size (pixels * 5)"
#~ msgstr "Ment an efed (pikselioù * 5)"
#~ msgid "Create a simple sphere with a drop shadow"
#~ msgstr "Krouiñ ur pelenn eeun gant un disheol bannet"
#~ msgid "Lighting (degrees)"
#~ msgstr "Lintr (derezioù)"
#~ msgid "Radius (pixels)"
#~ msgstr "Skin (pikselioù)"
#~ msgid "Sphere color"
#~ msgstr "Liv ar bellenn"
#~ msgid "_Sphere..."
#~ msgstr "_Pellenn..."
#~ msgid "Burst color"
#~ msgstr "Liv tarzhañ"
#~ msgid "Create a logo using a starburst gradient"
#~ msgstr "Krouiñ ur siell oc'h arverañ ilrezenn ur steredenn o tarzhañ"
#~ msgid "Effect size (pixels * 30)"
#~ msgstr "Ment an efed (pikselioù * 30)"
#~ msgid ""
#~ "Fill the selected region (or alpha) with a starburst gradient and add a "
#~ "shadow"
#~ msgstr ""
#~ "Leuniañ ar maez diuzet (pa an alfa) gant ilrezenn ur steredenn o tarzhañ "
#~ "hag ouzhpennañ un disheol"
#~ msgid "Starb_urst..."
#~ msgstr "Tarzh St_ered..."
#~ msgid "Effect size (pixels * 4)"
#~ msgstr "Ment an efed (pikselioù * 4)"
#~ msgid ""
#~ "Fill the selected region (or alpha) with a rock-like texture, a nova "
#~ "glow, and shadow"
#~ msgstr ""
#~ "Leuniañ ar maez diuzet (pe an alfa) gant ur wiadezh heñvel ouzh maen, ur "
#~ "skleur nova ha disheol"

View File

@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: gimp 2.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-08-03 17:48+0200\n"
"PO-Revision-Date: 2010-08-03 17:47+0200\n"
"PO-Revision-Date: 2010-08-27 11:26+0200\n"
"Last-Translator: Marco Ciampa <ciampix@libero.it>\n"
"Language-Team: gimp.linux.it\n"
"MIME-Version: 1.0\n"
@ -1674,7 +1674,7 @@ msgstr ""
#: ../plug-ins/script-fu/scripts/gradient-bevel-logo.scm.h:3
msgid "Bevel height (sharpness)"
msgstr "Altezza rilievo (definizione)"
msgstr "Altezza rilievo (nitidezza)"
#: ../plug-ins/script-fu/scripts/gradient-bevel-logo.scm.h:5
#: ../plug-ins/script-fu/scripts/t-o-p-logo.scm.h:4
@ -1851,7 +1851,7 @@ msgstr "Casualità"
#: ../plug-ins/script-fu/scripts/line-nova.scm.h:6
msgid "Sharpness (degrees)"
msgstr "Affilatura (gradi)"
msgstr "Nitidezza (gradi)"
#: ../plug-ins/script-fu/scripts/mkbrush.scm.h:1
msgid "Create a rectangular brush"

13
po-tags/POTFILES.skip Normal file
View File

@ -0,0 +1,13 @@
app
data/tips
desktop
desktop/gimp.desktop.in
libgimp
libgimpbase
libgimpconfig
libgimpmodule
libgimpthumb
libgimpwidgets
modules
plug-ins
tools

2026
po/br.po

File diff suppressed because it is too large Load Diff

5362
po/es.po

File diff suppressed because it is too large Load Diff

View File

@ -722,15 +722,203 @@ CODE
);
}
sub image_get_layer_position {
$blurb = 'Returns the position of the layer in the layer stack.';
sub image_get_item_position {
$blurb = 'Returns the position of the item in its level of its item tree.';
$help = <<'HELP';
This procedure determines the position of the specified layer in the
images layer stack. If the layer doesn't exist in the image, an error
is returned.
This procedure determines the position of the specified item in its
level in its item tree in the image. If the item doesn't exist in the
image, or the item is not part of an item tree, an error is returned.
HELP
&mitch_pdb_misc('2010', '2.8');
@inargs = (
{ name => 'image', type => 'image',
desc => 'The image' },
{ name => 'item', type => 'item',
desc => 'The item' }
);
@outargs = (
{ name => 'position', type => 'int32',
desc => "The position of the item in its level in the item tree" }
);
%invoke = (
code => <<'CODE'
{
if (gimp_pdb_item_is_in_tree (item, image, FALSE, error))
position = gimp_item_get_index (item);
else
success = FALSE;
}
CODE
);
}
sub image_raise_item {
$blurb = "Raise the specified item in its level in its item tree";
$help = <<'HELP';
This procedure raises the specified item one step in the item tree.
The procecure call will fail if there is no item above it.
HELP
&mitch_pdb_misc('2010', '2.8');
@inargs = (
{ name => 'image', type => 'image',
desc => 'The image' },
{ name => 'item', type => 'item',
desc => 'The item to raise' }
);
%invoke = (
code => <<'CODE'
{
if (gimp_pdb_item_is_in_tree (item, image, FALSE, error))
success = gimp_image_raise_item (image, item, error);
else
success = FALSE;
}
CODE
);
}
sub image_lower_item {
$blurb = "Lower the specified item in its level in its item tree";
$help = <<'HELP';
This procedure lowers the specified item one step in the item tree.
The procecure call will fail if there is no item below it.
HELP
&mitch_pdb_misc('2010', '2.8');
@inargs = (
{ name => 'image', type => 'image',
desc => 'The image' },
{ name => 'item', type => 'item',
desc => 'The item to lower' }
);
%invoke = (
code => <<'CODE'
{
if (gimp_pdb_item_is_in_tree (item, image, FALSE, error))
success = gimp_image_lower_item (image, item, error);
else
success = FALSE;
}
CODE
);
}
sub image_raise_item_to_top {
$blurb = <<'BLURB';
Raise the specified item to the top of its level in its item tree
BLURB
$help = <<'HELP';
This procedure raises the specified item to top of its level in the
item tree. It will not move the item if there is no item above it.
HELP
&mitch_pdb_misc('2010', '2.8');
@inargs = (
{ name => 'image', type => 'image',
desc => 'The image' },
{ name => 'item', type => 'item',
desc => 'The item to raise to top' }
);
%invoke = (
code => <<'CODE'
{
if (gimp_pdb_item_is_in_tree (item, image, FALSE, error))
success = gimp_image_raise_item_to_top (image, item);
else
success = FALSE;
}
CODE
);
}
sub image_lower_item_to_bottom {
$blurb = <<'BLURB';
Lower the specified item to the bottom of its level in its item tree
BLURB
$help = <<'HELP';
This procedure lowers the specified item to bottom of its level in the
item tree. It will not move the layer if there is no layer below it.
HELP
&mitch_pdb_misc('2010', '2.8');
@inargs = (
{ name => 'image', type => 'image',
desc => 'The image' },
{ name => 'item', type => 'item',
desc => 'The item to lower to bottom' }
);
%invoke = (
code => <<'CODE'
{
if (gimp_pdb_item_is_in_tree (item, image, FALSE, error))
success = gimp_image_lower_item_to_bottom (image, item);
else
success = FALSE;
}
CODE
);
}
sub image_reorder_item {
$blurb = "Reorder the specified item within its item tree";
$help = <<'HELP';
This procedure reorders the specified item within its item tree.
HELP
&mitch_pdb_misc('2010', '2.8');
@inargs = (
{ name => 'image', type => 'image',
desc => 'The image' },
{ name => 'item', type => 'item',
desc => 'The item to reorder' },
{ name => 'parent', type => 'item',
desc => 'The new parent item' },
{ name => 'position', type => 'int32',
desc => 'The new position of the item' }
);
%invoke = (
code => <<'CODE'
{
if (gimp_pdb_item_is_in_tree (item, image, FALSE, error) &&
(parent == NULL ||
(gimp_pdb_item_is_in_same_tree (item, parent, image, error) &&
gimp_pdb_item_is_group (parent, error) &&
gimp_pdb_item_is_not_ancestor (item, parent, error))))
{
success = gimp_image_reorder_item (image, item, parent, position,
TRUE, NULL);
}
else
success = FALSE;
}
CODE
);
}
sub image_get_layer_position {
&std_pdb_deprecated('gimp-image-get-item-position');
&simon_pdb_misc('2006', '2.4');
@inargs = (
@ -761,14 +949,7 @@ CODE
}
sub image_raise_layer {
$blurb = "Raise the specified layer in the image's layer stack";
$help = <<'HELP';
This procedure raises the specified layer one step in the existing layer stack.
The procecure call will fail if there is no layer above it.
HELP
&std_pdb_misc;
&std_pdb_deprecated('gimp-image-raise-item');
@inargs = (
{ name => 'image', type => 'image',
@ -790,14 +971,7 @@ CODE
}
sub image_lower_layer {
$blurb = "Lower the specified layer in the image's layer stack";
$help = <<'HELP';
This procedure lowers the specified layer one step in the existing layer stack.
The procecure call will fail if there is no layer below it.
HELP
&std_pdb_misc;
&std_pdb_deprecated('gimp-image-lower-item');
@inargs = (
{ name => 'image', type => 'image',
@ -819,17 +993,7 @@ CODE
}
sub image_raise_layer_to_top {
$blurb = <<'BLURB';
Raise the specified layer in the image's layer stack to top of stack
BLURB
$help = <<'HELP';
This procedure raises the specified layer to top of the existing layer stack.
It will not move the layer if there is no layer above it.
HELP
&wolfgang_pdb_misc('1998');
$author .= ", Sven Neumann";
&std_pdb_deprecated('gimp-image-raise-item-to-top');
@inargs = (
{ name => 'image', type => 'image',
@ -851,17 +1015,7 @@ CODE
}
sub image_lower_layer_to_bottom {
$blurb = <<'BLURB';
Lower the specified layer in the image's layer stack to bottom of stack
BLURB
$help = <<'HELP';
This procedure lowers the specified layer to bottom of the existing layer stack.
It will not move the layer if there is no layer below it.
HELP
&wolfgang_pdb_misc('1998');
$author .= ", Sven Neumann";
&std_pdb_deprecated('gimp-image-lower-item-to-bottom');
@inargs = (
{ name => 'image', type => 'image',
@ -1128,14 +1282,7 @@ CODE
}
sub image_get_channel_position {
$blurb = 'Returns the position of the channel in the channel stack.';
$help = <<'HELP';
This procedure determines the position of the specified channel in
the images channel stack. If the channel doesn't exist in the image,
an error is returned.
HELP
&std_pdb_deprecated('gimp-image-get-item-position');
&simon_pdb_misc('2006', '2.4');
@inargs = (
@ -1166,15 +1313,7 @@ CODE
}
sub image_raise_channel {
$blurb = "Raise the specified channel in the image's channel stack";
$help = <<'HELP';
This procedure raises the specified channel one step in the existing
channel stack. The procecure call will fail if there is no channel
above it.
HELP
&std_pdb_misc;
&std_pdb_deprecated('gimp-image-raise-item');
@inargs = (
{ name => 'image', type => 'image',
@ -1196,15 +1335,7 @@ CODE
}
sub image_lower_channel {
$blurb = "Lower the specified channel in the image's channel stack";
$help = <<'HELP';
This procedure lowers the specified channel one step in the existing
channel stack. The procecure call will fail if there is no channel
below it.
HELP
&std_pdb_misc;
&std_pdb_deprecated('gimp-image-lower-item');
@inargs = (
{ name => 'image', type => 'image',
@ -1358,14 +1489,7 @@ CODE
}
sub image_get_vectors_position {
$blurb = 'Returns the position of the vectors object in the vectors objects stack.';
$help = <<'HELP';
This procedure determines the position of the specified vectors object in the
images vectors object stack. If the vectors object doesn't exist in the image,
an error is returned.
HELP
&std_pdb_deprecated('gimp-image-get-item-position');
&simon_pdb_misc('2006', '2.4');
@inargs = (
@ -1396,14 +1520,7 @@ CODE
}
sub image_raise_vectors {
$blurb = "Raise the specified vectors in the image's vectors stack";
$help = <<'HELP';
This procedure raises the specified vectors one step in the existing
vectors stack. The procecure call will fail if there is no vectors
above it.
HELP
&std_pdb_deprecated('gimp-image-raise-item');
&simon_pdb_misc('2005', '2.4');
@inargs = (
@ -1426,14 +1543,7 @@ CODE
}
sub image_lower_vectors {
$blurb = "Lower the specified vectors in the image's vectors stack";
$help = <<'HELP';
This procedure lowers the specified vectors one step in the existing
vectors stack. The procecure call will fail if there is no vectors
below it.
HELP
&std_pdb_deprecated('gimp-image-lower-item');
&simon_pdb_misc('2005', '2.4');
@inargs = (
@ -1456,16 +1566,7 @@ CODE
}
sub image_raise_vectors_to_top {
$blurb = <<'BLURB';
Raise the specified vectors in the image's vectors stack to top of stack
BLURB
$help = <<'HELP';
This procedure raises the specified vectors to top of the existing
vectors stack. It will not move the vectors if there is no vectors
above it.
HELP
&std_pdb_deprecated('gimp-image-raise-item-to-top');
&simon_pdb_misc('2005', '2.4');
@inargs = (
@ -1488,16 +1589,7 @@ CODE
}
sub image_lower_vectors_to_bottom {
$blurb = <<'BLURB';
Lower the specified vectors in the image's vectors stack to bottom of stack
BLURB
$help = <<'HELP';
This procedure lowers the specified vectors to bottom of the existing
vectors stack. It will not move the vectors if there is no vectors
below it.
HELP
&std_pdb_deprecated('gimp-image-lower-item-to-bottom');
&simon_pdb_misc('2005', '2.4');
@inargs = (
@ -2725,13 +2817,17 @@ CODE
image_pick_color
image_pick_correlate_layer
image_add_layer image_remove_layer
image_add_channel image_remove_channel
image_add_vectors image_remove_vectors
image_get_item_position
image_raise_item image_lower_item
image_raise_item_to_top image_lower_item_to_bottom
image_reorder_item
image_get_layer_position
image_raise_layer image_lower_layer
image_raise_layer_to_top image_lower_layer_to_bottom
image_add_channel image_remove_channel
image_get_channel_position
image_raise_channel image_lower_channel
image_add_vectors image_remove_vectors
image_get_vectors_position
image_raise_vectors image_lower_vectors
image_raise_vectors_to_top image_lower_vectors_to_bottom
@ -2756,7 +2852,7 @@ CODE
image_get_channel_by_tattoo
image_get_vectors_by_tattoo);
%exports = (app => [@procs], lib => [@procs[0..46,49..77]]);
%exports = (app => [@procs], lib => [@procs[0..52,55..83]]);
$desc = 'Image';
$doc_title = 'gimpimage';

View File

@ -281,6 +281,117 @@ CODE
);
}
sub item_is_group {
$blurb = 'Returns whether the item is a group item.';
$help = <<HELP;
This procedure returns TRUE if the specified item is a group item which
can have children.
HELP
&mitch_pdb_misc('2010', '2.8');
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' }
);
@outargs = (
{ name => 'group', type => 'boolean',
desc => 'TRUE if the item is a group, FALSE otherwise' }
);
%invoke = (
code => <<'CODE'
{
group = (gimp_viewable_get_children (GIMP_VIEWABLE (item)) != NULL);
}
CODE
);
}
sub item_get_parent {
$blurb = "Returns the item's parent item.";
$help = <<HELP;
This procedure returns the item's parent item, if any.
HELP
&mitch_pdb_misc('2010', '2.8');
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' }
);
@outargs = (
{ name => 'parent', type => 'item',
desc => "The item's parent item" }
);
%invoke = (
code => <<'CODE'
{
parent = gimp_item_get_parent (item);
}
CODE
);
}
sub item_get_children {
$blurb = "Returns the item's list of children.";
$help = <<HELP;
This procedure returns the list of items which are children of the specified
item. The order is topmost to bottommost.
HELP
&mitch_pdb_misc('2010', '2.8');
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' }
);
@outargs = (
{ name => 'child_ids', type => 'int32array',
desc => "The item's list of children",
array => { name => 'num_children',
desc => "The item's number of children" } }
);
%invoke = (
code => <<'CODE'
{
GimpContainer *children = gimp_viewable_get_children (GIMP_VIEWABLE (item));
if (children)
{
num_children = gimp_container_get_n_children (children);
if (num_children)
{
GList *list;
gint i;
child_ids = g_new (gint32, num_children);
for (list = GIMP_LIST (children)->list, i = 0;
list;
list = g_list_next (list), i++)
{
child_ids[i] = gimp_item_get_ID (GIMP_ITEM (list->data));
}
}
}
else
success = FALSE;
}
CODE
);
}
sub item_get_name {
$blurb = "Get the name of the specified item.";
@ -544,6 +655,7 @@ CODE
}
@headers = qw("core/gimplayermask.h"
"core/gimplist.h"
"core/gimpselection.h"
"text/gimptextlayer.h"
"vectors/gimpvectors.h"
@ -559,6 +671,9 @@ CODE
item_is_layer_mask
item_is_selection
item_is_vectors
item_is_group
item_get_parent
item_get_children
item_get_name item_set_name
item_get_visible item_set_visible
item_get_linked item_set_linked