1/* 2 * Copyright 2001-2008, Haiku, Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _INTERFACE_DEFS_H 6#define _INTERFACE_DEFS_H 7 8 9#include <GraphicsDefs.h> 10#include <OS.h> 11 12 13class BBitmap; 14class BPoint; 15class BRect; 16 17 18// some handy UTF-8 characters 19 20#define B_UTF8_BULLET "\xE2\x80\xA2" 21#define B_UTF8_ELLIPSIS "\xE2\x80\xA6" 22#define B_UTF8_OPEN_QUOTE "\xE2\x80\x9C" 23#define B_UTF8_CLOSE_QUOTE "\xE2\x80\x9D" 24#define B_UTF8_COPYRIGHT "\xC2\xA9" 25#define B_UTF8_REGISTERED "\xC2\xAE" 26#define B_UTF8_TRADEMARK "\xE2\x84\xA2" 27#define B_UTF8_SMILING_FACE "\xE2\x98\xBB" 28#define B_UTF8_HIROSHI "\xE5\xBC\x98" 29#ifdef COMPILE_FOR_R5 30 #define B_MAX_MOUSE_BUTTONS 3 31#else 32 #define B_MAX_MOUSE_BUTTONS 16 33#endif 34 35 36// Key definitions 37 38struct key_info { 39 uint32 modifiers; 40 uint8 key_states[16]; 41}; 42 43enum { 44 B_BACKSPACE = 0x08, 45 B_RETURN = 0x0a, 46 B_ENTER = 0x0a, 47 B_SPACE = 0x20, 48 B_TAB = 0x09, 49 B_ESCAPE = 0x1b, 50 B_SUBSTITUTE = 0x1a, 51 52 B_LEFT_ARROW = 0x1c, 53 B_RIGHT_ARROW = 0x1d, 54 B_UP_ARROW = 0x1e, 55 B_DOWN_ARROW = 0x1f, 56 57 B_INSERT = 0x05, 58 B_DELETE = 0x7f, 59 B_HOME = 0x01, 60 B_END = 0x04, 61 B_PAGE_UP = 0x0b, 62 B_PAGE_DOWN = 0x0c, 63 64 B_FUNCTION_KEY = 0x10, 65 66 // for Japanese keyboards 67 B_KATAKANA_HIRAGANA = 0xf2, 68 B_HANKAKU_ZENKAKU = 0xf3 69}; 70 71enum { 72 B_F1_KEY = 0x02, 73 B_F2_KEY = 0x03, 74 B_F3_KEY = 0x04, 75 B_F4_KEY = 0x05, 76 B_F5_KEY = 0x06, 77 B_F6_KEY = 0x07, 78 B_F7_KEY = 0x08, 79 B_F8_KEY = 0x09, 80 B_F9_KEY = 0x0a, 81 B_F10_KEY = 0x0b, 82 B_F11_KEY = 0x0c, 83 B_F12_KEY = 0x0d, 84 B_PRINT_KEY = 0x0e, 85 B_SCROLL_KEY = 0x0f, 86 B_PAUSE_KEY = 0x10 87}; 88 89struct key_map { 90 uint32 version; 91 uint32 caps_key; 92 uint32 scroll_key; 93 uint32 num_key; 94 uint32 left_shift_key; 95 uint32 right_shift_key; 96 uint32 left_command_key; 97 uint32 right_command_key; 98 uint32 left_control_key; 99 uint32 right_control_key; 100 uint32 left_option_key; 101 uint32 right_option_key; 102 uint32 menu_key; 103 uint32 lock_settings; 104 int32 control_map[128]; 105 int32 option_caps_shift_map[128]; 106 int32 option_caps_map[128]; 107 int32 option_shift_map[128]; 108 int32 option_map[128]; 109 int32 caps_shift_map[128]; 110 int32 caps_map[128]; 111 int32 shift_map[128]; 112 int32 normal_map[128]; 113 int32 acute_dead_key[32]; 114 int32 grave_dead_key[32]; 115 int32 circumflex_dead_key[32]; 116 int32 dieresis_dead_key[32]; 117 int32 tilde_dead_key[32]; 118 uint32 acute_tables; 119 uint32 grave_tables; 120 uint32 circumflex_tables; 121 uint32 dieresis_tables; 122 uint32 tilde_tables; 123}; 124 125enum { 126 B_CONTROL_TABLE = 0x00000001, 127 B_OPTION_CAPS_SHIFT_TABLE = 0x00000002, 128 B_OPTION_CAPS_TABLE = 0x00000004, 129 B_OPTION_SHIFT_TABLE = 0x00000008, 130 B_OPTION_TABLE = 0x00000010, 131 B_CAPS_SHIFT_TABLE = 0x00000020, 132 B_CAPS_TABLE = 0x00000040, 133 B_SHIFT_TABLE = 0x00000080, 134 B_NORMAL_TABLE = 0x00000100 135}; 136 137// modifiers 138enum { 139 B_SHIFT_KEY = 0x00000001, 140 B_COMMAND_KEY = 0x00000002, 141 B_CONTROL_KEY = 0x00000004, 142 B_CAPS_LOCK = 0x00000008, 143 B_SCROLL_LOCK = 0x00000010, 144 B_NUM_LOCK = 0x00000020, 145 B_OPTION_KEY = 0x00000040, 146 B_MENU_KEY = 0x00000080, 147 B_LEFT_SHIFT_KEY = 0x00000100, 148 B_RIGHT_SHIFT_KEY = 0x00000200, 149 B_LEFT_COMMAND_KEY = 0x00000400, 150 B_RIGHT_COMMAND_KEY = 0x00000800, 151 B_LEFT_CONTROL_KEY = 0x00001000, 152 B_RIGHT_CONTROL_KEY = 0x00002000, 153 B_LEFT_OPTION_KEY = 0x00004000, 154 B_RIGHT_OPTION_KEY = 0x00008000 155}; 156 157 158// Mouse definitions 159 160struct mouse_map { 161 uint32 button[B_MAX_MOUSE_BUTTONS]; 162}; 163 164enum mode_mouse { 165 B_NORMAL_MOUSE = 0, 166 B_CLICK_TO_FOCUS_MOUSE = -1, 167 B_FOCUS_FOLLOWS_MOUSE = 1 168}; 169 170enum mode_focus_follows_mouse { 171 B_NORMAL_FOCUS_FOLLOWS_MOUSE = 0, 172 B_WARP_FOCUS_FOLLOWS_MOUSE = 1, 173 B_INSTANT_WARP_FOCUS_FOLLOWS_MOUSE = 2 174}; 175 176 177// View orientation/alignment/style 178 179enum border_style { 180 B_PLAIN_BORDER, 181 B_FANCY_BORDER, 182 B_NO_BORDER 183}; 184 185enum orientation { 186 B_HORIZONTAL, 187 B_VERTICAL 188}; 189 190enum button_width { 191 B_WIDTH_AS_USUAL, 192 B_WIDTH_FROM_WIDEST, 193 B_WIDTH_FROM_LABEL 194}; 195 196struct scroll_bar_info { 197 bool proportional; 198 bool double_arrows; 199 int32 knob; 200 int32 min_knob_size; 201}; 202 203enum alignment { 204 B_ALIGN_LEFT, 205 B_ALIGN_RIGHT, 206 B_ALIGN_CENTER, 207 208 B_ALIGN_HORIZONTAL_CENTER = B_ALIGN_CENTER, 209 210 B_ALIGN_HORIZONTAL_UNSET = -1L, 211 B_ALIGN_USE_FULL_WIDTH = -2L 212}; 213 214enum vertical_alignment { 215 B_ALIGN_TOP = 0x10L, 216 B_ALIGN_MIDDLE = 0x20, 217 B_ALIGN_BOTTOM = 0x30, 218 219 B_ALIGN_VERTICAL_CENTER = B_ALIGN_MIDDLE, 220 221 B_ALIGN_VERTICAL_UNSET = -1L, 222 B_ALIGN_NO_VERTICAL = B_ALIGN_VERTICAL_UNSET, 223 B_ALIGN_USE_FULL_HEIGHT = -2L 224}; 225 226 227// Layout spacing and insets, see BControlLook::ComposeSpacing() 228 229 230enum { 231 B_USE_DEFAULT_SPACING = -2, 232 B_USE_ITEM_SPACING = -3, 233 B_USE_ITEM_INSETS = -3, 234 B_USE_HALF_ITEM_SPACING = -4, 235 B_USE_HALF_ITEM_INSETS = -4, 236 B_USE_WINDOW_INSETS = -5, 237 B_USE_WINDOW_SPACING = -5, 238 B_USE_SMALL_INSETS = -6, 239 B_USE_SMALL_SPACING = -6, 240 B_USE_BIG_INSETS = -7, 241 B_USE_BIG_SPACING = -7 242}; 243 244 245// Line join and cap modes 246 247enum join_mode { 248 B_ROUND_JOIN = 0, 249 B_MITER_JOIN, 250 B_BEVEL_JOIN, 251 B_BUTT_JOIN, 252 B_SQUARE_JOIN 253}; 254 255enum cap_mode { 256 B_ROUND_CAP = B_ROUND_JOIN, 257 B_BUTT_CAP = B_BUTT_JOIN, 258 B_SQUARE_CAP = B_SQUARE_JOIN 259}; 260 261const float B_DEFAULT_MITER_LIMIT = 10.0F; 262 263 264// Bitmap and overlay constants 265 266enum bitmap_tiling { 267 B_TILE_BITMAP_X = 0x00000001, 268 B_TILE_BITMAP_Y = 0x00000002, 269 B_TILE_BITMAP = 0x00000003 270}; 271 272enum overlay_options { 273 B_OVERLAY_FILTER_HORIZONTAL = 0x00010000, 274 B_OVERLAY_FILTER_VERTICAL = 0x00020000, 275 B_OVERLAY_MIRROR = 0x00040000, 276 B_OVERLAY_TRANSFER_CHANNEL = 0x00080000 277}; 278 279enum bitmap_drawing_options { 280 B_FILTER_BITMAP_BILINEAR = 0x00000100, 281 282 B_WAIT_FOR_RETRACE = 0x00000800 283}; 284 285 286// Default UI Colors 287 288enum color_which { 289 B_PANEL_BACKGROUND_COLOR = 1, 290 B_PANEL_TEXT_COLOR = 10, 291 B_DOCUMENT_BACKGROUND_COLOR = 11, 292 B_DOCUMENT_TEXT_COLOR = 12, 293 B_CONTROL_BACKGROUND_COLOR = 13, 294 B_CONTROL_TEXT_COLOR = 14, 295 B_CONTROL_BORDER_COLOR = 15, 296 B_CONTROL_HIGHLIGHT_COLOR = 16, 297 B_CONTROL_MARK_COLOR = 27, 298 B_NAVIGATION_BASE_COLOR = 4, 299 B_NAVIGATION_PULSE_COLOR = 17, 300 B_SHINE_COLOR = 18, 301 B_SHADOW_COLOR = 19, 302 303 B_MENU_BACKGROUND_COLOR = 2, 304 B_MENU_SELECTED_BACKGROUND_COLOR = 6, 305 B_MENU_ITEM_TEXT_COLOR = 7, 306 B_MENU_SELECTED_ITEM_TEXT_COLOR = 8, 307 B_MENU_SELECTED_BORDER_COLOR = 9, 308 309 B_LIST_BACKGROUND_COLOR = 28, 310 B_LIST_SELECTED_BACKGROUND_COLOR = 29, 311 B_LIST_ITEM_TEXT_COLOR = 30, 312 B_LIST_SELECTED_ITEM_TEXT_COLOR = 31, 313 314 B_TOOL_TIP_BACKGROUND_COLOR = 20, 315 B_TOOL_TIP_TEXT_COLOR = 21, 316 317 B_SUCCESS_COLOR = 100, 318 B_FAILURE_COLOR = 101, 319 320 B_WINDOW_TAB_COLOR = 3, 321 B_WINDOW_TEXT_COLOR = 22, 322 B_WINDOW_INACTIVE_TAB_COLOR = 23, 323 B_WINDOW_INACTIVE_TEXT_COLOR = 24, 324 325 B_WINDOW_BORDER_COLOR = 25, 326 B_WINDOW_INACTIVE_BORDER_COLOR = 26, 327 328 // Old name synonyms. 329 B_KEYBOARD_NAVIGATION_COLOR = B_NAVIGATION_BASE_COLOR, 330 B_MENU_SELECTION_BACKGROUND_COLOR = B_MENU_SELECTED_BACKGROUND_COLOR, 331 332 // These are deprecated -- do not use in new code. See BScreen for 333 // the replacement for B_DESKTOP_COLOR. 334 B_DESKTOP_COLOR = 5 335}; 336 337 338// Color tinting 339 340const float B_LIGHTEN_MAX_TINT = 0.0f; // 216 --> 255.0 (255) 341const float B_LIGHTEN_2_TINT = 0.385f; // 216 --> 240.0 (240) 342const float B_LIGHTEN_1_TINT = 0.590f; // 216 --> 232.0 (232) 343 344const float B_NO_TINT = 1.0f; // 216 --> 216.0 (216) 345 346const float B_DARKEN_1_TINT = 1.147f; // 216 --> 184.2 (184) 347const float B_DARKEN_2_TINT = 1.295f; // 216 --> 152.3 (152) 348const float B_DARKEN_3_TINT = 1.407f; // 216 --> 128.1 (128) 349const float B_DARKEN_4_TINT = 1.555f; // 216 --> 96.1 (96) 350const float B_DARKEN_MAX_TINT = 2.0f; // 216 --> 0.0 (0) 351 // effects on standard gray level 352 353const float B_DISABLED_LABEL_TINT = B_DARKEN_3_TINT; 354const float B_HIGHLIGHT_BACKGROUND_TINT = B_DARKEN_2_TINT; 355const float B_DISABLED_MARK_TINT = B_LIGHTEN_2_TINT; 356 357 358status_t get_deskbar_frame(BRect* frame); 359 360const color_map* system_colors(); 361 362status_t set_screen_space(int32 index, uint32 resolution, 363 bool save = true); 364 365status_t get_scroll_bar_info(scroll_bar_info* info); 366status_t set_scroll_bar_info(scroll_bar_info* info); 367 368status_t get_mouse_type(int32* type); 369status_t set_mouse_type(int32 type); 370status_t get_mouse_map(mouse_map* map); 371status_t set_mouse_map(mouse_map* map); 372status_t get_click_speed(bigtime_t* speed); 373status_t set_click_speed(bigtime_t speed); 374status_t get_mouse_speed(int32* speed); 375status_t set_mouse_speed(int32 speed); 376status_t get_mouse_acceleration(int32* speed); 377status_t set_mouse_acceleration(int32 speed); 378 379status_t get_key_repeat_rate(int32* rate); 380status_t set_key_repeat_rate(int32 rate); 381status_t get_key_repeat_delay(bigtime_t* delay); 382status_t set_key_repeat_delay(bigtime_t delay); 383 384uint32 modifiers(); 385status_t get_key_info(key_info* info); 386void get_key_map(key_map** _map, char** _keyBuffer); 387status_t get_keyboard_id(uint16* _id); 388status_t get_modifier_key(uint32 modifier, uint32 *key); 389void set_modifier_key(uint32 modifier, uint32 key); 390void set_keyboard_locks(uint32 modifiers); 391 392rgb_color keyboard_navigation_color(); 393 394int32 count_workspaces(); 395void set_workspace_count(int32 count); 396int32 current_workspace(); 397void activate_workspace(int32 workspace); 398 399bigtime_t idle_time(); 400 401void run_select_printer_panel(); 402void run_add_printer_panel(); 403void run_be_about(); 404 405void set_focus_follows_mouse(bool follow); 406bool focus_follows_mouse(); 407 408void set_mouse_mode(mode_mouse mode); 409mode_mouse mouse_mode(); 410 411void set_focus_follows_mouse_mode(mode_focus_follows_mouse mode); 412mode_focus_follows_mouse focus_follows_mouse_mode(); 413 414status_t get_mouse(BPoint* screenWhere, uint32* buttons); 415status_t get_mouse_bitmap(BBitmap** bitmap, BPoint* hotspot); 416 417void set_accept_first_click(bool acceptFirstClick); 418bool accept_first_click(); 419 420rgb_color ui_color(color_which which); 421void set_ui_color(const color_which& which, const rgb_color& color); 422rgb_color tint_color(rgb_color color, float tint); 423 424extern "C" status_t _init_interface_kit_(); 425 // for convenience, should be removed including the friend declarations 426 // in Menu.h, ... 427 428#endif // _INTERFACE_DEFS_H 429