2 * Copyright (C) Volition, Inc. 1999. All rights reserved.
4 * All source code herein is the property of Volition, Inc. You may not sell
5 * or otherwise commercially exploit the source or things you created based on
10 * $Logfile: /Freespace2/code/UI/icon.cpp $
15 * C++ class implementation for icon UI element
18 * Revision 1.4 2004/09/20 01:31:45 theoddone33
21 * Revision 1.3 2002/06/09 04:41:29 relnev
22 * added copyright header
24 * Revision 1.2 2002/05/07 03:16:53 theoddone33
25 * The Great Newline Fix
27 * Revision 1.1.1.1 2002/05/03 03:28:11 root
31 * 4 12/02/98 5:47p Dave
32 * Put in interface xstr code. Converted barracks screen to new format.
34 * 3 10/13/98 9:29a Dave
35 * Started neatening up freespace.h. Many variables renamed and
36 * reorganized. Added AlphaColors.[h,cpp]
38 * 2 10/07/98 10:54a Dave
41 * 1 10/07/98 10:51a Dave
43 * 5 2/03/98 4:21p Hoffoss
44 * Made UI controls draw white text when disabled.
46 * 4 1/20/98 10:36a Hoffoss
47 * Fixed optimized warnings.
49 * 3 1/14/98 6:43p Hoffoss
50 * Massive changes to UI code. A lot cleaner and better now. Did all
51 * this to get the new UI_DOT_SLIDER to work properly, which the old code
52 * wasn't flexible enough to handle.
54 * 2 9/07/97 10:05p Lawrance
57 * 1 9/06/97 11:22p Lawrance
64 #include "alphacolors.h"
67 // ---------------------------------------------------------------------------------------
71 void UI_ICON::create(UI_WINDOW *wnd, const char *_text, int _x, int _y, int _w, int _h)
78 base_create(wnd, UI_KIND_ICON, _x, _y, _w, _h);
82 void UI_ICON::destroy()
97 if (bmap_ids[ICON_DISABLED] != -1) {
98 gr_set_bitmap(bmap_ids[ICON_DISABLED], GR_ALPHABLEND_NONE, GR_BITBLT_MODE_NORMAL, 1.0f, -1, -1);
102 } else if (this->is_mouse_on()) {
104 if (bmap_ids[ICON_SELECTED] != -1) {
105 gr_set_bitmap(bmap_ids[ICON_SELECTED], GR_ALPHABLEND_NONE, GR_BITBLT_MODE_NORMAL, 1.0f, -1, -1);
110 if (bmap_ids[ICON_HIGHLIGHT] != -1) {
111 gr_set_bitmap(bmap_ids[ICON_HIGHLIGHT], GR_ALPHABLEND_NONE, GR_BITBLT_MODE_NORMAL, 1.0f, -1, -1);
117 if (bmap_ids[ICON_NORMAL] != -1) {
118 gr_set_bitmap(bmap_ids[ICON_NORMAL], GR_ALPHABLEND_NONE, GR_BITBLT_MODE_NORMAL, 1.0f, -1, -1);
124 gr_set_font(my_wnd->f_id);
125 gr_set_clip(x, y, w, h);
127 ui_draw_box_out(0, 0, w-1, h-1);
129 gr_set_color_fast(&CDARK_GRAY);
131 gr_set_color_fast(&CBLACK);
134 ui_string_centered(Middle(w), Middle(h), text);
140 // -----------------------------------------------------------------------
143 void UI_ICON::process(int focus)
151 OnMe = is_mouse_on();
154 m_flags |= ICON_NOT_HIGHLIGHTED;
157 if ( m_flags & ICON_NOT_HIGHLIGHTED ) {
158 m_flags |= ICON_JUST_HIGHLIGHTED;
159 // if a callback exists, call it
160 m_flags &= ~ICON_NOT_HIGHLIGHTED;