Mercurial > hg > dmlib
diff dmlinefunc.h @ 133:92cc5e1fa180
Some work on line drawing routines.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 05 Oct 2012 00:36:40 +0300 |
parents | 997e26f17946 |
children | c2bf01e180a3 |
line wrap: on
line diff
--- a/dmlinefunc.h Thu Oct 04 15:43:10 2012 +0300 +++ b/dmlinefunc.h Fri Oct 05 00:36:40 2012 +0300 @@ -1,10 +1,9 @@ - -#define DM_DRAWLINE_INNER pix[y0 + x0] = col; - #define DM_DRAWLINE_NAME dmDrawLine8 #define DM_DRAWLINE_DST_BYTES 1 #define DM_DRAWLINE_DST_TYPE Uint8 +#define DM_DRAWLINE_INNER pix[y0 + x0] = col; +#define DM_DRAWLINE_INNER pix[y0 + x0] = col; #include "dmdrawline.h" @@ -14,34 +13,47 @@ #include "dmdrawline.h" -/* -#undef DM_DRAWLINE_INNER +#define DM_DRAWLINE_NAME dmDrawLine8Transparent +#define DM_DRAWLINE_DST_BYTES 1 +#define DM_DRAWLINE_DST_TYPE Uint8 #define DM_DRAWLINE_INNER \ - int q = pix[y0 + x0] + col; - pix[y0 + x0] = q > + pix[y0 + x0] = ((int)pix[y0 + x0] + col) >> 1; +#include "dmdrawline.h" -#define DM_DRAWLINE_NAME dmDrawLineAdd8 -#define DM_DRAWLINE_DST_BYTES 1 -#define DM_DRAWLINE_DST_TYPE Uint8 +#define DM_DRAWLINE_NAME dmDrawLine32Transparent +#define DM_DRAWLINE_DST_BYTES 4 +#define DM_DRAWLINE_DST_TYPE DMRGBA32 +#define DM_DRAWLINE_INIT const DMRGBA32 *c = (DMRGBA32*) &col; +#define DM_DRAWLINE_INNER \ + const DMRGBA32 q = pix[y0 + x0]; \ + const int qr = (q.r + c->r) >> 1, qg = (q.g + c->g) >> 1, qb = (q.b + c->b) >> 1; \ + pix[y0 + x0].r = qr; \ + pix[y0 + x0].g = qg; \ + pix[y0 + x0].b = qb; #include "dmdrawline.h" -#define DM_DRAWLINE_NAME dmDrawLineAdd15 -#define DM_DRAWLINE_DST_BYTES 2 -#define DM_DRAWLINE_DST_TYPE Uint16 + + +#define DM_DRAWLINE_NAME dmDrawLine8Saturate +#define DM_DRAWLINE_DST_BYTES 1 +#define DM_DRAWLINE_DST_TYPE Uint8 +#define DM_DRAWLINE_INNER \ + const int q = pix[y0 + x0] + col; \ + pix[y0 + x0] = q < 255 ? q : 255; #include "dmdrawline.h" -#define DM_DRAWLINE_NAME dmDrawLineAdd16 -#define DM_DRAWLINE_DST_BYTES 2 -#define DM_DRAWLINE_DST_TYPE Uint16 +#define DM_DRAWLINE_NAME dmDrawLine32Saturate +#define DM_DRAWLINE_DST_BYTES 4 +#define DM_DRAWLINE_DST_TYPE DMRGBA32 +#define DM_DRAWLINE_INIT const DMRGBA32 *c = (DMRGBA32*) &col; +#define DM_DRAWLINE_INNER \ + const DMRGBA32 q = pix[y0 + x0]; \ + const int qr = q.r + c->r, qg = q.g + c->g, qb = q.b + c->b; \ + pix[y0 + x0].r = qr < 255 ? qr : 255; \ + pix[y0 + x0].g = qg < 255 ? qg : 255; \ + pix[y0 + x0].b = qb < 255 ? qb : 255; #include "dmdrawline.h" - -#define DM_DRAWLINE_NAME dmDrawLineAdd32 -#define DM_DRAWLINE_DST_BYTES 4 -#define DM_DRAWLINE_DST_TYPE Uint32 -#include "dmdrawline.h" -*/ -