/* | |
* Copyright 2010 Mario Zechner (contact@badlogicgames.com), Nathan Sweet (admin@esotericsoftware.com) | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the | |
* License. You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" | |
* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language | |
* governing permissions and limitations under the License. | |
*/ | |
#ifndef __GDX2D__ | |
#define __GDX2D__ | |
#include <stdint.h> | |
#ifndef NOJNI | |
#include <jni.h> | |
#else | |
#define JNIEXPORT | |
#endif | |
#ifdef __cplusplus | |
extern "C" { | |
#endif | |
/** | |
* pixmap formats, components are laid out in memory | |
* in the order they appear in the constant name. E.g. | |
* GDX_FORMAT_RGB => pixmap[0] = r, pixmap[1] = g, pixmap[2] = b. | |
* Components are 8-bit each except for RGB565 and RGBA4444 which | |
* take up two bytes each. The order of bytes is machine dependent | |
* within a short the high order byte holds r and the first half of g | |
* the low order byte holds the lower half of g and b as well as a | |
* if the format is RGBA4444 | |
*/ | |
#define GDX2D_FORMAT_ALPHA 1 | |
#define GDX2D_FORMAT_LUMINANCE_ALPHA 2 | |
#define GDX2D_FORMAT_RGB888 3 | |
#define GDX2D_FORMAT_RGBA8888 4 | |
#define GDX2D_FORMAT_RGB565 5 | |
#define GDX2D_FORMAT_RGBA4444 6 | |
/** | |
* blending modes, to be extended | |
*/ | |
#define GDX2D_BLEND_NONE 0 | |
#define GDX2D_BLEND_SRC_OVER 1 | |
/** | |
* scaling modes, to be extended | |
*/ | |
#define GDX2D_SCALE_NEAREST 0 | |
#define GDX2D_SCALE_BILINEAR 1 | |
/** | |
* simple pixmap struct holding the pixel data, | |
* the dimensions and the format of the pixmap. | |
* the format is one of the GDX2D_FORMAT_XXX constants. | |
*/ | |
typedef struct { | |
uint32_t width; | |
uint32_t height; | |
uint32_t format; | |
const unsigned char* pixels; | |
} gdx2d_pixmap; | |
JNIEXPORT gdx2d_pixmap* gdx2d_load (const unsigned char *buffer, uint32_t len); | |
JNIEXPORT gdx2d_pixmap* gdx2d_new (uint32_t width, uint32_t height, uint32_t format); | |
JNIEXPORT void gdx2d_free (const gdx2d_pixmap* pixmap); | |
JNIEXPORT void gdx2d_set_blend (uint32_t blend); | |
JNIEXPORT void gdx2d_set_scale (uint32_t scale); | |
JNIEXPORT const char* gdx2d_get_failure_reason(void); | |
JNIEXPORT void gdx2d_clear (const gdx2d_pixmap* pixmap, uint32_t col); | |
JNIEXPORT void gdx2d_set_pixel (const gdx2d_pixmap* pixmap, int32_t x, int32_t y, uint32_t col); | |
JNIEXPORT uint32_t gdx2d_get_pixel (const gdx2d_pixmap* pixmap, int32_t x, int32_t y); | |
JNIEXPORT void gdx2d_draw_line (const gdx2d_pixmap* pixmap, int32_t x, int32_t y, int32_t x2, int32_t y2, uint32_t col); | |
JNIEXPORT void gdx2d_draw_rect (const gdx2d_pixmap* pixmap, int32_t x, int32_t y, uint32_t width, uint32_t height, uint32_t col); | |
JNIEXPORT void gdx2d_draw_circle (const gdx2d_pixmap* pixmap, int32_t x, int32_t y, uint32_t radius, uint32_t col); | |
JNIEXPORT void gdx2d_fill_rect (const gdx2d_pixmap* pixmap, int32_t x, int32_t y, uint32_t width, uint32_t height, uint32_t col); | |
JNIEXPORT void gdx2d_fill_circle (const gdx2d_pixmap* pixmap, int32_t x, int32_t y, uint32_t radius, uint32_t col); | |
JNIEXPORT void gdx2d_fill_triangle(const gdx2d_pixmap* pixmap,int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t x3, int32_t y3, uint32_t col); | |
JNIEXPORT void gdx2d_draw_pixmap (const gdx2d_pixmap* src_pixmap, | |
const gdx2d_pixmap* dst_pixmap, | |
int32_t src_x, int32_t src_y, uint32_t src_width, uint32_t src_height, | |
int32_t dst_x, int32_t dst_y, uint32_t dst_width, uint32_t dst_height); | |
JNIEXPORT uint32_t gdx2d_bytes_per_pixel(uint32_t format); | |
#ifdef __cplusplus | |
} | |
#endif | |
#endif |