]> icculus.org git repositories - btb/d2x.git/blob - 2d/gr.c
fix whitespace
[btb/d2x.git] / 2d / gr.c
1 /*
2 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
3 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
4 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
5 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
6 IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
7 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
8 FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
9 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
10 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
11 COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
12 */
13
14 #ifdef HAVE_CONFIG_H
15 #include <conf.h>
16 #endif
17
18 #include "gr.h"
19 #include "u_mem.h"
20
21
22 int gr_installed = 0;
23
24 //      Functions for GR.C
25
26 int gr_close_screen(void);
27
28
29 void gr_close(void)
30 {
31         gr_close_screen();
32         gr_installed = 0;
33 }
34
35
36 int gr_init(void)
37 {
38         // Only do this function once!
39         if (gr_installed == 1)
40                 return 1;
41
42         cvar_registervariable(&gr_palette_gamma);
43
44         // Set flags indicating that this is installed.
45         gr_installed = 1;
46
47         atexit(gr_close);
48
49         return 0;
50 }
51
52
53 int gr_close_screen(void)
54 {
55         if (grd_curscreen) {
56                 d_free(grd_curscreen);
57                 grd_curscreen = NULL;
58         }
59
60         return 0;
61 }
62
63
64 int gr_init_screen(int bitmap_type, int w, int h, int x, int y, int rowsize, ubyte *screen_addr)
65 {
66         if (!gr_installed)
67                 return 1;
68
69         if (grd_curscreen == NULL)
70                 MALLOC( grd_curscreen, grs_screen, 1 );
71
72         memset(grd_curscreen, 0, sizeof(grs_screen));
73
74         grd_curscreen->sc_mode = bitmap_type;
75         grd_curscreen->sc_w = w;
76         grd_curscreen->sc_h = h;
77         grd_curscreen->sc_aspect = fixdiv(grd_curscreen->sc_w * 3, grd_curscreen->sc_h * 4);
78         grd_curscreen->sc_canvas.cv_bitmap.bm_x = x;
79         grd_curscreen->sc_canvas.cv_bitmap.bm_y = y;
80         grd_curscreen->sc_canvas.cv_bitmap.bm_w = w;
81         grd_curscreen->sc_canvas.cv_bitmap.bm_h = h;
82         grd_curscreen->sc_canvas.cv_bitmap.bm_rowsize = rowsize;
83         grd_curscreen->sc_canvas.cv_bitmap.bm_type = bitmap_type;
84         grd_curscreen->sc_canvas.cv_bitmap.bm_data = (bitmap_type == BM_LINEAR) ? screen_addr : NULL;
85
86         grd_curscreen->sc_canvas.cv_color = 0;
87         grd_curscreen->sc_canvas.cv_drawmode = 0;
88         grd_curscreen->sc_canvas.cv_font = NULL;
89         grd_curscreen->sc_canvas.cv_font_fg_color = 0;
90         grd_curscreen->sc_canvas.cv_font_bg_color = 0;
91
92         gr_set_current_canvas( &grd_curscreen->sc_canvas );
93
94         return 0;
95 }