Mercurial > hg > dmlib
annotate dmgfx.c @ 410:e4b2f689aff6
Stdint -> SDL types conversion.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sat, 03 Nov 2012 02:41:15 +0200 |
parents | 41889c480291 |
children | 451fde45e116 |
rev | line source |
---|---|
0 | 1 #include "dmlib.h" |
2 | |
3 | |
4 void dmFillRect(SDL_Surface *screen, int x0, int y0, int x1, int y1, Uint32 col) | |
5 { | |
6 SDL_Rect rc; | |
7 rc.x = x0; | |
8 rc.y = y0; | |
9 rc.w = x1 - x0 + 1; | |
10 rc.h = y1 - y0 + 1; | |
11 SDL_FillRect(screen, &rc, col); | |
12 } | |
13 | |
14 | |
15 void dmDrawHLine(SDL_Surface *screen, int x0, int x1, int yc, const Uint32 col) | |
16 { | |
17 int x; | |
18 const int bpp = screen->format->BytesPerPixel, | |
19 cx0 = screen->clip_rect.x, cy0 = screen->clip_rect.y, | |
20 cx1 = screen->clip_rect.x + screen->clip_rect.w - 1, | |
21 cy1 = screen->clip_rect.y + screen->clip_rect.h - 1; | |
22 | |
23 DM_SWAP(int, x0, x1); | |
24 if (yc < cy0|| yc > cy1 || x1 < cx0 || x0 > cx1) return; | |
25 if (x0 < cx0) x0 = cx0; | |
26 if (x1 > cx1) x1 = cx1; | |
27 | |
28 Uint8 *pix = screen->pixels + yc * screen->pitch + (x0 * bpp); | |
29 switch (screen->format->BitsPerPixel) | |
30 { | |
31 case 8: | |
32 for (x = x0; x <= x1; x++) | |
33 *pix++ = col; | |
34 break; | |
35 | |
36 case 32: | |
37 { | |
38 Uint32 *p = (Uint32 *) pix; | |
39 for (x = x0; x <= x1; x++) | |
40 *p++ = col; | |
41 } | |
42 break; | |
43 } | |
44 } | |
45 | |
46 | |
47 void dmDrawVLine(SDL_Surface *screen, int y0, int y1, int xc, const Uint32 col) | |
48 { | |
49 int y; | |
50 const int bpp = screen->format->BytesPerPixel, | |
51 pitch = screen->pitch / bpp, | |
52 cx0 = screen->clip_rect.x, cy0 = screen->clip_rect.y, | |
53 cx1 = screen->clip_rect.x + screen->clip_rect.w - 1, | |
54 cy1 = screen->clip_rect.y + screen->clip_rect.h - 1; | |
55 | |
56 DM_SWAP(int, y0, y1); | |
57 if (xc < cx0 || xc > cx1 || y1 < cy0 || y0 > cy1) return; | |
58 if (y0 < cy0) y0 = cy0; | |
59 if (y1 > cy1) y1 = cy1; | |
60 | |
61 Uint8 *pix = screen->pixels + y0 * screen->pitch + (xc * bpp); | |
62 switch (screen->format->BitsPerPixel) | |
63 { | |
64 case 8: | |
65 for (y = y0; y <= y1; y++, pix += pitch) | |
66 *pix = col; | |
67 break; | |
68 | |
69 case 32: | |
70 { | |
71 Uint32 *p = (Uint32 *) pix; | |
72 for (y = y0; y <= y1; y++, p += pitch) | |
73 *p = col; | |
74 } | |
75 break; | |
76 } | |
77 } | |
78 | |
79 | |
150
e147c07e41cb
Add dmDrawBox3D() and dmFillBox3D().
Matti Hamalainen <ccr@tnsp.org>
parents:
118
diff
changeset
|
80 void dmDrawBox3D(SDL_Surface *screen, int x0, int y0, int x1, int y1, Uint32 ucol, Uint32 dcol) |
e147c07e41cb
Add dmDrawBox3D() and dmFillBox3D().
Matti Hamalainen <ccr@tnsp.org>
parents:
118
diff
changeset
|
81 { |
e147c07e41cb
Add dmDrawBox3D() and dmFillBox3D().
Matti Hamalainen <ccr@tnsp.org>
parents:
118
diff
changeset
|
82 dmDrawHLine(screen, x0 , x1 - 1, y0, ucol); |
e147c07e41cb
Add dmDrawBox3D() and dmFillBox3D().
Matti Hamalainen <ccr@tnsp.org>
parents:
118
diff
changeset
|
83 dmDrawHLine(screen, x0 + 1, x1 , y1, dcol); |
e147c07e41cb
Add dmDrawBox3D() and dmFillBox3D().
Matti Hamalainen <ccr@tnsp.org>
parents:
118
diff
changeset
|
84 |
e147c07e41cb
Add dmDrawBox3D() and dmFillBox3D().
Matti Hamalainen <ccr@tnsp.org>
parents:
118
diff
changeset
|
85 dmDrawVLine(screen, y0 , y1 - 1, x0, ucol); |
e147c07e41cb
Add dmDrawBox3D() and dmFillBox3D().
Matti Hamalainen <ccr@tnsp.org>
parents:
118
diff
changeset
|
86 dmDrawVLine(screen, y0 + 1, y1 , x1, dcol); |
e147c07e41cb
Add dmDrawBox3D() and dmFillBox3D().
Matti Hamalainen <ccr@tnsp.org>
parents:
118
diff
changeset
|
87 } |
e147c07e41cb
Add dmDrawBox3D() and dmFillBox3D().
Matti Hamalainen <ccr@tnsp.org>
parents:
118
diff
changeset
|
88 |
e147c07e41cb
Add dmDrawBox3D() and dmFillBox3D().
Matti Hamalainen <ccr@tnsp.org>
parents:
118
diff
changeset
|
89 |
e147c07e41cb
Add dmDrawBox3D() and dmFillBox3D().
Matti Hamalainen <ccr@tnsp.org>
parents:
118
diff
changeset
|
90 void dmFillBox3D(SDL_Surface *screen, int x0, int y0, int x1, int y1, Uint32 bgcol, Uint32 ucol, Uint32 dcol) |
0 | 91 { |
92 SDL_Rect rc; | |
93 | |
94 rc.x = x0 + 1; | |
95 rc.y = y0 + 1; | |
96 rc.w = x1 - x0 - 1; | |
97 rc.h = y1 - y0 - 1; | |
98 SDL_FillRect(screen, &rc, bgcol); | |
99 | |
150
e147c07e41cb
Add dmDrawBox3D() and dmFillBox3D().
Matti Hamalainen <ccr@tnsp.org>
parents:
118
diff
changeset
|
100 dmDrawBox3D(screen, x0, y0, x1, y1, ucol, dcol); |
0 | 101 } |