/*
* This file is part of N-point image deformation library.
*
* N-point image deformation library is free software: you can
* redistribute it and/or modify it under the terms of the
* GNU Lesser General Public License as published by
* the Free Software Foundation; either version 3 of the License,
* or (at your option) any later version.
*
* N-point image deformation library 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with N-point image deformation library.
* If not, see .
*
* Copyright (C) 2013 Marek Dvoroznak
*/
#ifndef __NPD_GRAPHICS_H__
#define __NPD_GRAPHICS_H__
#include "npd_common.h"
struct _NPDColor
{
union {
guint32 color;
struct {
guint8 r;
guint8 g;
guint8 b;
guint8 a;
};
};
};
typedef enum
{
NPD_BILINEAR_INTERPOLATION = 1,
NPD_ALPHA_BLENDING = 1 << 1
} NPDSettings;
void npd_create_model_from_image (NPDModel *model,
NPDImage *image,
gint width,
gint height,
gint position_x,
gint position_y,
gint square_size);
void npd_draw_model_into_image (NPDModel *model,
NPDImage *image);
void npd_draw_mesh (NPDModel *model,
NPDDisplay *display);
gboolean npd_is_color_transparent (NPDColor *color);
extern void (*npd_draw_line) (NPDDisplay *display,
gfloat x0,
gfloat y0,
gfloat x1,
gfloat y1);
extern void (*npd_process_pixel) (NPDImage *input_image,
gfloat ix,
gfloat iy,
NPDImage *output_image,
gfloat ox,
gfloat oy,
NPDSettings settings);
void npd_process_pixel_bilinear (NPDImage *input_image,
gfloat ix,
gfloat iy,
NPDImage *output_image,
gfloat ox,
gfloat oy,
NPDSettings settings);
extern void (*npd_get_pixel_color) (NPDImage *image,
gint x,
gint y,
NPDColor *color);
extern void (*npd_set_pixel_color) (NPDImage *image,
gint x,
gint y,
NPDColor *color);
#endif /*__NPD_GRAPHICS_H__ */