165 lines
4.8 KiB
C++
165 lines
4.8 KiB
C++
#ifndef _LICE_EXTENDED_
|
|
#define _LICE_EXTENDED_
|
|
|
|
#include "lice.h"
|
|
|
|
#define DISABLE_LICE_EXTENSIONS
|
|
|
|
// stuff to pass to LICE_IBitmap::Extended
|
|
|
|
enum // IDs
|
|
{
|
|
LICE_EXT_SUPPORTS_ID, // data = ID, returns 1 if that extension ID is supported
|
|
LICE_EXT_CLEAR_ACCEL,
|
|
LICE_EXT_LINE_ACCEL,
|
|
LICE_EXT_FILLRECT_ACCEL,
|
|
LICE_EXT_DRAWCBEZIER_ACCEL,
|
|
LICE_EXT_DRAWGLYPH_ACCEL,
|
|
LICE_EXT_BLIT_ACCEL,
|
|
LICE_EXT_SCALEDBLIT_ACCEL,
|
|
LICE_EXT_GETFBOTEX_ACCEL, // if the bitmap is implemented as an openGL framebuffer object, get its texture backing store
|
|
LICE_EXT_DASHEDLINE_ACCEL,
|
|
LICE_EXT_GETPIXEL_ACCEL,
|
|
LICE_EXT_PUTPIXEL_ACCEL,
|
|
LICE_EXT_SETCLIP, // data == 0 to clear clip
|
|
LICE_EXT_WINDOW_BLIT,
|
|
LICE_EXT_FORGET, // optimizations can sometimes happen if a bitmap can be told it doesn't need to retain data after it's accessed
|
|
LICE_EXT_DRAWTRIANGLE_ACCEL,
|
|
};
|
|
|
|
struct LICE_Ext_Line_acceldata
|
|
{
|
|
float x1, y1, x2, y2;
|
|
LICE_pixel color;
|
|
float alpha;
|
|
int mode;
|
|
bool aa;
|
|
|
|
LICE_Ext_Line_acceldata(float _x1, float _y1, float _x2, float _y2, LICE_pixel _color, float _alpha, int _mode, bool _aa)
|
|
: x1(_x1), y1(_y1), x2(_x2), y2(_y2), color(_color), alpha(_alpha), mode(_mode), aa(_aa) {}
|
|
};
|
|
|
|
struct LICE_Ext_FillRect_acceldata
|
|
{
|
|
int x, y, w, h;
|
|
LICE_pixel color;
|
|
float alpha;
|
|
int mode;
|
|
|
|
LICE_Ext_FillRect_acceldata(int _x, int _y, int _w, int _h, LICE_pixel _color, float _alpha, int _mode)
|
|
: x(_x), y(_y), w(_w), h(_h), color(_color), alpha(_alpha), mode(_mode) {}
|
|
};
|
|
|
|
struct LICE_Ext_DrawCBezier_acceldata
|
|
{
|
|
float xstart, ystart, xctl1, yctl1, xctl2, yctl2, xend, yend;
|
|
LICE_pixel color;
|
|
float alpha;
|
|
int mode;
|
|
bool aa;
|
|
|
|
LICE_Ext_DrawCBezier_acceldata(float _xstart, float _ystart, float _xctl1, float _yctl1, float _xctl2, float _yctl2, float _xend, float _yend,
|
|
LICE_pixel _color, float _alpha, int _mode, bool _aa)
|
|
: xstart(_xstart), ystart(_ystart), xctl1(_xctl1), yctl1(_yctl1), xctl2(_xctl2), yctl2(_yctl2), xend(_xend), yend(_yend),
|
|
color(_color), alpha(_alpha), mode(_mode), aa(_aa) {}
|
|
};
|
|
|
|
struct LICE_Ext_DrawGlyph_acceldata
|
|
{
|
|
int x;
|
|
int y;
|
|
LICE_pixel color;
|
|
const LICE_pixel_chan* alphas;
|
|
int glyph_w, glyph_h;
|
|
float alpha;
|
|
int mode;
|
|
|
|
LICE_Ext_DrawGlyph_acceldata(int _x, int _y, LICE_pixel _color, LICE_pixel_chan* _alphas, int _glyph_w, int _glyph_h, float _alpha, int _mode)
|
|
: x(_x), y(_y), color(_color), alphas(_alphas), glyph_w(_glyph_w), glyph_h(_glyph_h), alpha(_alpha), mode(_mode) {}
|
|
};
|
|
|
|
struct LICE_Ext_Blit_acceldata
|
|
{
|
|
LICE_IBitmap* src;
|
|
int dstx, dsty, srcx, srcy, srcw, srch;
|
|
float alpha;
|
|
int mode;
|
|
|
|
LICE_Ext_Blit_acceldata(LICE_IBitmap* _src, int _dstx, int _dsty, int _srcx, int _srcy, int _srcw, int _srch, float _alpha, int _mode)
|
|
: src(_src), dstx(_dstx), dsty(_dsty), srcx(_srcx), srcy(_srcy), srcw(_srcw), srch(_srch), alpha(_alpha), mode(_mode) {}
|
|
};
|
|
|
|
struct LICE_Ext_ScaledBlit_acceldata
|
|
{
|
|
LICE_IBitmap* src;
|
|
int dstx, dsty, dstw, dsth;
|
|
float srcx, srcy, srcw, srch;
|
|
float alpha;
|
|
int mode;
|
|
|
|
LICE_Ext_ScaledBlit_acceldata(LICE_IBitmap* _src, int _dstx, int _dsty, int _dstw, int _dsth, float _srcx, float _srcy, float _srcw, float _srch, float _alpha, int _mode)
|
|
: src(_src), dstx(_dstx), dsty(_dsty), dstw(_dstw), dsth(_dsth), srcx(_srcx), srcy(_srcy), srcw(_srcw), srch(_srch), alpha(_alpha), mode(_mode) {}
|
|
};
|
|
|
|
struct LICE_Ext_DashedLine_acceldata
|
|
{
|
|
float x1, y1, x2, y2;
|
|
int pxon, pxoff;
|
|
LICE_pixel color;
|
|
float alpha;
|
|
int mode;
|
|
bool aa;
|
|
|
|
LICE_Ext_DashedLine_acceldata(float _x1, float _y1, float _x2, float _y2, int _pxon, int _pxoff, LICE_pixel _color, float _alpha, int _mode, bool _aa)
|
|
: x1(_x1), y1(_y1), x2(_x2), y2(_y2), pxon(_pxon), pxoff(_pxoff), color(_color), alpha(_alpha), mode(_mode), aa(_aa) {}
|
|
};
|
|
|
|
struct LICE_Ext_GetPixel_acceldata
|
|
{
|
|
int x, y;
|
|
LICE_pixel px; // return
|
|
|
|
LICE_Ext_GetPixel_acceldata(int _x, int _y)
|
|
: x(_x), y(_y), px(0) {}
|
|
};
|
|
|
|
struct LICE_Ext_PutPixel_acceldata
|
|
{
|
|
int x, y;
|
|
LICE_pixel color;
|
|
float alpha;
|
|
int mode;
|
|
|
|
LICE_Ext_PutPixel_acceldata(int _x, int _y, LICE_pixel _color, float _alpha, int _mode)
|
|
: x(_x), y(_y), color(_color), alpha(_alpha), mode(_mode) {}
|
|
};
|
|
|
|
struct LICE_Ext_SetClip_data
|
|
{
|
|
int x, y, w, h;
|
|
|
|
LICE_Ext_SetClip_data(int _x, int _y, int _w, int _h)
|
|
: x(_x), y(_y), w(_w), h(_h) {}
|
|
};
|
|
|
|
class pl_Mat;
|
|
|
|
struct LICE_Ext_DrawTriangle_acceldata
|
|
{
|
|
pl_Mat *mat; // will need to include plush.h to access this
|
|
double VertexShades[3][3]; // for solid element
|
|
float scrx[3], scry[3], scrz[3]; // scrz = 1/Zdist
|
|
double mapping_coords[2][3][2]; // [texture or texture2][vertex][uv]
|
|
};
|
|
|
|
struct LICE_Ext_WindowBlit_data
|
|
{
|
|
HWND hwnd;
|
|
int destx, desty, srcx, srcy, w, h;
|
|
|
|
LICE_Ext_WindowBlit_data(HWND _hwnd, int _destx, int _desty, int _srcx, int _srcy, int _w, int _h)
|
|
: hwnd(_hwnd), destx(_destx), desty(_desty), srcx(_srcx), srcy(_srcy), w(_w), h(_h) {}
|
|
};
|
|
|
|
#endif
|