print-image-thumbnail.c [plain text]
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <sys/types.h>
#include <string.h>
#include <gimp-print-ui/gimp-print-ui.h>
#include "gimp-print-ui-internal.h"
typedef struct
{
const guchar *data;
gint w, h, bpp;
gint32 real_bpp;
} thumbnail_image_t;
static const char *Thumbnail_get_appname(stp_image_t *image);
static void Thumbnail_conclude(stp_image_t *image);
static stp_image_status_t Thumbnail_get_row(stp_image_t *image,
unsigned char *data,
size_t byte_limit, int row);
static int Thumbnail_height(stp_image_t *image);
static int Thumbnail_width(stp_image_t *image);
static void Thumbnail_reset(stp_image_t *image);
static void Thumbnail_init(stp_image_t *image);
static stp_image_t theImage =
{
Thumbnail_init,
Thumbnail_reset,
Thumbnail_width,
Thumbnail_height,
Thumbnail_get_row,
Thumbnail_get_appname,
Thumbnail_conclude,
NULL
};
stp_image_t *
stpui_image_thumbnail_new(const guchar *data, gint w, gint h, gint bpp)
{
thumbnail_image_t *im;
if (! theImage.rep)
theImage.rep = stp_malloc(sizeof(thumbnail_image_t));
im = (thumbnail_image_t *) (theImage.rep);
memset(im, 0, sizeof(thumbnail_image_t));
im->data = data;
im->w = w;
im->h = h;
im->bpp = bpp;
theImage.reset(&theImage);
return &theImage;
}
static int
Thumbnail_width(stp_image_t *image)
{
thumbnail_image_t *im = (thumbnail_image_t *) (image->rep);
return im->w;
}
static int
Thumbnail_height(stp_image_t *image)
{
thumbnail_image_t *im = (thumbnail_image_t *) (image->rep);
return im->h;
}
static stp_image_status_t
Thumbnail_get_row(stp_image_t *image, unsigned char *data,
size_t byte_limit, int row)
{
thumbnail_image_t *im = (thumbnail_image_t *) (image->rep);
const guchar *where = im->data + (row * im->w * im->bpp);
memcpy(data, where, im->w * im->bpp);
return STP_IMAGE_STATUS_OK;
}
static void
Thumbnail_init(stp_image_t *image)
{
}
static void
Thumbnail_reset(stp_image_t *image)
{
}
static void
Thumbnail_conclude(stp_image_t *image)
{
}
static const char *
Thumbnail_get_appname(stp_image_t *image)
{
static char pluginname[] = "Thumbnail V" VERSION " - " RELEASE_DATE;
return pluginname;
}