plug-ins/print/print.c added support for grayscale images so we don't need
2008-02-22 Sven Neumann <sven@gimp.org> * plug-ins/print/print.c * plug-ins/print/print-draw-page.c: added support for grayscale images so we don't need to go through an extra export step. svn path=/trunk/; revision=24947
This commit is contained in:

committed by
Sven Neumann

parent
8519952152
commit
7e9a5f7fe8
@ -1,3 +1,9 @@
|
|||||||
|
2008-02-22 Sven Neumann <sven@gimp.org>
|
||||||
|
|
||||||
|
* plug-ins/print/print.c
|
||||||
|
* plug-ins/print/print-draw-page.c: added support for grayscale
|
||||||
|
images so we don't need to go through an extra export step.
|
||||||
|
|
||||||
2008-02-22 Sven Neumann <sven@gimp.org>
|
2008-02-22 Sven Neumann <sven@gimp.org>
|
||||||
|
|
||||||
* plug-ins/print/print.c
|
* plug-ins/print/print.c
|
||||||
|
@ -29,6 +29,12 @@
|
|||||||
|
|
||||||
static cairo_surface_t * print_cairo_surface_from_drawable (gint32 drawable_ID);
|
static cairo_surface_t * print_cairo_surface_from_drawable (gint32 drawable_ID);
|
||||||
|
|
||||||
|
static inline void convert_from_gray (const guchar *src,
|
||||||
|
guchar *dest,
|
||||||
|
gint pixels);
|
||||||
|
static inline void convert_from_graya (const guchar *src,
|
||||||
|
guchar *dest,
|
||||||
|
gint pixels);
|
||||||
static inline void convert_from_rgb (const guchar *src,
|
static inline void convert_from_rgb (const guchar *src,
|
||||||
guchar *dest,
|
guchar *dest,
|
||||||
gint pixels);
|
gint pixels);
|
||||||
@ -110,6 +116,14 @@ print_cairo_surface_from_drawable (gint32 drawable_ID)
|
|||||||
{
|
{
|
||||||
switch (region.bpp)
|
switch (region.bpp)
|
||||||
{
|
{
|
||||||
|
case 1:
|
||||||
|
convert_from_gray (src, dest, region.w);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
convert_from_graya (src, dest, region.w);
|
||||||
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
convert_from_rgb (src, dest, region.w);
|
convert_from_rgb (src, dest, region.w);
|
||||||
break;
|
break;
|
||||||
@ -134,6 +148,34 @@ print_cairo_surface_from_drawable (gint32 drawable_ID)
|
|||||||
return surface;
|
return surface;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
convert_from_gray (const guchar *src,
|
||||||
|
guchar *dest,
|
||||||
|
gint pixels)
|
||||||
|
{
|
||||||
|
while (pixels--)
|
||||||
|
{
|
||||||
|
GIMP_CAIRO_RGB24_SET_PIXEL (dest, src[0], src[0], src[0]);
|
||||||
|
|
||||||
|
src += 1;
|
||||||
|
dest += 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
convert_from_graya (const guchar *src,
|
||||||
|
guchar *dest,
|
||||||
|
gint pixels)
|
||||||
|
{
|
||||||
|
while (pixels--)
|
||||||
|
{
|
||||||
|
GIMP_CAIRO_ARGB32_SET_PIXEL (dest, src[0], src[0], src[0], src[1]);
|
||||||
|
|
||||||
|
src += 2;
|
||||||
|
dest += 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
convert_from_rgb (const guchar *src,
|
convert_from_rgb (const guchar *src,
|
||||||
guchar *dest,
|
guchar *dest,
|
||||||
|
@ -194,6 +194,7 @@ print_image (gint32 image_ID,
|
|||||||
/* export the image */
|
/* export the image */
|
||||||
export = gimp_export_image (&image_ID, &drawable_ID, NULL,
|
export = gimp_export_image (&image_ID, &drawable_ID, NULL,
|
||||||
GIMP_EXPORT_CAN_HANDLE_RGB |
|
GIMP_EXPORT_CAN_HANDLE_RGB |
|
||||||
|
GIMP_EXPORT_CAN_HANDLE_GRAY |
|
||||||
GIMP_EXPORT_CAN_HANDLE_ALPHA);
|
GIMP_EXPORT_CAN_HANDLE_ALPHA);
|
||||||
|
|
||||||
if (export == GIMP_EXPORT_CANCEL)
|
if (export == GIMP_EXPORT_CANCEL)
|
||||||
|
Reference in New Issue
Block a user