comparison 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
comparison
equal deleted inserted replaced
132:b5569c84f00a 133:92cc5e1fa180
1
2 #define DM_DRAWLINE_INNER pix[y0 + x0] = col;
3
4 1
5 #define DM_DRAWLINE_NAME dmDrawLine8 2 #define DM_DRAWLINE_NAME dmDrawLine8
6 #define DM_DRAWLINE_DST_BYTES 1 3 #define DM_DRAWLINE_DST_BYTES 1
7 #define DM_DRAWLINE_DST_TYPE Uint8 4 #define DM_DRAWLINE_DST_TYPE Uint8
5 #define DM_DRAWLINE_INNER pix[y0 + x0] = col;
6 #define DM_DRAWLINE_INNER pix[y0 + x0] = col;
8 #include "dmdrawline.h" 7 #include "dmdrawline.h"
9 8
10 9
11 #define DM_DRAWLINE_NAME dmDrawLine32 10 #define DM_DRAWLINE_NAME dmDrawLine32
12 #define DM_DRAWLINE_DST_BYTES 4 11 #define DM_DRAWLINE_DST_BYTES 4
13 #define DM_DRAWLINE_DST_TYPE Uint32 12 #define DM_DRAWLINE_DST_TYPE Uint32
14 #include "dmdrawline.h" 13 #include "dmdrawline.h"
15 14
16 15
17 /* 16 #define DM_DRAWLINE_NAME dmDrawLine8Transparent
18 #undef DM_DRAWLINE_INNER
19 #define DM_DRAWLINE_INNER \
20 int q = pix[y0 + x0] + col;
21 pix[y0 + x0] = q >
22
23
24 #define DM_DRAWLINE_NAME dmDrawLineAdd8
25 #define DM_DRAWLINE_DST_BYTES 1 17 #define DM_DRAWLINE_DST_BYTES 1
26 #define DM_DRAWLINE_DST_TYPE Uint8 18 #define DM_DRAWLINE_DST_TYPE Uint8
19 #define DM_DRAWLINE_INNER \
20 pix[y0 + x0] = ((int)pix[y0 + x0] + col) >> 1;
27 #include "dmdrawline.h" 21 #include "dmdrawline.h"
28 22
29 23
30 #define DM_DRAWLINE_NAME dmDrawLineAdd15 24 #define DM_DRAWLINE_NAME dmDrawLine32Transparent
31 #define DM_DRAWLINE_DST_BYTES 2 25 #define DM_DRAWLINE_DST_BYTES 4
32 #define DM_DRAWLINE_DST_TYPE Uint16 26 #define DM_DRAWLINE_DST_TYPE DMRGBA32
27 #define DM_DRAWLINE_INIT const DMRGBA32 *c = (DMRGBA32*) &col;
28 #define DM_DRAWLINE_INNER \
29 const DMRGBA32 q = pix[y0 + x0]; \
30 const int qr = (q.r + c->r) >> 1, qg = (q.g + c->g) >> 1, qb = (q.b + c->b) >> 1; \
31 pix[y0 + x0].r = qr; \
32 pix[y0 + x0].g = qg; \
33 pix[y0 + x0].b = qb;
33 #include "dmdrawline.h" 34 #include "dmdrawline.h"
34 35
35 36
36 #define DM_DRAWLINE_NAME dmDrawLineAdd16 37
37 #define DM_DRAWLINE_DST_BYTES 2 38
38 #define DM_DRAWLINE_DST_TYPE Uint16 39 #define DM_DRAWLINE_NAME dmDrawLine8Saturate
40 #define DM_DRAWLINE_DST_BYTES 1
41 #define DM_DRAWLINE_DST_TYPE Uint8
42 #define DM_DRAWLINE_INNER \
43 const int q = pix[y0 + x0] + col; \
44 pix[y0 + x0] = q < 255 ? q : 255;
39 #include "dmdrawline.h" 45 #include "dmdrawline.h"
40 46
41 47
42 #define DM_DRAWLINE_NAME dmDrawLineAdd32 48 #define DM_DRAWLINE_NAME dmDrawLine32Saturate
43 #define DM_DRAWLINE_DST_BYTES 4 49 #define DM_DRAWLINE_DST_BYTES 4
44 #define DM_DRAWLINE_DST_TYPE Uint32 50 #define DM_DRAWLINE_DST_TYPE DMRGBA32
51 #define DM_DRAWLINE_INIT const DMRGBA32 *c = (DMRGBA32*) &col;
52 #define DM_DRAWLINE_INNER \
53 const DMRGBA32 q = pix[y0 + x0]; \
54 const int qr = q.r + c->r, qg = q.g + c->g, qb = q.b + c->b; \
55 pix[y0 + x0].r = qr < 255 ? qr : 255; \
56 pix[y0 + x0].g = qg < 255 ? qg : 255; \
57 pix[y0 + x0].b = qb < 255 ? qb : 255;
45 #include "dmdrawline.h" 58 #include "dmdrawline.h"
46 */
47 59