FLTK 1.3.5
Enumerations.H
Go to the documentation of this file.
1 //
2 // "$Id$"
3 //
4 // Enumerations for the Fast Light Tool Kit (FLTK).
5 //
6 // Copyright 1998-2017 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 /*
27  ******************************************************************************
28  * Notes on FL_ABI_VERSION and deprecated (obsolete) FLTK_ABI_VERSION:
29  *
30  * (1) FLTK_ABI_VERSION is deprecated, but still defined below.
31  * Do NOT define FLTK_ABI_VERSION here - it would be overwritten later.
32  *
33  * (2) FL_ABI_VERSION is now (as of FLTK 1.3.4) defined by configure
34  * or CMake. Do NOT define it here. Its definition will be included
35  * below by "#include <FL/abi-version.h>".
36  *
37  * (3) If you use the provided IDE files (Windows VC++ or Xcode) you should
38  * edit the definition in the provided file abi-version.ide. The correct
39  * file is `/path/to/fltk/abi-version.ide' .
40  *
41  ******************************************************************************
42  * For more informations on FL_ABI_VERSION see README.abi-version.txt.
43  ******************************************************************************
44  */
45 
46 #include <FL/abi-version.h>
47 
48 # include "Fl_Export.H"
49 # include "fl_types.h"
50 
59 
64 #define FL_MAJOR_VERSION 1
65 
71 #define FL_MINOR_VERSION 3
72 
78 #define FL_PATCH_VERSION 5
79 
101 #define FL_VERSION ( (double)FL_MAJOR_VERSION + \
102  (double)FL_MINOR_VERSION * 0.01 + \
103  (double)FL_PATCH_VERSION * 0.0001 )
104 
123 #define FL_API_VERSION (FL_MAJOR_VERSION*10000 + FL_MINOR_VERSION*100 + FL_PATCH_VERSION)
124 
155 #ifndef FL_ABI_VERSION
156 #define FL_ABI_VERSION (FL_MAJOR_VERSION*10000 + FL_MINOR_VERSION*100)
157 #endif
158 
159 /*
160  Check if FL_ABI_VERSION is out of allowed range; redefine if necessary.
161 
162  This is done to prevent users from defining an illegal ABI version.
163 
164  Rule: FL_MAJOR_VERSION * 10000 + FL_MINOR_VERSION * 100
165  <= FL_ABI_VERSION <= FL_API_VERSION.
166 
167  Example (FLTK 1.3.4):
168 
169  10300 <= FL_ABI_VERSION <= 10304
170 
171  Note: configure + CMake can be used to define FL_ABI_VERSION, but they
172  do not check validity. This is done here.
173 */
174 
175 #if FL_ABI_VERSION < FL_MAJOR_VERSION*10000 + FL_MINOR_VERSION*100
176 
177 # undef FL_ABI_VERSION
178 # define FL_ABI_VERSION (FL_MAJOR_VERSION*10000 + FL_MINOR_VERSION*100)
179 
180 #elif FL_ABI_VERSION > FL_API_VERSION
181 
182 # undef FL_ABI_VERSION
183 # define FL_ABI_VERSION FL_API_VERSION
184 
185 #endif
186 
187 /*
188  FLTK_ABI_VERSION is deprecated (replaced by FL_ABI_VERSION).
189 
190  This deprecated constant will be removed in FLTK 1.4.0 and later.
191  Please use FL_ABI_VERSION when FLTK 1.4.0 has been released.
192 */
193 
194 #ifdef FLTK_ABI_VERSION
195 #undef FLTK_ABI_VERSION
196 #endif
197 
198 #define FLTK_ABI_VERSION FL_ABI_VERSION
199  // group: Version Numbers
201 
220 // DEV NOTE: Keep this list in sync with FL/names.H
221 enum Fl_Event { // events
224 
236  FL_PUSH = 1,
237 
245 
253  FL_ENTER = 3,
254 
259  FL_LEAVE = 4,
260 
268  FL_DRAG = 5,
269 
283  FL_FOCUS = 6,
284 
289 
311 
316 
320  FL_KEYUP = 9,
321 
327  FL_CLOSE = 10,
328 
335  FL_MOVE = 11,
336 
350 
357 
362 
369  FL_HIDE = 15,
370 
377  FL_SHOW = 16,
378 
383  FL_PASTE = 17,
384 
391 
396 
402 
408 
412 
430 };
431 
439 enum Fl_When { // Fl_Widget::when():
448 };
449  // group: When Conditions
451 
464 
465 // FIXME: These codes collide with valid Unicode keys
466 
467 #define FL_Button 0xfee8
468 #define FL_BackSpace 0xff08
469 #define FL_Tab 0xff09
470 #define FL_Iso_Key 0xff0c
471 #define FL_Enter 0xff0d
472 #define FL_Pause 0xff13
473 #define FL_Scroll_Lock 0xff14
474 #define FL_Escape 0xff1b
475 #define FL_Kana 0xff2e
476 #define FL_Eisu 0xff2f
477 #define FL_Yen 0xff30
478 #define FL_JIS_Underscore 0xff31
479 #define FL_Home 0xff50
480 #define FL_Left 0xff51
481 #define FL_Up 0xff52
482 #define FL_Right 0xff53
483 #define FL_Down 0xff54
484 #define FL_Page_Up 0xff55
485 #define FL_Page_Down 0xff56
486 #define FL_End 0xff57
487 #define FL_Print 0xff61
488 #define FL_Insert 0xff63
489 #define FL_Menu 0xff67
490 #define FL_Help 0xff68
491 #define FL_Num_Lock 0xff7f
492 #define FL_KP 0xff80
493 #define FL_KP_Enter 0xff8d
494 #define FL_KP_Last 0xffbd
495 #define FL_F 0xffbd
496 #define FL_F_Last 0xffe0
497 #define FL_Shift_L 0xffe1
498 #define FL_Shift_R 0xffe2
499 #define FL_Control_L 0xffe3
500 #define FL_Control_R 0xffe4
501 #define FL_Caps_Lock 0xffe5
502 #define FL_Meta_L 0xffe7
503 #define FL_Meta_R 0xffe8
504 #define FL_Alt_L 0xffe9
505 #define FL_Alt_R 0xffea
506 #define FL_Delete 0xffff
507 
508 // These use the Private Use Area (PUA) of the Basic Multilingual Plane
509 // of Unicode. Guaranteed not to conflict with a proper Unicode character.
510 
511 // These primarily map to the XFree86 keysym range
512 #define FL_Volume_Down 0xEF11 /* Volume control down */
513 #define FL_Volume_Mute 0xEF12 /* Mute sound from the system */
514 #define FL_Volume_Up 0xEF13 /* Volume control up */
515 #define FL_Media_Play 0xEF14 /* Start playing of audio */
516 #define FL_Media_Stop 0xEF15 /* Stop playing audio */
517 #define FL_Media_Prev 0xEF16 /* Previous track */
518 #define FL_Media_Next 0xEF17 /* Next track */
519 #define FL_Home_Page 0xEF18 /* Display user's home page */
520 #define FL_Mail 0xEF19 /* Invoke user's mail program */
521 #define FL_Search 0xEF1B /* Search */
522 #define FL_Back 0xEF26 /* Like back on a browser */
523 #define FL_Forward 0xEF27 /* Like forward on a browser */
524 #define FL_Stop 0xEF28 /* Stop current operation */
525 #define FL_Refresh 0xEF29 /* Refresh the page */
526 #define FL_Sleep 0xEF2F /* Put system to sleep */
527 #define FL_Favorites 0xEF30 /* Show favorite locations */
528  // group: Mouse and Keyboard Events
530 
539 
540 #define FL_LEFT_MOUSE 1
541 #define FL_MIDDLE_MOUSE 2
542 #define FL_RIGHT_MOUSE 3
543 
544  // group: Mouse Buttons
545 
546 
552  // group: Event States
553 
554 // FIXME: it would be nice to have the modifiers in the upper 8 bit so that
555 // a unicode ke (24bit) can be sent as an unsigned with the modifiers.
556 
557 #define FL_SHIFT 0x00010000
558 #define FL_CAPS_LOCK 0x00020000
559 #define FL_CTRL 0x00040000
560 #define FL_ALT 0x00080000
561 #define FL_NUM_LOCK 0x00100000
562  // most X servers do this?
563 #define FL_META 0x00400000
564  // correct for XFree86
565 #define FL_SCROLL_LOCK 0x00800000
566  // correct for XFree86
567 #define FL_BUTTON1 0x01000000
568 #define FL_BUTTON2 0x02000000
569 #define FL_BUTTON3 0x04000000
570 #define FL_BUTTONS 0x7f000000
571 #define FL_BUTTON(n) (0x00800000<<(n))
572 
573 #define FL_KEY_MASK 0x0000ffff
574  // FIXME: Unicode needs 24 bits!
575 
576 #ifdef __APPLE__
577 # define FL_COMMAND FL_META
578 # define FL_CONTROL FL_CTRL
579 #else
580 # define FL_COMMAND FL_CTRL
581 # define FL_CONTROL FL_META
582 #endif // __APPLE__
583  // group: Event States
585 
603 enum Fl_Boxtype { // boxtypes (if you change these you must fix fl_boxtype.cxx):
604 
605  FL_NO_BOX = 0,
662 };
663 extern FL_EXPORT Fl_Boxtype fl_define_FL_ROUND_UP_BOX();
664 #define FL_ROUND_UP_BOX fl_define_FL_ROUND_UP_BOX()
665 #define FL_ROUND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_ROUND_UP_BOX()+1)
666 extern FL_EXPORT Fl_Boxtype fl_define_FL_SHADOW_BOX();
667 #define FL_SHADOW_BOX fl_define_FL_SHADOW_BOX()
668 #define FL_SHADOW_FRAME (Fl_Boxtype)(fl_define_FL_SHADOW_BOX()+2)
669 extern FL_EXPORT Fl_Boxtype fl_define_FL_ROUNDED_BOX();
670 #define FL_ROUNDED_BOX fl_define_FL_ROUNDED_BOX()
671 #define FL_ROUNDED_FRAME (Fl_Boxtype)(fl_define_FL_ROUNDED_BOX()+2)
672 extern FL_EXPORT Fl_Boxtype fl_define_FL_RFLAT_BOX();
673 #define FL_RFLAT_BOX fl_define_FL_RFLAT_BOX()
674 extern FL_EXPORT Fl_Boxtype fl_define_FL_RSHADOW_BOX();
675 #define FL_RSHADOW_BOX fl_define_FL_RSHADOW_BOX()
676 extern FL_EXPORT Fl_Boxtype fl_define_FL_DIAMOND_BOX();
677 #define FL_DIAMOND_UP_BOX fl_define_FL_DIAMOND_BOX()
678 #define FL_DIAMOND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_DIAMOND_BOX()+1)
679 extern FL_EXPORT Fl_Boxtype fl_define_FL_OVAL_BOX();
680 #define FL_OVAL_BOX fl_define_FL_OVAL_BOX()
681 #define FL_OSHADOW_BOX (Fl_Boxtype)(fl_define_FL_OVAL_BOX()+1)
682 #define FL_OVAL_FRAME (Fl_Boxtype)(fl_define_FL_OVAL_BOX()+2)
683 #define FL_OFLAT_BOX (Fl_Boxtype)(fl_define_FL_OVAL_BOX()+3)
684 
685 extern FL_EXPORT Fl_Boxtype fl_define_FL_PLASTIC_UP_BOX();
686 #define FL_PLASTIC_UP_BOX fl_define_FL_PLASTIC_UP_BOX()
687 #define FL_PLASTIC_DOWN_BOX (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+1)
688 #define FL_PLASTIC_UP_FRAME (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+2)
689 #define FL_PLASTIC_DOWN_FRAME (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+3)
690 #define FL_PLASTIC_THIN_UP_BOX (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+4)
691 #define FL_PLASTIC_THIN_DOWN_BOX (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+5)
692 #define FL_PLASTIC_ROUND_UP_BOX (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+6)
693 #define FL_PLASTIC_ROUND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_PLASTIC_UP_BOX()+7)
694 
695 extern FL_EXPORT Fl_Boxtype fl_define_FL_GTK_UP_BOX();
696 #define FL_GTK_UP_BOX fl_define_FL_GTK_UP_BOX()
697 #define FL_GTK_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+1)
698 #define FL_GTK_UP_FRAME (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+2)
699 #define FL_GTK_DOWN_FRAME (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+3)
700 #define FL_GTK_THIN_UP_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+4)
701 #define FL_GTK_THIN_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+5)
702 #define FL_GTK_THIN_UP_FRAME (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+6)
703 #define FL_GTK_THIN_DOWN_FRAME (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+7)
704 #define FL_GTK_ROUND_UP_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+8)
705 #define FL_GTK_ROUND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GTK_UP_BOX()+9)
706 
707 extern FL_EXPORT Fl_Boxtype fl_define_FL_GLEAM_UP_BOX();
708 #define FL_GLEAM_UP_BOX fl_define_FL_GLEAM_UP_BOX()
709 #define FL_GLEAM_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+1)
710 #define FL_GLEAM_UP_FRAME (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+2)
711 #define FL_GLEAM_DOWN_FRAME (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+3)
712 #define FL_GLEAM_THIN_UP_BOX (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+4)
713 #define FL_GLEAM_THIN_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+5)
714 #define FL_GLEAM_ROUND_UP_BOX (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+6)
715 #define FL_GLEAM_ROUND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+7)
716 
717 // conversions of box types to other boxtypes:
724  return (Fl_Boxtype)((b<FL_UP_BOX||b%4>1)?b:(b-2));
725 }
732  return (Fl_Boxtype)((b<FL_UP_BOX)?b:(b|1));
733 }
740  return (Fl_Boxtype)((b%4<2)?b:(b+2));
741 }
742 
743 // back-compatibility box types:
744 #define FL_FRAME FL_ENGRAVED_FRAME
745 #define FL_FRAME_BOX FL_ENGRAVED_BOX
746 #define FL_CIRCLE_BOX FL_ROUND_DOWN_BOX
747 #define FL_DIAMOND_BOX FL_DIAMOND_DOWN_BOX
748  // group: Box Types
750 
763 enum Fl_Labeltype { // labeltypes:
772 
774 };
775 
780 #define FL_SYMBOL_LABEL FL_NORMAL_LABEL
781 extern Fl_Labeltype FL_EXPORT fl_define_FL_SHADOW_LABEL();
782 #define FL_SHADOW_LABEL fl_define_FL_SHADOW_LABEL()
783 extern Fl_Labeltype FL_EXPORT fl_define_FL_ENGRAVED_LABEL();
784 #define FL_ENGRAVED_LABEL fl_define_FL_ENGRAVED_LABEL()
785 extern Fl_Labeltype FL_EXPORT fl_define_FL_EMBOSSED_LABEL();
786 #define FL_EMBOSSED_LABEL fl_define_FL_EMBOSSED_LABEL()
787 
828 typedef unsigned Fl_Align;
858 const Fl_Align FL_ALIGN_TOP_LEFT = FL_ALIGN_TOP | FL_ALIGN_LEFT;
859 const Fl_Align FL_ALIGN_TOP_RIGHT = FL_ALIGN_TOP | FL_ALIGN_RIGHT;
860 const Fl_Align FL_ALIGN_BOTTOM_LEFT = FL_ALIGN_BOTTOM | FL_ALIGN_LEFT;
861 const Fl_Align FL_ALIGN_BOTTOM_RIGHT = FL_ALIGN_BOTTOM | FL_ALIGN_RIGHT;
862 const Fl_Align FL_ALIGN_LEFT_TOP = 0x0007; // magic value
863 const Fl_Align FL_ALIGN_RIGHT_TOP = 0x000b; // magic value
864 const Fl_Align FL_ALIGN_LEFT_BOTTOM = 0x000d; // magic value
865 const Fl_Align FL_ALIGN_RIGHT_BOTTOM = 0x000e; // magic value
866 const Fl_Align FL_ALIGN_NOWRAP = (Fl_Align)0; // for back compatibility
867 const Fl_Align FL_ALIGN_POSITION_MASK = 0x000f; // left, right, top, bottom
868 const Fl_Align FL_ALIGN_IMAGE_MASK = 0x0320; // l/r, t/b, backdrop
877 typedef int Fl_Font;
878 
883 const Fl_Font FL_COURIER = 4;
887 const Fl_Font FL_TIMES = 8;
891 const Fl_Font FL_SYMBOL = 12;
892 const Fl_Font FL_SCREEN = 13;
895 
896 const Fl_Font FL_FREE_FONT = 16;
897 const Fl_Font FL_BOLD = 1;
898 const Fl_Font FL_ITALIC = 2;
900 
906 typedef int Fl_Fontsize;
907 
908 extern FL_EXPORT Fl_Fontsize FL_NORMAL_SIZE;
909 
934 typedef unsigned int Fl_Color;
935 
936 // Standard colors. These are used as default colors in widgets and altered as necessary
941 
942  // boxtypes generally limit themselves to these colors so
943  // the whole ramp is not allocated:
944 
945 const Fl_Color FL_GRAY0 = 32; // 'A'
946 const Fl_Color FL_DARK3 = 39; // 'H'
947 const Fl_Color FL_DARK2 = 45; // 'N'
948 const Fl_Color FL_DARK1 = 47; // 'P'
949 const Fl_Color FL_BACKGROUND_COLOR = 49; // 'R' default background color
950 const Fl_Color FL_LIGHT1 = 50; // 'S'
951 const Fl_Color FL_LIGHT2 = 52; // 'U'
952 const Fl_Color FL_LIGHT3 = 54; // 'W'
953 
954  // FLTK provides a 5x8x5 color cube that is used with colormap visuals
955 
956 const Fl_Color FL_BLACK = 56;
957 const Fl_Color FL_RED = 88;
958 const Fl_Color FL_GREEN = 63;
959 const Fl_Color FL_YELLOW = 95;
960 const Fl_Color FL_BLUE = 216;
961 const Fl_Color FL_MAGENTA = 248;
962 const Fl_Color FL_CYAN = 223;
963 const Fl_Color FL_DARK_RED = 72;
964 
965 const Fl_Color FL_DARK_GREEN = 60;
966 const Fl_Color FL_DARK_YELLOW = 76;
967 const Fl_Color FL_DARK_BLUE = 136;
968 const Fl_Color FL_DARK_MAGENTA = 152;
969 const Fl_Color FL_DARK_CYAN = 140;
970 
971 const Fl_Color FL_WHITE = 255;
972 
973 
974 #define FL_FREE_COLOR (Fl_Color)16
975 #define FL_NUM_FREE_COLOR 16
976 #define FL_GRAY_RAMP (Fl_Color)32
977 #define FL_NUM_GRAY 24
978 #define FL_GRAY FL_BACKGROUND_COLOR
979 #define FL_COLOR_CUBE (Fl_Color)56
980 #define FL_NUM_RED 5
981 #define FL_NUM_GREEN 8
982 #define FL_NUM_BLUE 5
983 
984 FL_EXPORT Fl_Color fl_inactive(Fl_Color c);
985 
986 FL_EXPORT Fl_Color fl_contrast(Fl_Color fg, Fl_Color bg);
987 
988 FL_EXPORT Fl_Color fl_color_average(Fl_Color c1, Fl_Color c2, float weight);
989 
991 inline Fl_Color fl_lighter(Fl_Color c) { return fl_color_average(c, FL_WHITE, .67f); }
992 
994 inline Fl_Color fl_darker(Fl_Color c) { return fl_color_average(c, FL_BLACK, .67f); }
995 
998  if (!r && !g && !b) return FL_BLACK;
999  else return (Fl_Color)(((((r << 8) | g) << 8) | b) << 8);
1000 }
1001 
1004  if (!g) return FL_BLACK;
1005  else return (Fl_Color)(((((g << 8) | g) << 8) | g) << 8);
1006 }
1007 
1016 inline Fl_Color fl_gray_ramp(int i) {return (Fl_Color)(i+FL_GRAY_RAMP);}
1017 
1032 inline Fl_Color fl_color_cube(int r, int g, int b) {
1033  return (Fl_Color)((b*FL_NUM_RED + r) * FL_NUM_GREEN + g + FL_COLOR_CUBE);}
1034  // group: Colors
1036 
1039 
1047 /* FIXME: We should renumber these, but that will break the ABI */
1058  /* Resize indicators */
1073 }; // group: Cursors
1075 
1077 enum { // values for "when" passed to Fl::add_fd()
1078  FL_READ = 1,
1079  FL_WRITE = 4,
1081 };
1082 
1084 enum Fl_Mode {
1085  FL_RGB = 0,
1086  FL_INDEX = 1,
1087  FL_SINGLE = 0,
1088  FL_DOUBLE = 2,
1089  FL_ACCUM = 4,
1090  FL_ALPHA = 8,
1091  FL_DEPTH = 16,
1092  FL_STENCIL = 32,
1093  FL_RGB8 = 64,
1094  FL_MULTISAMPLE= 128,
1095  FL_STEREO = 256,
1096  FL_FAKE_SINGLE = 512, // Fake single buffered windows using double-buffer
1097  FL_OPENGL3 = 1024
1098 };
1099 
1100 // image alpha blending
1101 
1102 #define FL_IMAGE_WITH_ALPHA 0x40000000
1103 
1113 };
1114 
1115 // FLTK 1.0.x compatibility definitions...
1116 # ifdef FLTK_1_0_COMPAT
1117 # define contrast fl_contrast
1118 # define down fl_down
1119 # define frame fl_frame
1120 # define inactive fl_inactive
1121 # endif // FLTK_1_0_COMPAT
1122 
1123 #endif
1124 
1125 //
1126 // End of "$Id$".
1127 //