Heffer.h
C++ header source for C++ graphics effects, 203 lines. Raw file
/*
Heffer - Lewpen's 2D graphics lib
Heffer.H
Deep Red/Lewpen
*/
#include <windows.h>
#ifndef __HEFFER_H
#define __HEFFER_H
//---- ERROR CONSTANTS -------------------------------------------------------//
#define HEFFER_STARTUP 0x00010000
#define HEFFER_SHUTDOWN 0x00020000
#define HEFFER_LOADBITMAPRESOURCE 0x00130000
#define HEFFER_LOADTARGARESOURCE 0x00140000
#define HEFFER_CREATEIMAGE 0x00150000
#define HEFFER_REGIONFROMIMAGE 0x00510000
#define HEFFER_FILTER_BLUR 0x00610000
#define HEFFER_CREATEIMAGE_ALPHAMASK 0x00710000
#define HEFFER_CREATEIMAGE_OUTERGLOW 0x00720000
#define HEFFER_LOADFONTRESOURCE 0x00910000
#define HEFFER_ERROR_LOADRESOURCE 0x00000001
#define HEFFER_ERROR_LOCKRESOURCE 0x00000002
#define HEFFER_ERROR_MAGIC 0x00000003
#define HEFFER_ERROR_NULLPTR 0x00000004
#define HEFFER_ERROR_FORMAT 0x00000005
#define HEFFER_ERROR_MALLOC 0x00000006
//---- COLOUR CONSTANTS ------------------------------------------------------//
#define HEFFER_WHITE 0x00FFFFFF
#define HEFFER_RED 0x00FF0000
#define HEFFER_GREEN 0x0000FF00
#define HEFFER_BLUE 0x000000FF
#define HEFFER_BGR(b, g, r) (((b)<<16)|((g)<<8)|(r))
#define HEFFER_ABGR(a, b, g, r) (((a)<<24)|((b)<<16)|((g)<<8)|(r))
//---- PUBLIC TYPES ----------------------------------------------------------//
//---- HEFFER_IMAGEFILE
#define HEFFER_IMAGEFILE_MAGIC (('H'<<24)|('i'<<16)|('f'<<8)|('1'))
typedef struct _HEFFER_IMAGEFILE {
DWORD magic;
WORD w, y;
} HEFFER_IMAGEFILE;
//---- HEFFER_IMAGE
typedef struct HEFFER_TAG_IMAGE {
int w, h, bufw;
int ox, oy;
char format, bpp;
int size;
unsigned char *buf;
int x1, y1, x2, y2; // Clipping region
char dirty_size;
char *dirty;
} HEFFER_IMAGE;
#define HEFFER_FORMAT_BGR24 0
#define HEFFER_FORMAT_ABGR32 2
#define HEFFER_BLIT_FULLSIZE 0x0000001
//---- HEFFER_FONT
typedef struct HEFFER_TAG_FONT {
int magic;
int flags;
int x[256], w[256], bufw, h;
unsigned char buf[1];
} HEFFER_FONT;
#define HEFFER_FONT_MAGIC (('k'<<24)+('t'<<16)+('2'<<8)+('y'))
#define HEFFER_ALIGN_LEFT 0x00000001
#define HEFFER_ALIGN_HCENTER 0x00000002
#define HEFFER_ALIGN_RIGHT 0x00000004
#define HEFFER_ALIGN_TOP 0x00000008
#define HEFFER_ALIGN_VCENTER 0x00000010
#define HEFFER_ALIGN_BOTTOM 0x00000020
#define HEFFER_UNICODE 0x80000000
//---- HEFFER_TRIANGLE
// X,Y,Z, Red,Green,Blue,Alpha, Texture U,Texture V, Diffuse,Specular;
typedef struct _HEFFER_TRIANGLE {
float x1, y1, z1, r1, g1, b1, a1, u1, v1, d1, s1;
float x2, y2, z2, r2, g2, b2, a2, u2, v2, d2, s2;
float x3, y3, z3, r3, g3, b3, a3, u3, v3, d3, s3;
}
//---- PUBLIC MACROS ---------------------------------------------------------//
#define Heffer_BlitImage(imdest, imsrc, x, y) Heffer_Blit(imdest, x, y, -1, -1, imsrc, 0, 0, HEFFER_BLIT_FULLSIZE)
//---- PUBLIC FUNCTION PROTOS ------------------------------------------------//
BOOL Heffer_Startup();
BOOL Heffer_Shutdown();
HEFFER_IMAGE *Heffer_LoadBitmapResource(HINSTANCE hInst, char *name);
HEFFER_IMAGE *Heffer_LoadTargaResource(HINSTANCE hInst, char *name);
HEFFER_IMAGE *Heffer_CreateImage(int w, int h, char format);
HEFFER_IMAGE *Heffer_DuplicateImage(HEFFER_IMAGE *imsrc);
BOOL Heffer_DeleteImage(HEFFER_IMAGE *im);
void Heffer_Clip_Set(HEFFER_IMAGE *im, int x1, int y1, int x2, int y2, BOOL combine);
void Heffer_Clip_None(HEFFER_IMAGE *im);
void Heffer_Clip_Get(HEFFER_IMAGE *im, int *x1, int *y1, int *x2, int *y2);
void Heffer_Image_Display(HDC dc, HEFFER_IMAGE *im, int x, int y, BOOL d);
void Heffer_Image_DisplayRect(HDC dc, int dx, int dy, int w, int h, HEFFER_IMAGE *im, int sx, int sy);
BOOL Heffer_GetImage(HEFFER_IMAGE *imdest, int dx, int dy, int w, int h, HDC dc, int sx, int sy, int flags);
void Heffer_Blit(HEFFER_IMAGE *imsrc, int dx, int dy, int w, int h, HEFFER_IMAGE *imdest, int sx, int sy, int flags);
void Heffer_AlphaBlit(HEFFER_IMAGE *imsrc, int dx, int dy, int w, int h, HEFFER_IMAGE *imdest, int sx, int sy, unsigned char alpha, int flags);
void Heffer_SoftLightBlit(HEFFER_IMAGE *imdest, int dx, int dy, int w, int h, HEFFER_IMAGE *imsrc, int sx, int sy, unsigned char alpha, int flags);
void Heffer_FillImage(HEFFER_IMAGE *im, int col);
void Heffer_AlphaRect(HEFFER_IMAGE *imdest, int dx, int dy, int w, int h, int col);
void Heffer_FillRect(HEFFER_IMAGE *im, int x, int y, int w, int h, int col);
void Heffer_DarkenRect(HEFFER_IMAGE *im, int x, int y, int w, int h);
void Heffer_BlurRect(HEFFER_IMAGE *im, int x, int y, int w, int h);
void Heffer_DrawDot(HEFFER_IMAGE *im, int x, int y, int col);
void Heffer_PutPixel(HEFFER_IMAGE *im, int x, int y, int col);
int Heffer_GetPixel(HEFFER_IMAGE *im, int x, int y);
void Heffer_DrawLine(HEFFER_IMAGE *im, int x1, int y1, int x2, int y2, int col);
void Heffer_DrawRing(HEFFER_IMAGE *im, float x1, float y1, float x2, float y2, int col);
void Heffer_Tri(HEFFER_IMAGE *im, double x1, double y1, double x2, double y2, double x3, double y3, int col);
void Heffer_AATri(HEFFER_IMAGE *im, double x1, double y1, double x2, double y2, double x3, double y3, int col);
HRGN Heffer_RegionFromImage(HEFFER_IMAGE *im, int col);
BOOL Heffer_Filter_Blur(HEFFER_IMAGE *im, int r, int ox, int oy);
HEFFER_IMAGE *Heffer_CreateImage_AlphaMask(HEFFER_IMAGE *imsrc, int col);
HEFFER_IMAGE *Heffer_CreateImage_DropShadow(HEFFER_IMAGE *imsrc, int col, int x, int y, int blur);
HEFFER_IMAGE *Heffer_CreateImage_OuterGlow(HEFFER_IMAGE *imsrc, int col, int blur, unsigned char intens);
HEFFER_FONT *Heffer_LoadFontResource(HINSTANCE hInst, char *name);
void Heffer_GetTextSize(HEFFER_FONT *font, char *t, int *wp, int *hp);
void Heffer_TextOut(HEFFER_IMAGE *im, int x, int y, HEFFER_FONT *font, char *text, int col, int flags);
void Heffer_TextOutBorder(HEFFER_IMAGE *im, int x, int y, HEFFER_FONT *font, char *t, int col, int bcol, int flags);
void Heffer_DrawText(HEFFER_IMAGE *im, int x1, int y1, int x2, int y2, HEFFER_FONT *font, char *t, int col, int flags);
void Heffer_AlphaMerge(HEFFER_IMAGE *imdest, HEFFER_IMAGE *imsrc1, HEFFER_IMAGE *imsrc2, int alpha);
void Heffer_DistortNAll(HEFFER_IMAGE *imdest, HEFFER_IMAGE *imsrc1, HEFFER_IMAGE *imsrc2, unsigned char *distortx, unsigned char *distorty, int alpha);
//---- END OF FILE -----------------------------------------------------------//
#endif