Mercurial > hg > dmlib
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 |