FLTK 1.3.3
Enumerations.H
Go to the documentation of this file.
1 //
2 // "$Id: Enumerations.H 10382 2014-10-15 21:00:20Z ianmacarthur $"
3 //
4 // Enumerations for the Fast Light Tool Kit (FLTK).
5 //
6 // Copyright 1998-2014 by Bill Spitzak and others.
7 //
8 // This library is free software. Distribution and use rights are outlined in
9 // the file "COPYING" which should have been included with this file. If this
10 // file is missing or damaged, see the license at:
11 //
12 // http://www.fltk.org/COPYING.php
13 //
14 // Please report all bugs and problems on the following page:
15 //
16 // http://www.fltk.org/str.php
17 //
18 
23 #ifndef Fl_Enumerations_H
24 #define Fl_Enumerations_H
25 
26 /* Uncomment the following FLTK_ABI_VERSION line to enable ABI breaking fixes
27  * in the current patch release of FLTK. ** Use for static builds only! **
28  * For more info on this macro, see: http://fltk.org/cmp.php#FLTK_ABI_VERSION
29  */
30 //#define FLTK_ABI_VERSION 10303
31 
32 # include "Fl_Export.H"
33 # include "fl_types.h"
34 
43 
48 #define FL_MAJOR_VERSION 1
49 
55 #define FL_MINOR_VERSION 3
56 
62 #define FL_PATCH_VERSION 3
63 
75 #define FL_VERSION ((double)FL_MAJOR_VERSION + \
76  (double)FL_MINOR_VERSION * 0.01 + \
77  (double)FL_PATCH_VERSION * 0.0001)
78  // group: Version Numbers
80 
96 enum Fl_Event { // events
99 
111  FL_PUSH = 1,
112 
120 
128  FL_ENTER = 3,
129 
134  FL_LEAVE = 4,
135 
143  FL_DRAG = 5,
144 
158  FL_FOCUS = 6,
159 
164 
186 
191 
195  FL_KEYUP = 9,
196 
202  FL_CLOSE = 10,
203 
210  FL_MOVE = 11,
211 
225 
232 
237 
244  FL_HIDE = 15,
245 
252  FL_SHOW = 16,
253 
258  FL_PASTE = 17,
259 
266 
271 
277 
283 
287 
300 };
301 
309 enum Fl_When { // Fl_Widget::when():
318 };
319  // group: When Conditions
321 
334 
335 // FIXME: These codes collide with valid Unicode keys
336 
337 #define FL_Button 0xfee8
338 #define FL_BackSpace 0xff08
339 #define FL_Tab 0xff09
340 #define FL_Iso_Key 0xff0c
341 #define FL_Enter 0xff0d
342 #define FL_Pause 0xff13
343 #define FL_Scroll_Lock 0xff14
344 #define FL_Escape 0xff1b
345 #define FL_Kana 0xff2e
346 #define FL_Eisu 0xff2f
347 #define FL_Yen 0xff30
348 #define FL_JIS_Underscore 0xff31
349 #define FL_Home 0xff50
350 #define FL_Left 0xff51
351 #define FL_Up 0xff52
352 #define FL_Right 0xff53
353 #define FL_Down 0xff54
354 #define FL_Page_Up 0xff55
355 #define FL_Page_Down 0xff56
356 #define FL_End 0xff57
357 #define FL_Print 0xff61
358 #define FL_Insert 0xff63
359 #define FL_Menu 0xff67
360 #define FL_Help 0xff68
361 #define FL_Num_Lock 0xff7f
362 #define FL_KP 0xff80
363 #define FL_KP_Enter 0xff8d
364 #define FL_KP_Last 0xffbd
365 #define FL_F 0xffbd
366 #define FL_F_Last 0xffe0
367 #define FL_Shift_L 0xffe1
368 #define FL_Shift_R 0xffe2
369 #define FL_Control_L 0xffe3
370 #define FL_Control_R 0xffe4
371 #define FL_Caps_Lock 0xffe5
372 #define FL_Meta_L 0xffe7
373 #define FL_Meta_R 0xffe8
374 #define FL_Alt_L 0xffe9
375 #define FL_Alt_R 0xffea
376 #define FL_Delete 0xffff
377 
378 // These use the Private Use Area (PUA) of the Basic Multilingual Plane
379 // of Unicode. Guaranteed not to conflict with a proper Unicode character.
380 
381 // These primarily map to the XFree86 keysym range
382 #define FL_Volume_Down 0xEF11 /* Volume control down */
383 #define FL_Volume_Mute 0xEF12 /* Mute sound from the system */
384 #define FL_Volume_Up 0xEF13 /* Volume control up */
385 #define FL_Media_Play 0xEF14 /* Start playing of audio */
386 #define FL_Media_Stop 0xEF15 /* Stop playing audio */
387 #define FL_Media_Prev 0xEF16 /* Previous track */
388 #define FL_Media_Next 0xEF17 /* Next track */
389 #define FL_Home_Page 0xEF18 /* Display user's home page */
390 #define FL_Mail 0xEF19 /* Invoke user's mail program */
391 #define FL_Search 0xEF1B /* Search */
392 #define FL_Back 0xEF26 /* Like back on a browser */
393 #define FL_Forward 0xEF27 /* Like forward on a browser */
394 #define FL_Stop 0xEF28 /* Stop current operation */
395 #define FL_Refresh 0xEF29 /* Refresh the page */
396 #define FL_Sleep 0xEF2F /* Put system to sleep */
397 #define FL_Favorites 0xEF30 /* Show favorite locations */
398  // group: Mouse and Keyboard Events
400 
409 
410 #define FL_LEFT_MOUSE 1
411 #define FL_MIDDLE_MOUSE 2
412 #define FL_RIGHT_MOUSE 3
413 
414  // group: Mouse Buttons
415 
416 
422  // group: Event States
423 
424 // FIXME: it would be nice to have the modifiers in the upper 8 bit so that
425 // a unicode ke (24bit) can be sent as an unsigned with the modifiers.
426 
427 #define FL_SHIFT 0x00010000
428 #define FL_CAPS_LOCK 0x00020000
429 #define FL_CTRL 0x00040000
430 #define FL_ALT 0x00080000
431 #define FL_NUM_LOCK 0x00100000
432  // most X servers do this?
433 #define FL_META 0x00400000
434  // correct for XFree86
435 #define FL_SCROLL_LOCK 0x00800000
436  // correct for XFree86
437 #define FL_BUTTON1 0x01000000
438 #define FL_BUTTON2 0x02000000
439 #define FL_BUTTON3 0x04000000
440 #define FL_BUTTONS 0x7f000000
441 #define FL_BUTTON(n) (0x00800000<<(n))
442 
443 #define FL_KEY_MASK 0x0000ffff
444  // FIXME: Unicode needs 24 bits!
445 
446 #ifdef __APPLE__
447 # define FL_COMMAND FL_META
448 # define FL_CONTROL FL_CTRL
449 #else
450 # define FL_COMMAND FL_CTRL
451 # define FL_CONTROL FL_META
452 #endif // __APPLE__
453  // group: Event States
455 
473 enum Fl_Boxtype { // boxtypes (if you change these you must fix fl_boxtype.C):
474 
475  FL_NO_BOX = 0,
532 };
533 extern FL_EXPORT Fl_Boxtype fl_define_FL_ROUND_UP_BOX();
534 #define FL_ROUND_UP_BOX fl_define_FL_ROUND_UP_BOX()
535 #define FL_ROUND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_ROUND_UP_BOX()+1)
536 extern FL_EXPORT Fl_Boxtype fl_define_FL_SHADOW_BOX();
537 #define FL_SHADOW_BOX fl_define_FL_SHADOW_BOX()
538 #define FL_SHADOW_FRAME (Fl_Boxtype)(fl_define_FL_SHADOW_BOX()+2)
539 extern FL_EXPORT Fl_Boxtype fl_define_FL_ROUNDED_BOX();
540 #define FL_ROUNDED_BOX fl_define_FL_ROUNDED_BOX()
541 #define FL_ROUNDED_FRAME (Fl_Boxtype)(fl_define_FL_ROUNDED_BOX()+2)
542 extern FL_EXPORT Fl_Boxtype fl_define_FL_RFLAT_BOX();
543 #define FL_RFLAT_BOX fl_define_FL_RFLAT_BOX()
544 extern FL_EXPORT Fl_Boxtype fl_define_FL_RSHADOW_BOX();
545 #define FL_RSHADOW_BOX fl_define_FL_RSHADOW_BOX()
546 extern FL_EXPORT Fl_Boxtype fl_define_FL_DIAMOND_BOX();
547 #define FL_DIAMOND_UP_BOX fl_define_FL_DIAMOND_BOX()
548 #define FL_DIAMOND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_DIAMOND_BOX()+1)
549 extern FL_EXPORT Fl_Boxtype fl_define_FL_OVAL_BOX();
550 #define FL_OVAL_BOX fl_define_FL_OVAL_BOX()
551 #define FL_OSHADOW_BOX (Fl_Boxtype)(fl_define_FL_OVAL_BOX()+1)
552 #define FL_OVAL_FRAME (Fl_Boxtype)(fl_define_FL_OVAL_BOX()+2)
553 #define FL_OFLAT_BOX (Fl_Boxtype)(fl_define_FL_OVAL_BOX()+3)
554 
555 extern FL_EXPORT Fl_Boxtype fl_define_FL_PLASTIC_UP_BOX();
556 #define FL_PLASTIC_UP_BOX fl_define_FL_PLASTIC_UP_BOX()
557 #define FL_PLASTIC_DOWN_BOX (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+1)
558 #define FL_PLASTIC_UP_FRAME (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+2)
559 #define FL_PLASTIC_DOWN_FRAME (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+3)
560 #define FL_PLASTIC_THIN_UP_BOX (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+4)
561 #define FL_PLASTIC_THIN_DOWN_BOX (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+5)
562 #define FL_PLASTIC_ROUND_UP_BOX (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+6)
563 #define FL_PLASTIC_ROUND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+7)
564 
565 extern FL_EXPORT Fl_Boxtype fl_define_FL_GTK_UP_BOX();
566 #define FL_GTK_UP_BOX fl_define_FL_GTK_UP_BOX()
567 #define FL_GTK_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+1)
568 #define FL_GTK_UP_FRAME (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+2)
569 #define FL_GTK_DOWN_FRAME (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+3)
570 #define FL_GTK_THIN_UP_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+4)
571 #define FL_GTK_THIN_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+5)
572 #define FL_GTK_THIN_UP_FRAME (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+6)
573 #define FL_GTK_THIN_DOWN_FRAME (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+7)
574 #define FL_GTK_ROUND_UP_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+8)
575 #define FL_GTK_ROUND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+9)
576 
577 extern FL_EXPORT Fl_Boxtype fl_define_FL_GLEAM_UP_BOX();
578 #define FL_GLEAM_UP_BOX fl_define_FL_GLEAM_UP_BOX()
579 #define FL_GLEAM_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+1)
580 #define FL_GLEAM_UP_FRAME (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+2)
581 #define FL_GLEAM_DOWN_FRAME (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+3)
582 #define FL_GLEAM_THIN_UP_BOX (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+4)
583 #define FL_GLEAM_THIN_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+5)
584 #define FL_GLEAM_ROUND_UP_BOX (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+6)
585 #define FL_GLEAM_ROUND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+7)
586 
587 // conversions of box types to other boxtypes:
594  return (Fl_Boxtype)((b<FL_UP_BOX||b%4>1)?b:(b-2));
595 }
602  return (Fl_Boxtype)((b<FL_UP_BOX)?b:(b|1));
603 }
610  return (Fl_Boxtype)((b%4<2)?b:(b+2));
611 }
612 
613 // back-compatibility box types:
614 #define FL_FRAME FL_ENGRAVED_FRAME
615 #define FL_FRAME_BOX FL_ENGRAVED_BOX
616 #define FL_CIRCLE_BOX FL_ROUND_DOWN_BOX
617 #define FL_DIAMOND_BOX FL_DIAMOND_DOWN_BOX
618  // group: Box Types
620 
633 enum Fl_Labeltype { // labeltypes:
642 
644 };
645 
650 #define FL_SYMBOL_LABEL FL_NORMAL_LABEL
651 extern Fl_Labeltype FL_EXPORT fl_define_FL_SHADOW_LABEL();
652 #define FL_SHADOW_LABEL fl_define_FL_SHADOW_LABEL()
653 extern Fl_Labeltype FL_EXPORT fl_define_FL_ENGRAVED_LABEL();
654 #define FL_ENGRAVED_LABEL fl_define_FL_ENGRAVED_LABEL()
655 extern Fl_Labeltype FL_EXPORT fl_define_FL_EMBOSSED_LABEL();
656 #define FL_EMBOSSED_LABEL fl_define_FL_EMBOSSED_LABEL()
657 
690 typedef unsigned Fl_Align;
720 const Fl_Align FL_ALIGN_TOP_LEFT = FL_ALIGN_TOP | FL_ALIGN_LEFT;
721 const Fl_Align FL_ALIGN_TOP_RIGHT = FL_ALIGN_TOP | FL_ALIGN_RIGHT;
722 const Fl_Align FL_ALIGN_BOTTOM_LEFT = FL_ALIGN_BOTTOM | FL_ALIGN_LEFT;
723 const Fl_Align FL_ALIGN_BOTTOM_RIGHT = FL_ALIGN_BOTTOM | FL_ALIGN_RIGHT;
724 const Fl_Align FL_ALIGN_LEFT_TOP = 0x0007; // magic value
725 const Fl_Align FL_ALIGN_RIGHT_TOP = 0x000b; // magic value
726 const Fl_Align FL_ALIGN_LEFT_BOTTOM = 0x000d; // magic value
727 const Fl_Align FL_ALIGN_RIGHT_BOTTOM = 0x000e; // magic value
728 const Fl_Align FL_ALIGN_NOWRAP = (Fl_Align)0; // for back compatibility
729 const Fl_Align FL_ALIGN_POSITION_MASK = 0x000f; // left, right, top, bottom
730 const Fl_Align FL_ALIGN_IMAGE_MASK = 0x0320; // l/r, t/b, backdrop
739 typedef int Fl_Font;
740 
745 const Fl_Font FL_COURIER = 4;
749 const Fl_Font FL_TIMES = 8;
753 const Fl_Font FL_SYMBOL = 12;
754 const Fl_Font FL_SCREEN = 13;
757 
758 const Fl_Font FL_FREE_FONT = 16;
759 const Fl_Font FL_BOLD = 1;
760 const Fl_Font FL_ITALIC = 2;
762 
768 typedef int Fl_Fontsize;
769 
770 extern FL_EXPORT Fl_Fontsize FL_NORMAL_SIZE;
771 
796 typedef unsigned int Fl_Color;
797 
798 // Standard colors. These are used as default colors in widgets and altered as necessary
803 
804  // boxtypes generally limit themselves to these colors so
805  // the whole ramp is not allocated:
806 
807 const Fl_Color FL_GRAY0 = 32; // 'A'
808 const Fl_Color FL_DARK3 = 39; // 'H'
809 const Fl_Color FL_DARK2 = 45; // 'N'
810 const Fl_Color FL_DARK1 = 47; // 'P'
811 const Fl_Color FL_BACKGROUND_COLOR = 49; // 'R' default background color
812 const Fl_Color FL_LIGHT1 = 50; // 'S'
813 const Fl_Color FL_LIGHT2 = 52; // 'U'
814 const Fl_Color FL_LIGHT3 = 54; // 'W'
815 
816  // FLTK provides a 5x8x5 color cube that is used with colormap visuals
817 
818 const Fl_Color FL_BLACK = 56;
819 const Fl_Color FL_RED = 88;
820 const Fl_Color FL_GREEN = 63;
821 const Fl_Color FL_YELLOW = 95;
822 const Fl_Color FL_BLUE = 216;
823 const Fl_Color FL_MAGENTA = 248;
824 const Fl_Color FL_CYAN = 223;
825 const Fl_Color FL_DARK_RED = 72;
826 
827 const Fl_Color FL_DARK_GREEN = 60;
828 const Fl_Color FL_DARK_YELLOW = 76;
829 const Fl_Color FL_DARK_BLUE = 136;
830 const Fl_Color FL_DARK_MAGENTA = 152;
831 const Fl_Color FL_DARK_CYAN = 140;
832 
833 const Fl_Color FL_WHITE = 255;
834 
835 
836 #define FL_FREE_COLOR (Fl_Color)16
837 #define FL_NUM_FREE_COLOR 16
838 #define FL_GRAY_RAMP (Fl_Color)32
839 #define FL_NUM_GRAY 24
840 #define FL_GRAY FL_BACKGROUND_COLOR
841 #define FL_COLOR_CUBE (Fl_Color)56
842 #define FL_NUM_RED 5
843 #define FL_NUM_GREEN 8
844 #define FL_NUM_BLUE 5
845 
846 FL_EXPORT Fl_Color fl_inactive(Fl_Color c);
847 
848 FL_EXPORT Fl_Color fl_contrast(Fl_Color fg, Fl_Color bg);
849 
850 FL_EXPORT Fl_Color fl_color_average(Fl_Color c1, Fl_Color c2, float weight);
851 
853 inline Fl_Color fl_lighter(Fl_Color c) { return fl_color_average(c, FL_WHITE, .67f); }
854 
856 inline Fl_Color fl_darker(Fl_Color c) { return fl_color_average(c, FL_BLACK, .67f); }
857 
860  if (!r && !g && !b) return FL_BLACK;
861  else return (Fl_Color)(((((r << 8) | g) << 8) | b) << 8);
862 }
863 
866  if (!g) return FL_BLACK;
867  else return (Fl_Color)(((((g << 8) | g) << 8) | g) << 8);
868 }
869 
878 inline Fl_Color fl_gray_ramp(int i) {return (Fl_Color)(i+FL_GRAY_RAMP);}
879 
894 inline Fl_Color fl_color_cube(int r, int g, int b) {
895  return (Fl_Color)((b*FL_NUM_RED + r) * FL_NUM_GREEN + g + FL_COLOR_CUBE);}
896  // group: Colors
898 
901 
909 /* FIXME: We should renumber these, but that will break the ABI */
910 enum Fl_Cursor {
920  /* Resize indicators */
925  FL_CURSOR_N = 70,
927  FL_CURSOR_E = 49,
931  FL_CURSOR_W = 36,
935 }; // group: Cursors
937 
939 enum { // values for "when" passed to Fl::add_fd()
940  FL_READ = 1,
941  FL_WRITE = 4,
943 };
944 
946 enum Fl_Mode {
947  FL_RGB = 0,
948  FL_INDEX = 1,
949  FL_SINGLE = 0,
950  FL_DOUBLE = 2,
951  FL_ACCUM = 4,
952  FL_ALPHA = 8,
953  FL_DEPTH = 16,
954  FL_STENCIL = 32,
955  FL_RGB8 = 64,
956  FL_MULTISAMPLE= 128,
957  FL_STEREO = 256,
958  FL_FAKE_SINGLE = 512 // Fake single buffered windows using double-buffer
959 };
960 
961 // image alpha blending
962 
963 #define FL_IMAGE_WITH_ALPHA 0x40000000
964 
966 enum Fl_Damage {
974 };
975 
976 // FLTK 1.0.x compatibility definitions...
977 # ifdef FLTK_1_0_COMPAT
978 # define contrast fl_contrast
979 # define down fl_down
980 # define frame fl_frame
981 # define inactive fl_inactive
982 # endif // FLTK_1_0_COMPAT
983 
984 #endif
985 
986 //
987 // End of "$Id: Enumerations.H 10382 2014-10-15 21:00:20Z ianmacarthur $".
988 //