home *** CD-ROM | disk | FTP | other *** search
/ Amiga ACS 1998 #6 / amigaacscoverdisc1998-061998.iso / games / descent / source / ui / barbox.c next >
Text File  |  1998-06-08  |  3KB  |  130 lines

  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-1998 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
  12. */
  13. /*
  14.  * $Source: f:/miner/source/ui/rcs/barbox.c $
  15.  * $Revision: 1.2 $
  16.  * $Author: john $
  17.  * $Date: 1994/01/18 11:07:45 $
  18.  * 
  19.  * File for creating a barbox...
  20.  * 
  21.  * $Log: barbox.c $
  22.  * Revision 1.2  1994/01/18  11:07:45  john
  23.  * *** empty log message ***
  24.  * 
  25.  * Revision 1.1  1994/01/10  15:24:32  john
  26.  * Initial revision
  27.  * 
  28.  * 
  29.  */
  30.  
  31.  
  32. #pragma off (unreferenced)
  33. static char rcsid[] = "$Id: barbox.c 1.2 1994/01/18 11:07:45 john Exp $";
  34. #pragma on (unreferenced)
  35.  
  36. #include <stdio.h>
  37. #include <stdarg.h>
  38.  
  39. #include "fix.h"
  40. #include "types.h"
  41. #include "gr.h"
  42. #include "ui.h"
  43. #include "key.h"
  44.  
  45.  
  46. static UI_WINDOW * wnd = NULL;
  47. static int bar_width, bar_height, bar_x, bar_y, bar_maxlength;
  48.  
  49. void ui_barbox_open( char * text, int length )
  50. {
  51.     grs_font * temp_font;
  52.     short text_width, text_height, avg;
  53.     int w,h, width, height, xc, yc, x, y;
  54.  
  55.     w = grd_curscreen->sc_w;
  56.     h = grd_curscreen->sc_h;
  57.  
  58.     width = w/3;
  59.  
  60.     bar_maxlength = length;
  61.  
  62.     if ( w < 640 )     {
  63.         temp_font = grd_curscreen->sc_canvas.cv_font;
  64.         grd_curscreen->sc_canvas.cv_font = ui_small_font;
  65.     }
  66.  
  67.     gr_get_string_size(text, &text_width, &text_height, &avg );
  68.     
  69.     text_width += avg*6;
  70.     text_width += 10;
  71.  
  72.     if (text_width > width )
  73.         width = text_width;
  74.  
  75.     height = text_height;
  76.     height += 30;
  77.  
  78.     xc = w/2;
  79.     yc = h/2;
  80.  
  81.     x = xc - width/2;
  82.     y = yc - height/2;
  83.  
  84.     if (x < 0 ) x = 0;
  85.     if ( (x+width-1) >= w ) x = w - width;
  86.     if (y < 0 ) y = 0;
  87.     if ( (y+height-1) >= h ) y = h - height;
  88.  
  89.     wnd = ui_open_window( x, y, width, height, WIN_DIALOG );
  90.  
  91.     y = 5 + text_height/2 ;
  92.  
  93.     ui_string_centered( width/2, y, text );
  94.  
  95.     y = 10 + text_height;
  96.     
  97.     bar_width = width - 15;
  98.     bar_height = 10;
  99.     bar_x = (width/2) - (bar_width/2);
  100.     bar_y = height - 15;
  101.  
  102.     ui_draw_line_in( bar_x-2, bar_y-2, bar_x+bar_width+1, bar_y+bar_height+1 );
  103.  
  104.     grd_curscreen->sc_canvas.cv_font = temp_font;
  105.         
  106. }
  107.  
  108. int ui_barbox_update( int position )
  109. {
  110.     int spos;
  111.  
  112.     spos =  (position * bar_width)/bar_maxlength;
  113.  
  114.     gr_set_current_canvas( wnd->canvas );
  115.  
  116.     ui_mouse_hide();
  117.     gr_setcolor( BM_XRGB(0,0,10));
  118.     gr_rect( bar_x, bar_y, bar_x+spos-1, bar_y+bar_height-1 );
  119.     ui_mouse_show();
  120.     ui_mouse_process();
  121.  
  122. }
  123.  
  124. void ui_barbox_close()
  125. {
  126.     if (wnd)
  127.         ui_close_window(wnd);
  128. }
  129. 
  130.