]> icculus.org git repositories - btb/d2x.git/blob - ui/barbox.c
use the orientation parameter of g3_draw_bitmap
[btb/d2x.git] / ui / barbox.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 <stdio.h>
19 #include <stdarg.h>
20
21 #include "maths.h"
22 #include "gr.h"
23 #include "ui.h"
24 #include "key.h"
25
26
27 static UI_WINDOW * wnd = NULL;
28 static int bar_width, bar_height, bar_x, bar_y, bar_maxlength;
29
30 void ui_barbox_open( char * text, int length )
31 {
32         grs_font *temp_font = NULL;
33         int text_width, text_height, avg;
34         int w,h, width, height, xc, yc, x, y;
35
36         w = grd_curscreen->sc_w;
37         h = grd_curscreen->sc_h;
38
39         width = w/3;
40
41         bar_maxlength = length;
42
43         if ( w < 640 )  {
44                 temp_font = grd_curscreen->sc_canvas.cv_font;
45                 grd_curscreen->sc_canvas.cv_font = ui_small_font;
46         }
47
48         gr_get_string_size(text, &text_width, &text_height, &avg );
49         
50         text_width += avg*6;
51         text_width += 10;
52
53         if (text_width > width )
54                 width = text_width;
55
56         height = text_height;
57         height += 30;
58
59         xc = w/2;
60         yc = h/2;
61
62         x = xc - width/2;
63         y = yc - height/2;
64
65         if (x < 0 ) x = 0;
66         if ( (x+width-1) >= w ) x = w - width;
67         if (y < 0 ) y = 0;
68         if ( (y+height-1) >= h ) y = h - height;
69
70         wnd = ui_open_window( x, y, width, height, WIN_DIALOG );
71
72         y = 5 + text_height/2 ;
73
74         ui_string_centered( width/2, y, text );
75
76         y = 10 + text_height;
77         
78         bar_width = width - 15;
79         bar_height = 10;
80         bar_x = (width/2) - (bar_width/2);
81         bar_y = height - 15;
82
83         ui_draw_line_in( bar_x-2, bar_y-2, bar_x+bar_width+1, bar_y+bar_height+1 );
84
85         grd_curscreen->sc_canvas.cv_font = temp_font;
86                 
87 }
88
89 void ui_barbox_update( int position )
90 {
91         int spos;
92
93         spos =  (position * bar_width)/bar_maxlength;
94
95         gr_set_current_canvas( wnd->canvas );
96
97         ui_mouse_hide();
98         gr_setcolor( BM_XRGB(0,0,10));
99         gr_rect( bar_x, bar_y, bar_x+spos-1, bar_y+bar_height-1 );
100         ui_mouse_show();
101         ui_mouse_process();
102
103 }
104
105 void ui_barbox_close()
106 {
107         if (wnd)
108                 ui_close_window(wnd);
109 }