diff --git a/plugins/zynaddsubfx/fltk/CHANGES b/plugins/zynaddsubfx/fltk/CHANGES index d483336fff..9d9ba34272 100644 --- a/plugins/zynaddsubfx/fltk/CHANGES +++ b/plugins/zynaddsubfx/fltk/CHANGES @@ -1,5 +1,22 @@ CHANGES IN FLTK 1.3.0 + - Managing all Widget flags in a single location now (STR #2161) + - Fixed all color related call to Fl_Color type (STR #2208) + - File chooser preview now recognizes utf8 encoded + text files (STR #2218) + - Empty functions in Fluid no longer create an + implementation (STR #2259) + - Fixed Fluid dependency on X11 (STR #2261) + - Updated the bundled libpng to v1.2.40 (released Sep. 10, 2009) + - Fixed Fl_Choice contrast with light-on-dark settings (STR #2219) + - Fixed X server "lock", if a modal dialog window is opened + while a menu is active (STR #1986) + - Updated mirror sites in documentation (STR #2220) + - Setting a default font for Xft (STR #2216) + - Temporarily limited builds to 32-bit on OX S to stay + compatible to Snow Leopard + - Fixed Windows compile bug with "#define USE_COLORMAP 0" + (STR #2241) - Fixed glibc 2.10 compiler problems (Fedora 11 and others) with scandir() and strchr() (STR #2222) - Corrected const methods of Fl_Text_{Buffer|Display|Selection} @@ -27,7 +44,6 @@ CHANGES IN FLTK 1.3.0 - Added drop box to utf8 test that will show the utf8 encoding for the first dropped character - Restructured the unittest application - - Updated the bundled libpng to v1.2.35 (released 18 Feb. 2009) - Fl_Preferences.H now doesn't include windows.h any more (Windows only, STR #2173). - Fl_Window::draw() now doesn't reset its x/y-coordinates to 0 diff --git a/plugins/zynaddsubfx/fltk/CMake/PlatformTests.cxx b/plugins/zynaddsubfx/fltk/CMake/PlatformTests.cxx index 9e92850a73..bfe97ac951 100644 --- a/plugins/zynaddsubfx/fltk/CMake/PlatformTests.cxx +++ b/plugins/zynaddsubfx/fltk/CMake/PlatformTests.cxx @@ -29,7 +29,7 @@ int main() { struct jpeg_decompress_struct cinfo; jpeg_create_decompress(&cinfo); - jpeg_read_header(&cinfo, true); + jpeg_read_header(&cinfo, TRUE); return 1; } diff --git a/plugins/zynaddsubfx/fltk/CMakeLists.txt b/plugins/zynaddsubfx/fltk/CMakeLists.txt index 70892eb5ec..d877e6c184 100644 --- a/plugins/zynaddsubfx/fltk/CMakeLists.txt +++ b/plugins/zynaddsubfx/fltk/CMakeLists.txt @@ -67,6 +67,7 @@ IF(UNIX) ENDIF(UNIX) +# OS X with X11 is not currently supported! SET(FLTK_X11 1) SET(FLTK_APPLE 0) IF(APPLE) @@ -92,7 +93,7 @@ ENDIF(CYGWIN) IF(MINGW) ADD_DEFINITIONS(-DWIN32) - SET( FLTK_PLATFORM_DEPENDENT_LIBS ole32 uuid wsock32 gdi32 comdlg32) + SET( FLTK_PLATFORM_DEPENDENT_LIBS ole32 uuid comctl32 gdi32 comdlg32) ENDIF(MINGW) INCLUDE(CheckIncludeFiles) diff --git a/plugins/zynaddsubfx/fltk/FL/Enumerations.H b/plugins/zynaddsubfx/fltk/FL/Enumerations.H index a9b71b4637..ba92ec2b09 100644 --- a/plugins/zynaddsubfx/fltk/FL/Enumerations.H +++ b/plugins/zynaddsubfx/fltk/FL/Enumerations.H @@ -1,5 +1,5 @@ // -// "$Id: Enumerations.H 6735 2009-04-01 22:11:57Z engelsman $" +// "$Id: Enumerations.H 6902 2009-09-27 11:06:56Z matt $" // // Enumerations for the Fast Light Tool Kit (FLTK). // @@ -330,6 +330,8 @@ enum Fl_When { // Fl_Widget::when(): /*@{*/ +// FIXME: These codes collide with valid Unicode keys + #define FL_Button 0xfee8 ///< A mouse button; use Fl_Button + n for mouse button n. #define FL_BackSpace 0xff08 ///< The backspace key. #define FL_Tab 0xff09 ///< The tab key. @@ -391,6 +393,9 @@ enum Fl_When { // Fl_Widget::when(): /*@{*/ // group: Event States +// FIXME: it would be nice to have the modifiers in the upper 8 bit so that +// a unicode ke (24bit) can be sent as an unsigned with the modifiers. + #define FL_SHIFT 0x00010000 ///< One of the shift keys is down #define FL_CAPS_LOCK 0x00020000 ///< The caps lock is on #define FL_CTRL 0x00040000 ///< One of the ctrl keys is down @@ -407,10 +412,15 @@ enum Fl_When { // Fl_Widget::when(): #define FL_BUTTONS 0x7f000000 ///< Any mouse button is pushed #define FL_BUTTON(n) (0x00800000<<(n)) ///< Mouse button n (n > 0) is pushed +#define FL_KEY_MASK 0x0000ffff ///< All keys are 16 bit for now + // FIXME: Unicode needs 24 bits! + #ifdef __APPLE__ -# define FL_COMMAND FL_META ///< An alias for FL_CTRL on WIN32 and X11, or FL_META on MacOS X +# define FL_COMMAND FL_META ///< An alias for FL_CTRL on WIN32 and X11, or FL_META on MacOS X +# define FL_CONTROL FL_CTRL ///< An alias for FL_META on WIN32 and X11, or FL_META on MacOS X #else # define FL_COMMAND FL_CTRL ///< An alias for FL_CTRL on WIN32 and X11, or FL_META on MacOS X +# define FL_CONTROL FL_META ///< An alias for FL_META on WIN32 and X11, or FL_META on MacOS X #endif // __APPLE__ /*@}*/ // group: Event States @@ -689,7 +699,7 @@ extern FL_EXPORT Fl_Fontsize FL_NORMAL_SIZE; ///< normal font size /** \name Colors */ /*@{*/ -/** The Fl_Color enumeration type holds a FLTK color value. +/** The Fl_Color type holds an FLTK color value. Colors are either 8-bit indexes into a virtual colormap or 24-bit RGB color values. @@ -697,75 +707,94 @@ extern FL_EXPORT Fl_Fontsize FL_NORMAL_SIZE; ///< normal font size Color indices occupy the lower 8 bits of the value, while RGB colors occupy the upper 24 bits, for a byte organization of RGBI. - \todo enum Fl_Color needs some more comments for values, - see Fl/Enumerations.H +
+ Fl_Color => 0xrrggbbii
+                | | | |
+                | | | +--- index between 0 and 255
+                | | +----- blue color component (8 bit)
+                | +------- green component (8 bit)
+                +--------- red component (8 bit)
+ 
+ + A color can have either an index or an rgb value. Colors with rgb set + and an index >0 are reserved for special use. + */ -enum Fl_Color { // standard colors - // These are used as default colors in widgets and altered as necessary - FL_FOREGROUND_COLOR = 0, ///< the default foreground color (0) used for labels and text - FL_BACKGROUND2_COLOR = 7, ///< the default background color for text, list, and valuator widgets - FL_INACTIVE_COLOR = 8, ///< the inactive foreground color - FL_SELECTION_COLOR = 15, ///< the default selection/highlight color +typedef unsigned int Fl_Color; + +// Standard colors. These are used as default colors in widgets and altered as necessary +const Fl_Color FL_FOREGROUND_COLOR = 0; ///< the default foreground color (0) used for labels and text +const Fl_Color FL_BACKGROUND2_COLOR = 7; ///< the default background color for text, list, and valuator widgets +const Fl_Color FL_INACTIVE_COLOR = 8; ///< the inactive foreground color +const Fl_Color FL_SELECTION_COLOR = 15; ///< the default selection/highlight color // boxtypes generally limit themselves to these colors so // the whole ramp is not allocated: - FL_GRAY0 = 32, // 'A' - FL_DARK3 = 39, // 'H' - FL_DARK2 = 45, // 'N' - FL_DARK1 = 47, // 'P' - FL_BACKGROUND_COLOR = 49, // 'R' default background color - FL_LIGHT1 = 50, // 'S' - FL_LIGHT2 = 52, // 'U' - FL_LIGHT3 = 54, // 'W' +const Fl_Color FL_GRAY0 = 32; // 'A' +const Fl_Color FL_DARK3 = 39; // 'H' +const Fl_Color FL_DARK2 = 45; // 'N' +const Fl_Color FL_DARK1 = 47; // 'P' +const Fl_Color FL_BACKGROUND_COLOR = 49; // 'R' default background color +const Fl_Color FL_LIGHT1 = 50; // 'S' +const Fl_Color FL_LIGHT2 = 52; // 'U' +const Fl_Color FL_LIGHT3 = 54; // 'W' // FLTK provides a 5x8x5 color cube that is used with colormap visuals - FL_BLACK = 56, - FL_RED = 88, - FL_GREEN = 63, - FL_YELLOW = 95, - FL_BLUE = 216, - FL_MAGENTA = 248, - FL_CYAN = 223, - FL_DARK_RED = 72, +const Fl_Color FL_BLACK = 56; +const Fl_Color FL_RED = 88; +const Fl_Color FL_GREEN = 63; +const Fl_Color FL_YELLOW = 95; +const Fl_Color FL_BLUE = 216; +const Fl_Color FL_MAGENTA = 248; +const Fl_Color FL_CYAN = 223; +const Fl_Color FL_DARK_RED = 72; - FL_DARK_GREEN = 60, - FL_DARK_YELLOW = 76, - FL_DARK_BLUE = 136, - FL_DARK_MAGENTA = 152, - FL_DARK_CYAN = 140, +const Fl_Color FL_DARK_GREEN = 60; +const Fl_Color FL_DARK_YELLOW = 76; +const Fl_Color FL_DARK_BLUE = 136; +const Fl_Color FL_DARK_MAGENTA = 152; +const Fl_Color FL_DARK_CYAN = 140; - FL_WHITE = 255 -}; +const Fl_Color FL_WHITE = 255; -#define FL_FREE_COLOR (Fl_Color)16 -#define FL_NUM_FREE_COLOR 16 -#define FL_GRAY_RAMP (Fl_Color)32 -#define FL_NUM_GRAY 24 -#define FL_GRAY FL_BACKGROUND_COLOR -#define FL_COLOR_CUBE (Fl_Color)56 -#define FL_NUM_RED 5 -#define FL_NUM_GREEN 8 -#define FL_NUM_BLUE 5 + +#define FL_FREE_COLOR (Fl_Color)16 +#define FL_NUM_FREE_COLOR 16 +#define FL_GRAY_RAMP (Fl_Color)32 +#define FL_NUM_GRAY 24 +#define FL_GRAY FL_BACKGROUND_COLOR +#define FL_COLOR_CUBE (Fl_Color)56 +#define FL_NUM_RED 5 +#define FL_NUM_GREEN 8 +#define FL_NUM_BLUE 5 FL_EXPORT Fl_Color fl_inactive(Fl_Color c); + FL_EXPORT Fl_Color fl_contrast(Fl_Color fg, Fl_Color bg); + FL_EXPORT Fl_Color fl_color_average(Fl_Color c1, Fl_Color c2, float weight); + inline Fl_Color fl_lighter(Fl_Color c) { return fl_color_average(c, FL_WHITE, .67f); } + inline Fl_Color fl_darker(Fl_Color c) { return fl_color_average(c, FL_BLACK, .67f); } + /** return 24-bit color value closest to \p r, \p g, \p b. */ inline Fl_Color fl_rgb_color(uchar r, uchar g, uchar b) { if (!r && !g && !b) return FL_BLACK; else return (Fl_Color)(((((r << 8) | g) << 8) | b) << 8); } + /** return 24-bit color value closest to \p grayscale */ inline Fl_Color fl_rgb_color(uchar g) { if (!g) return FL_BLACK; else return (Fl_Color)(((((g << 8) | g) << 8) | g) << 8); } + inline Fl_Color fl_gray_ramp(int i) {return (Fl_Color)(i+FL_GRAY_RAMP);} + inline Fl_Color fl_color_cube(int r, int g, int b) { return (Fl_Color)((b*FL_NUM_RED + r) * FL_NUM_GREEN + g + FL_COLOR_CUBE);} @@ -857,5 +886,5 @@ enum Fl_Damage { #endif // -// End of "$Id: Enumerations.H 6735 2009-04-01 22:11:57Z engelsman $". +// End of "$Id: Enumerations.H 6902 2009-09-27 11:06:56Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl.H b/plugins/zynaddsubfx/fltk/FL/Fl.H index d9f8e77e1b..700f519368 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl.H @@ -1,5 +1,5 @@ // -// "$Id: Fl.H 6771 2009-04-19 12:47:36Z matt $" +// "$Id: Fl.H 6903 2009-09-27 11:09:03Z matt $" // // Main header file for the Fast Light Tool Kit (FLTK). // @@ -489,18 +489,25 @@ public: static int event_state() {return e_state;} /** See int event_state() */ static int event_state(int i) {return e_state&i;} - /** Gets which key on the keyboard was last pushed. - \retval 0 if the last event was not a key press or release. - \see int event_key(int) */ + /** + Gets which key on the keyboard was last pushed. + + The returned integer 'key code' is not necessarily a text + equivalent for the keystroke. For instance: if someone presses '5' on the + numeric keypad with numlock on, Fl::event_key() may return the 'key code' + for this key, and NOT the character '5'. To always get the '5', use Fl::event_text() instead. + + \returns an integer 'key code', or 0 if the last event was not a key press or release. + \see int event_key(int), event_text(), compose(int&). + */ static int event_key() {return e_keysym;} /** Returns the keycode of the last key event, regardless of the NumLock state. - + If NumLock is deactivated, FLTK translates events from the numeric keypad into the corresponding arrow key events. event_key() returns the translated key code, whereas - event_original_key() returns the keycode before - NumLock translation. + event_original_key() returns the keycode before NumLock translation. */ static int event_original_key(){return e_original_keysym;} /** @@ -548,7 +555,20 @@ public: slower than Fl::event_key(int). \see event_key(int) */ static int get_key(int key); // platform dependent - /** Returns the text associated with the current FL_PASTE or FL_DND_RELEASE event. */ + /** + Returns the text associated with the current event, including FL_PASTE or FL_DND_RELEASE events. + This can be used in response to FL_KEYUP, FL_KEYDOWN, FL_PASTE, FL_DND_RELEASE. + + When responding to FL_KEYUP/FL_KEYDOWN, use this function instead of Fl::event_key() + to get the text equivalent of keystrokes suitable for inserting into strings + and text widgets. + + The returned string is guaranteed to be be NULL terminated. + However, see Fl::event_length() for the actual length of the string, + in case the string itself contains NULLs that are part of the text data. + + \returns A NULL terminated text string equivalent of the last keystroke. + */ static const char* event_text() {return e_text;} /** Returns the length of the text in Fl::event_text(). There @@ -568,7 +588,7 @@ public: static void compose_reset() {compose_state = 0;} static int event_inside(int,int,int,int); static int event_inside(const Fl_Widget*); - static int test_shortcut(int); + static int test_shortcut(Fl_Shortcut); // event destinations: static int handle(int, Fl_Window*); @@ -660,7 +680,7 @@ public: 8-bit RGB color. The color is not allocated until fl_color(i) is used. */ static void set_color(Fl_Color, unsigned); // platform dependent - static unsigned get_color(Fl_Color); + static Fl_Color get_color(Fl_Color); static void get_color(Fl_Color, uchar&, uchar&, uchar&); /** Frees the specified color from the colormap, if applicable. @@ -1022,5 +1042,5 @@ public: #endif // !Fl_H // -// End of "$Id: Fl.H 6771 2009-04-19 12:47:36Z matt $". +// End of "$Id: Fl.H 6903 2009-09-27 11:09:03Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Browser.H b/plugins/zynaddsubfx/fltk/FL/Fl_Browser.H index d8f920d4e1..a2f8b00cee 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Browser.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Browser.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Browser.H 6726 2009-03-27 16:52:31Z greg.ercolano $" +// "$Id: Fl_Browser.H 6850 2009-09-07 02:25:51Z greg.ercolano $" // // Browser header file for the Fast Light Tool Kit (FLTK). // @@ -36,6 +36,7 @@ #define Fl_Browser_H #include "Fl_Browser_.H" +#include "Fl_Image.H" struct FL_BLINE; @@ -306,6 +307,11 @@ public: else Fl_Browser_::display(find_line(line)); } + // icon support + void icon(int line, Fl_Image* icon); + Fl_Image* icon(int line) const; + void remove_icon(int line); + /** For back compatibility only. */ void replace(int a, const char* b) { text(a, b); } void display(int line, int val=1); @@ -314,5 +320,5 @@ public: #endif // -// End of "$Id: Fl_Browser.H 6726 2009-03-27 16:52:31Z greg.ercolano $". +// End of "$Id: Fl_Browser.H 6850 2009-09-07 02:25:51Z greg.ercolano $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Browser_.H b/plugins/zynaddsubfx/fltk/FL/Fl_Browser_.H index 3d89a8ec94..4068ae48b4 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Browser_.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Browser_.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Browser_.H 6737 2009-04-02 06:44:34Z greg.ercolano $" +// "$Id: Fl_Browser_.H 6902 2009-09-27 11:06:56Z matt $" // // Common browser header file for the Fast Light Tool Kit (FLTK). // @@ -74,7 +74,7 @@ class FL_EXPORT Fl_Browser_ : public Fl_Group { uchar has_scrollbar_; // which scrollbars are enabled Fl_Font textfont_; Fl_Fontsize textsize_; - unsigned textcolor_; + Fl_Color textcolor_; void* top_; // which item scrolling position is in void* selection_; // which is selected (except for FL_MULTI_BROWSER) void *redraw1,*redraw2; // minimal update pointers @@ -297,11 +297,11 @@ public: /** Gets the default text color for the lines in the browser. */ - Fl_Color textcolor() const { return (Fl_Color)textcolor_; } + Fl_Color textcolor() const { return textcolor_; } /** Sets the default text color for the lines in the browser to color \p col. */ - void textcolor(unsigned col) { textcolor_ = col; } + void textcolor(Fl_Color col) { textcolor_ = col; } /** Gets the current size of the scrollbars' troughs, in pixels. @@ -374,5 +374,5 @@ public: #endif // -// End of "$Id: Fl_Browser_.H 6737 2009-04-02 06:44:34Z greg.ercolano $". +// End of "$Id: Fl_Browser_.H 6902 2009-09-27 11:06:56Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Button.H b/plugins/zynaddsubfx/fltk/FL/Fl_Button.H index d71c066725..73d6e4b0dc 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Button.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Button.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Button.H 6614 2009-01-01 16:11:32Z matt $" +// "$Id: Fl_Button.H 6878 2009-09-17 22:12:24Z matt $" // // Button header file for the Fast Light Tool Kit (FLTK). // @@ -45,7 +45,7 @@ #define FL_HIDDEN_BUTTON 3 ///< for Forms compatibility #ifndef FL_DOXYGEN -extern FL_EXPORT int fl_old_shortcut(const char*); +extern FL_EXPORT Fl_Shortcut fl_old_shortcut(const char*); #endif /** @@ -172,5 +172,5 @@ public: #endif // -// End of "$Id: Fl_Button.H 6614 2009-01-01 16:11:32Z matt $". +// End of "$Id: Fl_Button.H 6878 2009-09-17 22:12:24Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Chart.H b/plugins/zynaddsubfx/fltk/FL/Fl_Chart.H index 29b68ed441..e94c1a02a9 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Chart.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Chart.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Chart.H 6614 2009-01-01 16:11:32Z matt $" +// "$Id: Fl_Chart.H 6902 2009-09-27 11:06:56Z matt $" // // Forms chart header file for the Fast Light Tool Kit (FLTK). // @@ -87,7 +87,7 @@ class FL_EXPORT Fl_Chart : public Fl_Widget { uchar autosize_; Fl_Font textfont_; Fl_Fontsize textsize_; - unsigned textcolor_; + Fl_Color textcolor_; protected: void draw(); public: @@ -136,9 +136,9 @@ public: void textsize(Fl_Fontsize s) {textsize_ = s;} /** Gets the chart's text color */ - Fl_Color textcolor() const {return (Fl_Color)textcolor_;} + Fl_Color textcolor() const {return textcolor_;} /** gets the chart's text color to \p n. */ - void textcolor(unsigned n) {textcolor_ = n;} + void textcolor(Fl_Color n) {textcolor_ = n;} /** Get whether the chart will automatically adjust the bounds of the chart. @@ -156,5 +156,5 @@ public: #endif // -// End of "$Id: Fl_Chart.H 6614 2009-01-01 16:11:32Z matt $". +// End of "$Id: Fl_Chart.H 6902 2009-09-27 11:06:56Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Clock.H b/plugins/zynaddsubfx/fltk/FL/Fl_Clock.H index afaa2f4463..c4cf6c21b6 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Clock.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Clock.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Clock.H 6754 2009-04-12 11:32:22Z AlbrechtS $" +// "$Id: Fl_Clock.H 6812 2009-07-01 07:27:25Z AlbrechtS $" // // Clock header file for the Fast Light Tool Kit (FLTK). // @@ -133,5 +133,5 @@ public: #endif // -// End of "$Id: Fl_Clock.H 6754 2009-04-12 11:32:22Z AlbrechtS $". +// End of "$Id: Fl_Clock.H 6812 2009-07-01 07:27:25Z AlbrechtS $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Counter.H b/plugins/zynaddsubfx/fltk/FL/Fl_Counter.H index e52c092c52..24930779a7 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Counter.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Counter.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Counter.H 6716 2009-03-24 01:40:44Z fabien $" +// "$Id: Fl_Counter.H 6902 2009-09-27 11:06:56Z matt $" // // Counter header file for the Fast Light Tool Kit (FLTK). // @@ -58,7 +58,7 @@ class FL_EXPORT Fl_Counter : public Fl_Valuator { Fl_Font textfont_; Fl_Fontsize textsize_; - unsigned textcolor_; + Fl_Color textcolor_; double lstep_; uchar mouseobj; static void repeat_callback(void *); @@ -111,14 +111,14 @@ public: void textsize(Fl_Fontsize s) {textsize_ = s;} /** Gets the font color */ - Fl_Color textcolor() const {return (Fl_Color)textcolor_;} + Fl_Color textcolor() const {return textcolor_;} /** Sets the font color to \p s */ - void textcolor(unsigned s) {textcolor_ = s;} + void textcolor(Fl_Color s) {textcolor_ = s;} }; #endif // -// End of "$Id: Fl_Counter.H 6716 2009-03-24 01:40:44Z fabien $". +// End of "$Id: Fl_Counter.H 6902 2009-09-27 11:06:56Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Group.H b/plugins/zynaddsubfx/fltk/FL/Fl_Group.H index 2db9d79926..5ba61ad258 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Group.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Group.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Group.H 6716 2009-03-24 01:40:44Z fabien $" +// "$Id: Fl_Group.H 6907 2009-09-28 14:34:52Z matt $" // // Group header file for the Fast Light Tool Kit (FLTK). // @@ -58,8 +58,6 @@ class FL_EXPORT Fl_Group : public Fl_Widget { Fl_Group& operator=(const Fl_Group&); protected: - enum { CLIP_CHILDREN = 2048 }; - void draw(); void draw_child(Fl_Widget& widget) const; void draw_children(); @@ -176,7 +174,7 @@ public: \see void Fl_Group::clip_children(int c) */ - int clip_children() { return (flags() & CLIP_CHILDREN) != 0; } + unsigned int clip_children() { return (flags() & CLIP_CHILDREN) != 0; } // back compatibility functions: @@ -224,5 +222,5 @@ public: #endif // -// End of "$Id: Fl_Group.H 6716 2009-03-24 01:40:44Z fabien $". +// End of "$Id: Fl_Group.H 6907 2009-09-28 14:34:52Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Input_.H b/plugins/zynaddsubfx/fltk/FL/Fl_Input_.H index 7217bb6603..26dab7d1ae 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Input_.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Input_.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Input_.H 6777 2009-04-23 15:32:19Z matt $" +// "$Id: Fl_Input_.H 6902 2009-09-27 11:06:56Z matt $" // // Input base class header file for the Fast Light Tool Kit (FLTK). // @@ -120,7 +120,7 @@ class FL_EXPORT Fl_Input_ : public Fl_Widget { \p mark_, no text is selected */ int mark_; - /** \internal Offset to text origin within wdget bounds */ + /** \internal Offset to text origin within widget bounds */ int xscroll_, yscroll_; /** \internal Minimal update pointer. Display requirs redraw from here to the end @@ -143,10 +143,10 @@ class FL_EXPORT Fl_Input_ : public Fl_Widget { Fl_Fontsize textsize_; /** \internal color of the entire text */ - unsigned textcolor_; + Fl_Color textcolor_; /** \internal color of the text cursor */ - unsigned cursor_color_; + Fl_Color cursor_color_; /** \internal Horizontal cursor position in pixels while movin up or down. */ static double up_down_pos; @@ -206,6 +206,7 @@ protected: /** \internal Vertical offset of text to top edge of widget. */ int yscroll() const {return yscroll_;} + void yscroll(int y) { yscroll_ = y; damage(FL_DAMAGE_EXPOSE);} /* Return the number of lines displayed on a single page. */ int linesPerPage(); @@ -396,23 +397,23 @@ public: /** Gets the color of the text in the input field. \return the text color - \see textcolor(unsigned) */ - Fl_Color textcolor() const {return (Fl_Color)textcolor_;} + \see textcolor(Fl_Color) */ + Fl_Color textcolor() const {return textcolor_;} /** Sets the color of the text in the input field. The text color defaults to \c FL_FOREGROUND_COLOR. \param [in] n new text color \see textcolor() */ - void textcolor(unsigned n) {textcolor_ = n;} + void textcolor(Fl_Color n) {textcolor_ = n;} /** Gets the color of the cursor. \return the current cursor color */ - Fl_Color cursor_color() const {return (Fl_Color)cursor_color_;} + Fl_Color cursor_color() const {return cursor_color_;} /** Sets the color of the cursor. The default color for the cursor is \c FL_BLACK. \param [in] n the new cursor color */ - void cursor_color(unsigned n) {cursor_color_ = n;} + void cursor_color(Fl_Color n) {cursor_color_ = n;} /** Gets the input field type. \return the current input type */ @@ -450,5 +451,5 @@ public: #endif // -// End of "$Id: Fl_Input_.H 6777 2009-04-23 15:32:19Z matt $". +// End of "$Id: Fl_Input_.H 6902 2009-09-27 11:06:56Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Menu_.H b/plugins/zynaddsubfx/fltk/FL/Fl_Menu_.H index 41bcd5c14f..89ced65f62 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Menu_.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Menu_.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Menu_.H 6614 2009-01-01 16:11:32Z matt $" +// "$Id: Fl_Menu_.H 6902 2009-09-27 11:06:56Z matt $" // // Menu base class header file for the Fast Light Tool Kit (FLTK). // @@ -56,7 +56,7 @@ protected: uchar down_box_; Fl_Font textfont_; Fl_Fontsize textsize_; - unsigned textcolor_; + Fl_Color textcolor_; public: Fl_Menu_(int,int,int,int,const char * =0); @@ -119,9 +119,9 @@ public: /** Sets the font size of menu item labels. */ void textsize(Fl_Fontsize c) {textsize_=c;} /** Get the current color of menu item labels. */ - Fl_Color textcolor() const {return (Fl_Color)textcolor_;} + Fl_Color textcolor() const {return textcolor_;} /** Sets the current color of menu item labels. */ - void textcolor(unsigned c) {textcolor_=c;} + void textcolor(Fl_Color c) {textcolor_=c;} /** This box type is used to surround the currently-selected items in the @@ -142,5 +142,5 @@ public: #endif // -// End of "$Id: Fl_Menu_.H 6614 2009-01-01 16:11:32Z matt $". +// End of "$Id: Fl_Menu_.H 6902 2009-09-27 11:06:56Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Menu_Item.H b/plugins/zynaddsubfx/fltk/FL/Fl_Menu_Item.H index b4052b8c85..be81b8cc0d 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Menu_Item.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Menu_Item.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Menu_Item.H 6614 2009-01-01 16:11:32Z matt $" +// "$Id: Fl_Menu_Item.H 6902 2009-09-27 11:06:56Z matt $" // // Menu item header file for the Fast Light Tool Kit (FLTK). // @@ -36,18 +36,18 @@ # endif enum { // values for flags: - FL_MENU_INACTIVE = 1, - FL_MENU_TOGGLE= 2, - FL_MENU_VALUE = 4, - FL_MENU_RADIO = 8, - FL_MENU_INVISIBLE = 0x10, - FL_SUBMENU_POINTER = 0x20, - FL_SUBMENU = 0x40, - FL_MENU_DIVIDER = 0x80, - FL_MENU_HORIZONTAL = 0x100 + FL_MENU_INACTIVE = 1, ///< Deactivate menu item (gray out) + FL_MENU_TOGGLE= 2, ///< Item is a checkbox toggle (shows checkbox for on/off state) + FL_MENU_VALUE = 4, ///< The on/off state for checkbox/radio buttons (if set, state is 'on') + FL_MENU_RADIO = 8, ///< Item is a radio button (one checkbox of many can be on) + FL_MENU_INVISIBLE = 0x10, ///< Item will not show up (shortcut will work) + FL_SUBMENU_POINTER = 0x20, ///< Indicates user_data() is a pointer to another menu array + FL_SUBMENU = 0x40, ///< This item is a submenu to other items + FL_MENU_DIVIDER = 0x80, ///< Creates divider line below this item. Also ends a group of radio buttons. + FL_MENU_HORIZONTAL = 0x100 ///< ??? -- reserved }; -extern FL_EXPORT int fl_old_shortcut(const char*); +extern FL_EXPORT Fl_Shortcut fl_old_shortcut(const char*); class Fl_Menu_; @@ -68,15 +68,15 @@ class Fl_Menu_; }; enum { // values for flags: - FL_MENU_INACTIVE = 1, - FL_MENU_TOGGLE = 2, - FL_MENU_VALUE = 4, - FL_MENU_RADIO = 8, - FL_MENU_INVISIBLE = 0x10, - FL_SUBMENU_POINTER = 0x20, - FL_SUBMENU = 0x40, - FL_MENU_DIVIDER = 0x80, - FL_MENU_HORIZONTAL = 0x100 + FL_MENU_INACTIVE = 1, // Deactivate menu item (gray out) + FL_MENU_TOGGLE = 2, // Item is a checkbox toggle (shows checkbox for on/off state) + FL_MENU_VALUE = 4, // The on/off state for checkbox/radio buttons (if set, state is 'on') + FL_MENU_RADIO = 8, // Item is a radio button (one checkbox of many can be on) + FL_MENU_INVISIBLE = 0x10, // Item will not show up (shortcut will work) + FL_SUBMENU_POINTER = 0x20, // Indicates user_data() is a pointer to another menu array + FL_SUBMENU = 0x40, // This item is a submenu to other items + FL_MENU_DIVIDER = 0x80, // Creates divider line below this item. Also ends a group of radio buttons. + FL_MENU_HORIZONTAL = 0x100 // ??? -- reserved }; \endcode Typically menu items are statically defined; for example: @@ -124,7 +124,7 @@ struct FL_EXPORT Fl_Menu_Item { uchar labeltype_; ///< how the menu item text looks like Fl_Font labelfont_; ///< which font for this menu item text Fl_Fontsize labelsize_; ///< size of menu item text - unsigned labelcolor_; ///< menu item text color + Fl_Color labelcolor_; ///< menu item text color // advance N items, skipping submenus: const Fl_Menu_Item *next(int=1) const; @@ -181,10 +181,10 @@ struct FL_EXPORT Fl_Menu_Item { color is not black fltk will not use overlay bitplanes to draw the menu - this is so that images put in the menu draw correctly. */ - Fl_Color labelcolor() const {return (Fl_Color)labelcolor_;} + Fl_Color labelcolor() const {return labelcolor_;} /** See Fl_Color Fl_Menu_Item::labelcolor() const */ - void labelcolor(unsigned a) {labelcolor_ = a;} + void labelcolor(Fl_Color a) {labelcolor_ = a;} /** Fonts are identified by small 8-bit indexes into a table. See the enumeration list for predefined fonts. The default value is a @@ -414,5 +414,5 @@ enum { // back-compatibility enum: #endif // -// End of "$Id: Fl_Menu_Item.H 6614 2009-01-01 16:11:32Z matt $". +// End of "$Id: Fl_Menu_Item.H 6902 2009-09-27 11:06:56Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Menu_Window.H b/plugins/zynaddsubfx/fltk/FL/Fl_Menu_Window.H index e2e77f1ea4..217e224afb 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Menu_Window.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Menu_Window.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Menu_Window.H 6614 2009-01-01 16:11:32Z matt $" +// "$Id: Fl_Menu_Window.H 6909 2009-09-28 14:41:43Z matt $" // // Menu window header file for the Fast Light Tool Kit (FLTK). // @@ -40,14 +40,13 @@ redraw. */ class FL_EXPORT Fl_Menu_Window : public Fl_Single_Window { - enum {NO_OVERLAY = 128}; public: void show(); void erase(); void flush(); void hide(); /** Tells if hardware overlay mode is set */ - int overlay() {return !(flags()&NO_OVERLAY);} + unsigned int overlay() {return !(flags()&NO_OVERLAY);} /** Tells FLTK to use hardware overlay planes if they are available. */ void set_overlay() {clear_flag(NO_OVERLAY);} /** Tells FLTK to use normal drawing planes instead of overlay planes. @@ -65,5 +64,5 @@ public: #endif // -// End of "$Id: Fl_Menu_Window.H 6614 2009-01-01 16:11:32Z matt $". +// End of "$Id: Fl_Menu_Window.H 6909 2009-09-28 14:41:43Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Multiline_Input.H b/plugins/zynaddsubfx/fltk/FL/Fl_Multiline_Input.H index feec464989..5f46624be5 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Multiline_Input.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Multiline_Input.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Multiline_Input.H 6614 2009-01-01 16:11:32Z matt $" +// "$Id: Fl_Multiline_Input.H 6889 2009-09-19 22:09:00Z greg.ercolano $" // // Multiline input header file for the Fast Light Tool Kit (FLTK). // @@ -38,11 +38,15 @@ This input field displays '\n' characters as new lines rather than ^J, and accepts the Return, Tab, and up and down arrow keys. This is for editing multiline text. -

This is far from the nirvana of text editors, and is probably only - good for small bits of text, 10 lines at most. I think FLTK can be - used to write a powerful text editor, but it is not going to be a - built-in feature. Powerful text editors in a toolkit are a big source - of bloat. +

+ This is far from the nirvana of text editors, and is probably only + good for small bits of text, 10 lines at most. Note that this widget + does not support scrollbars or per-character color control. +

+ If you are presenting large amounts of text and need scrollbars + or full color control of characters, you probably want Fl_Text_Editor + instead. +

*/ class Fl_Multiline_Input : public Fl_Input { public: @@ -58,5 +62,5 @@ public: #endif // -// End of "$Id: Fl_Multiline_Input.H 6614 2009-01-01 16:11:32Z matt $". +// End of "$Id: Fl_Multiline_Input.H 6889 2009-09-19 22:09:00Z greg.ercolano $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Multiline_Output.H b/plugins/zynaddsubfx/fltk/FL/Fl_Multiline_Output.H index 0dbcb06dce..f0edf63d06 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Multiline_Output.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Multiline_Output.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Multiline_Output.H 6614 2009-01-01 16:11:32Z matt $" +// "$Id: Fl_Multiline_Output.H 6889 2009-09-19 22:09:00Z greg.ercolano $" // // Multi line output header file for the Fast Light Tool Kit (FLTK). // @@ -37,6 +37,14 @@ This widget is a subclass of Fl_Output that displays multiple lines of text. It also displays tab characters as whitespace to the next column. +

+ Note that this widget does not support scrollbars, or per-character + color control. +

+ If you are presenting large amounts of read-only text + and need scrollbars, or full color control of characters, + then use Fl_Text_Display. If you want to display HTML text, + use Fl_Help_View. */ class Fl_Multiline_Output : public Fl_Output { public: @@ -52,5 +60,5 @@ public: #endif // -// End of "$Id: Fl_Multiline_Output.H 6614 2009-01-01 16:11:32Z matt $". +// End of "$Id: Fl_Multiline_Output.H 6889 2009-09-19 22:09:00Z greg.ercolano $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Output.H b/plugins/zynaddsubfx/fltk/FL/Fl_Output.H index 0d02d82d58..58b33378f5 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Output.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Output.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Output.H 6614 2009-01-01 16:11:32Z matt $" +// "$Id: Fl_Output.H 6898 2009-09-23 20:43:27Z matt $" // // Output header file for the Fast Light Tool Kit (FLTK). // @@ -42,7 +42,8 @@ \image latex text.eps "Fl_Output" width=8cm

There is a single subclass, Fl_Multiline_Output, which allows you to display multiple lines of - text.

+ text. Fl_Multiline_Output does not provide scroll bars. If a more + complete text editing widget is needed, use Fl_Text_Display instead.

The text may contain any characters except \\0, and will correctly display anything, using ^X notation for unprintable control characters and \\nnn notation for unprintable characters with the high bit set. It @@ -63,5 +64,5 @@ public: #endif // -// End of "$Id: Fl_Output.H 6614 2009-01-01 16:11:32Z matt $". +// End of "$Id: Fl_Output.H 6898 2009-09-23 20:43:27Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Scroll.H b/plugins/zynaddsubfx/fltk/FL/Fl_Scroll.H index e36be6d234..a8bbdb4800 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Scroll.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Scroll.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Scroll.H 6614 2009-01-01 16:11:32Z matt $" +// "$Id: Fl_Scroll.H 6828 2009-07-12 00:15:06Z greg.ercolano $" // // Scroll header file for the Fast Light Tool Kit (FLTK). // @@ -193,5 +193,5 @@ public: #endif // -// End of "$Id: Fl_Scroll.H 6614 2009-01-01 16:11:32Z matt $". +// End of "$Id: Fl_Scroll.H 6828 2009-07-12 00:15:06Z greg.ercolano $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Text_Buffer.H b/plugins/zynaddsubfx/fltk/FL/Fl_Text_Buffer.H index 7efca467c9..a4d85139cf 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Text_Buffer.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Text_Buffer.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Text_Buffer.H 6618 2009-01-01 21:54:10Z matt $" +// "$Id: Fl_Text_Buffer.H 6822 2009-07-04 00:24:26Z fabien $" // // Header file for Fl_Text_Buffer class. // @@ -322,5 +322,5 @@ class FL_EXPORT Fl_Text_Buffer { #endif // -// End of "$Id: Fl_Text_Buffer.H 6618 2009-01-01 21:54:10Z matt $". +// End of "$Id: Fl_Text_Buffer.H 6822 2009-07-04 00:24:26Z fabien $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Text_Display.H b/plugins/zynaddsubfx/fltk/FL/Fl_Text_Display.H index 2986b1cd72..495737718c 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Text_Display.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Text_Display.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Text_Display.H 6614 2009-01-01 16:11:32Z matt $" +// "$Id: Fl_Text_Display.H 6902 2009-09-27 11:06:56Z matt $" // // Header file for Fl_Text_Display class. // @@ -165,9 +165,9 @@ class FL_EXPORT Fl_Text_Display: public Fl_Group { /** Sets the default size of text in the widget. */ void textsize(Fl_Fontsize s) {textsize_ = s;} /** Gets the default color of text in the widget. */ - Fl_Color textcolor() const {return (Fl_Color)textcolor_;} + Fl_Color textcolor() const {return textcolor_;} /** Sets the default color of text in the widget. */ - void textcolor(unsigned n) {textcolor_ = n;} + void textcolor(Fl_Color n) {textcolor_ = n;} int wrapped_column(int row, int column) const; int wrapped_row(int row) const; @@ -327,7 +327,7 @@ class FL_EXPORT Fl_Text_Display: public Fl_Group { Fl_Font textfont_; Fl_Fontsize textsize_; - unsigned textcolor_; + Fl_Color textcolor_; // The following are not presently used from the original NEdit code, // but are being put here so that future versions of Fl_Text_Display @@ -340,5 +340,5 @@ class FL_EXPORT Fl_Text_Display: public Fl_Group { #endif // -// End of "$Id: Fl_Text_Display.H 6614 2009-01-01 16:11:32Z matt $". +// End of "$Id: Fl_Text_Display.H 6902 2009-09-27 11:06:56Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Text_Editor.H b/plugins/zynaddsubfx/fltk/FL/Fl_Text_Editor.H index 85f3611db0..be3b718a3b 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Text_Editor.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Text_Editor.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Text_Editor.H 6614 2009-01-01 16:11:32Z matt $" +// "$Id: Fl_Text_Editor.H 6893 2009-09-20 19:24:24Z greg.ercolano $" // // Header file for Fl_Text_Editor class. // @@ -103,6 +103,8 @@ class FL_EXPORT Fl_Text_Editor : public Fl_Text_Display { static int kf_shift_move(int c, Fl_Text_Editor* e); static int kf_ctrl_move(int c, Fl_Text_Editor* e); static int kf_c_s_move(int c, Fl_Text_Editor* e); + static int kf_meta_move(int c, Fl_Text_Editor* e); + static int kf_m_s_move(int c, Fl_Text_Editor* e); static int kf_home(int, Fl_Text_Editor* e); static int kf_end(int c, Fl_Text_Editor* e); static int kf_left(int c, Fl_Text_Editor* e); @@ -134,6 +136,6 @@ class FL_EXPORT Fl_Text_Editor : public Fl_Text_Display { #endif // -// End of "$Id: Fl_Text_Editor.H 6614 2009-01-01 16:11:32Z matt $". +// End of "$Id: Fl_Text_Editor.H 6893 2009-09-20 19:24:24Z greg.ercolano $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Tooltip.H b/plugins/zynaddsubfx/fltk/FL/Fl_Tooltip.H index 033e83f2b3..c5ec206416 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Tooltip.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Tooltip.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Tooltip.H 6614 2009-01-01 16:11:32Z matt $" +// "$Id: Fl_Tooltip.H 6902 2009-09-27 11:06:56Z matt $" // // Tooltip header file for the Fast Light Tool Kit (FLTK). // @@ -76,13 +76,13 @@ public: /** Sets the size of the tooltip text. */ static void size(Fl_Fontsize s) { size_ = s; } /** Gets the background color for tooltips. The default background color is a pale yellow. */ - static Fl_Color color() { return (Fl_Color)color_; } + static Fl_Color color() { return color_; } /** Sets the background color for tooltips. The default background color is a pale yellow. */ - static void color(unsigned c) { color_ = c; } + static void color(Fl_Color c) { color_ = c; } /** Gets the color of the text in the tooltip. The default is black. */ - static Fl_Color textcolor() { return (Fl_Color)textcolor_; } + static Fl_Color textcolor() { return textcolor_; } /** Sets the color of the text in the tooltip. The default is black. */ - static void textcolor(unsigned c) { textcolor_ = c; } + static void textcolor(Fl_Color c) { textcolor_ = c; } // These should not be public, but Fl_Widget::tooltip() needs them... // fabien: made it private with only a friend function access @@ -95,8 +95,8 @@ private: static float delay_; //!< delay before a tooltip is shown static float hoverdelay_; //!< delay between tooltips static int enabled_; - static unsigned color_; - static unsigned textcolor_; + static Fl_Color color_; + static Fl_Color textcolor_; static Fl_Font font_; static Fl_Fontsize size_; static Fl_Widget* widget_; //!< Keeps track of the current target widget @@ -105,5 +105,5 @@ private: #endif // -// End of "$Id: Fl_Tooltip.H 6614 2009-01-01 16:11:32Z matt $". +// End of "$Id: Fl_Tooltip.H 6902 2009-09-27 11:06:56Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Value_Input.H b/plugins/zynaddsubfx/fltk/FL/Fl_Value_Input.H index 52d9f31d13..4ed1b10115 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Value_Input.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Value_Input.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Value_Input.H 6664 2009-02-18 09:27:54Z AlbrechtS $" +// "$Id: Fl_Value_Input.H 6902 2009-09-27 11:06:56Z matt $" // // Value input header file for the Fast Light Tool Kit (FLTK). // @@ -120,16 +120,16 @@ public: /** Gets the color of the text in the value box. */ Fl_Color textcolor() const {return input.textcolor();} /** Sets the color of the text in the value box.*/ - void textcolor(unsigned n) {input.textcolor(n);} + void textcolor(Fl_Color n) {input.textcolor(n);} /** Gets the color of the text cursor. The text cursor is black by default. */ Fl_Color cursor_color() const {return input.cursor_color();} /** Sets the color of the text cursor. The text cursor is black by default. */ - void cursor_color(unsigned n) {input.cursor_color(n);} + void cursor_color(Fl_Color n) {input.cursor_color(n);} }; #endif // -// End of "$Id: Fl_Value_Input.H 6664 2009-02-18 09:27:54Z AlbrechtS $". +// End of "$Id: Fl_Value_Input.H 6902 2009-09-27 11:06:56Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Value_Output.H b/plugins/zynaddsubfx/fltk/FL/Fl_Value_Output.H index 1654219c6a..5dda0ca892 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Value_Output.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Value_Output.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Value_Output.H 6664 2009-02-18 09:27:54Z AlbrechtS $" +// "$Id: Fl_Value_Output.H 6902 2009-09-27 11:06:56Z matt $" // // Value output header file for the Fast Light Tool Kit (FLTK). // @@ -51,7 +51,7 @@ class FL_EXPORT Fl_Value_Output : public Fl_Valuator { Fl_Font textfont_; Fl_Fontsize textsize_; uchar soft_; - unsigned textcolor_; + Fl_Color textcolor_; protected: void draw(); @@ -83,13 +83,13 @@ public: Fl_Fontsize textsize() const {return textsize_;} void textsize(Fl_Fontsize s) {textsize_ = s;} /** Sets the color of the text in the value box. */ - Fl_Color textcolor() const {return (Fl_Color)textcolor_;} + Fl_Color textcolor() const {return textcolor_;} /** Gets the color of the text in the value box. */ - void textcolor(unsigned s) {textcolor_ = s;} + void textcolor(Fl_Color s) {textcolor_ = s;} }; #endif // -// End of "$Id: Fl_Value_Output.H 6664 2009-02-18 09:27:54Z AlbrechtS $". +// End of "$Id: Fl_Value_Output.H 6902 2009-09-27 11:06:56Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Value_Slider.H b/plugins/zynaddsubfx/fltk/FL/Fl_Value_Slider.H index c2b5afe507..ec886428ad 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Value_Slider.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Value_Slider.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Value_Slider.H 6664 2009-02-18 09:27:54Z AlbrechtS $" +// "$Id: Fl_Value_Slider.H 6902 2009-09-27 11:06:56Z matt $" // // Value slider header file for the Fast Light Tool Kit (FLTK). // @@ -42,7 +42,7 @@ class FL_EXPORT Fl_Value_Slider : public Fl_Slider { Fl_Font textfont_; Fl_Fontsize textsize_; - unsigned textcolor_; + Fl_Color textcolor_; protected: void draw(); public: @@ -57,13 +57,13 @@ public: /** Sets the size of the text in the value box. */ void textsize(Fl_Fontsize s) {textsize_ = s;} /** Gets the color of the text in the value box. */ - Fl_Color textcolor() const {return (Fl_Color)textcolor_;} + Fl_Color textcolor() const {return textcolor_;} /** Sets the color of the text in the value box. */ - void textcolor(unsigned s) {textcolor_ = s;} + void textcolor(Fl_Color s) {textcolor_ = s;} }; #endif // -// End of "$Id: Fl_Value_Slider.H 6664 2009-02-18 09:27:54Z AlbrechtS $". +// End of "$Id: Fl_Value_Slider.H 6902 2009-09-27 11:06:56Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Widget.H b/plugins/zynaddsubfx/fltk/FL/Fl_Widget.H index 426156137b..f36ca38c75 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Widget.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Widget.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Widget.H 6753 2009-04-12 09:40:59Z AlbrechtS $" +// "$Id: Fl_Widget.H 6912 2009-10-02 19:08:55Z matt $" // // Widget header file for the Fast Light Tool Kit (FLTK). // @@ -69,7 +69,7 @@ struct FL_EXPORT Fl_Label { /** size of label font */ Fl_Fontsize size; /** text color */ - unsigned color; + Fl_Color color; /** Draws the label aligned to the given box */ void draw(int,int,int,int, Fl_Align) const ; void measure(int &w, int &h) const ; @@ -96,9 +96,9 @@ class FL_EXPORT Fl_Widget { void* user_data_; int x_,y_,w_,h_; Fl_Label label_; - int flags_; - unsigned color_; - unsigned color2_; + unsigned int flags_; + Fl_Color color_; + Fl_Color color2_; uchar type_; uchar damage_; uchar box_; @@ -135,23 +135,37 @@ protected: /** Internal use only. Use position(int,int), size(int,int) or resize(int,int,int,int) instead. */ void h(int v) {h_ = v;} /** Gets the widget flags mask */ - int flags() const {return flags_;} + unsigned int flags() const {return flags_;} /** Sets a flag in the flags mask */ - void set_flag(int c) {flags_ |= c;} + void set_flag(unsigned int c) {flags_ |= c;} /** Clears a flag in the flags mask */ - void clear_flag(int c) {flags_ &= ~c;} + void clear_flag(unsigned int c) {flags_ &= ~c;} /** flags possible values enumeration. See activate(), output(), visible(), changed(), set_visible_focus() */ enum { - INACTIVE=1, ///< the widget can't receive focus, and is disabled but potentially visible - INVISIBLE=2, ///< the widget is not drawn but can receive events - OUTPUT=4, ///< for output only - SHORTCUT_LABEL=64, ///< the label contains a shortcut we need to draw - CHANGED=128, ///< the widget value changed - VISIBLE_FOCUS=512, ///< accepts keyboard focus navigation if the widget can have the focus - COPIED_LABEL=1024 ///< the widget label is internally copied, its destruction is handled by the widget - }; + INACTIVE = 1<<0, ///< the widget can't receive focus, and is disabled but potentially visible + INVISIBLE = 1<<1, ///< the widget is not drawn but can receive events + OUTPUT = 1<<2, ///< for output only + NOBORDER = 1<<3, ///< don't draw a decoration (Fl_Window) + FORCE_POSITION = 1<<4, ///< don't let the window manager position the window (Fl_Window) + NON_MODAL = 1<<5, ///< thisis a hovering toolbar window (Fl_Window) + SHORTCUT_LABEL = 1<<6, ///< the label contains a shortcut we need to draw + CHANGED = 1<<7, ///< the widget value changed + OVERRIDE = 1<<8, ///< position window on top (Fl_Window) + VISIBLE_FOCUS = 1<<9, ///< accepts keyboard focus navigation if the widget can have the focus + COPIED_LABEL = 1<<10, ///< the widget label is internally copied, its destruction is handled by the widget + CLIP_CHILDREN = 1<<11, ///< all drawing within this widget will be clipped (Fl_Group) + MENU_WINDOW = 1<<12, ///< a temporary popup window, dismissed by clicking outside (Fl_Window) + TOOLTIP_WINDOW = 1<<13, ///< a temporary popup, transparent to events, and dismissed easily (Fl_Window) + MODAL = 1<<14, ///< a window blocking input to all other winows (Fl_Window) + NO_OVERLAY = 1<<15, ///< window not using a hardware overlay plane (Fl_Menu_Window) + GROUP_RELATIVE = 1<<16, ///< position this idget relative to the parent group, not to the window + // (space for more flags) + USERFLAG3 = 1<<29, ///< reserved for 3rd party extensions + USERFLAG2 = 1<<30, ///< reserved for 3rd party extensions + USERFLAG1 = 1<<31 ///< reserved for 3rd party extensions + }; void draw_box() const; void draw_box(Fl_Boxtype t, Fl_Color c) const; void draw_box(Fl_Boxtype t, int x,int y,int w,int h, Fl_Color c) const; @@ -343,9 +357,9 @@ public: /** Gets the background color of the widget. \return current background color - \see color(unsigned), color(unsigned, unsigned) + \see color(Fl_Color), color(Fl_Color, Fl_Color) */ - Fl_Color color() const {return (Fl_Color)color_;} + Fl_Color color() const {return color_;} /** Sets the background color of the widget. The color is passed to the box routine. The color is either an index into @@ -355,25 +369,25 @@ public: The default for most widgets is FL_BACKGROUND_COLOR. Use Fl::set_color() to redefine colors in the color map. \param[in] bg background color - \see color(), color(unsigned, unsigned), selection_color(unsigned) + \see color(), color(Fl_Color, Fl_Color), selection_color(Fl_Color) */ - void color(unsigned bg) {color_ = bg;} + void color(Fl_Color bg) {color_ = bg;} /** Gets the selection color. \return the current selection color - \see selection_color(unsigned), color(unsigned, unsigned) + \see selection_color(Fl_Color), color(Fl_Color, Fl_Color) */ - Fl_Color selection_color() const {return (Fl_Color)color2_;} + Fl_Color selection_color() const {return color2_;} /** Sets the selection color. The selection color is defined for Forms compatibility and is usually used to color the widget when it is selected, although some widgets use this color for other purposes. You can set both colors at once - with color(unsigned bg, unsigned sel). + with color(Fl_Color bg, Fl_Color sel). \param[in] a the new selection color - \see selection_color(), color(unsigned, unsigned) + \see selection_color(), color(Fl_Color, Fl_Color) */ - void selection_color(unsigned a) {color2_ = a;} + void selection_color(Fl_Color a) {color2_ = a;} /** Sets the background and selection color of the widget. @@ -382,7 +396,7 @@ public: \param[in] sel selection color \see color(unsigned), selection_color(unsigned) */ - void color(unsigned bg, unsigned sel) {color_=bg; color2_=sel;} + void color(Fl_Color bg, Fl_Color sel) {color_=bg; color2_=sel;} /** Gets the current label text. \return a pointer to the current label text @@ -439,13 +453,13 @@ public: The default color is FL_FOREGROUND_COLOR. \return the current label color */ - Fl_Color labelcolor() const {return (Fl_Color)label_.color;} + Fl_Color labelcolor() const {return label_.color;} /** Sets the label color. The default color is FL_FOREGROUND_COLOR. \param[in] c the new label color */ - void labelcolor(unsigned c) {label_.color=c;} + void labelcolor(Fl_Color c) {label_.color=c;} /** Gets the font to use. Fonts are identified by indexes into a table. The default value @@ -633,7 +647,7 @@ public: \retval 0 if the widget is not drawn and hence invisible. \see show(), hide(), visible_r() */ - int visible() const {return !(flags_&INVISIBLE);} + unsigned int visible() const {return !(flags_&INVISIBLE);} /** Returns whether a widget and all its parents are visible. \retval 0 if the widget or any of its parents are invisible. @@ -678,7 +692,7 @@ public: \retval 0 if the widget is inactive \see active_r(), activate(), deactivate() */ - int active() const {return !(flags_&INACTIVE);} + unsigned int active() const {return !(flags_&INACTIVE);} /** Returns whether the widget and all of its parents are active. \retval 0 if this or any of the parent widgets are inactive @@ -717,7 +731,7 @@ public: \retval 0 if the widget is used for input and output \see set_output(), clear_output() */ - int output() const {return (flags_&OUTPUT);} + unsigned int output() const {return (flags_&OUTPUT);} /** Sets a widget to output only. \see output(), clear_output() @@ -734,7 +748,7 @@ public: && visible()) but is faster. \retval 0 if the widget takes no events */ - int takesevents() const {return !(flags_&(INACTIVE|INVISIBLE|OUTPUT));} + unsigned int takesevents() const {return !(flags_&(INACTIVE|INVISIBLE|OUTPUT));} /** Checks if the widget value changed since the last callback. @@ -751,7 +765,7 @@ public: \retval 0 if the value did not change \see set_changed(), clear_changed() */ - int changed() const {return flags_&CHANGED;} + unsigned int changed() const {return flags_&CHANGED;} /** Marks the value of the widget as changed. \see changed(), clear_changed() @@ -796,7 +810,7 @@ public: \retval 0 if this widget has no visible focus. \see visible_focus(int), set_visible_focus(), clear_visible_focus() */ - int visible_focus() { return flags_ & VISIBLE_FOCUS; } + unsigned int visible_focus() { return flags_ & VISIBLE_FOCUS; } /** Sets the default callback for all widgets. Sets the default callback, which puts a pointer to the widget on the queue @@ -828,7 +842,7 @@ public: /** Internal use only. */ int test_shortcut(); /** Internal use only. */ - static char label_shortcut(const char *t); + static Fl_Shortcut label_shortcut(const char *t); /** Internal use only. */ static int test_shortcut(const char*); @@ -866,9 +880,16 @@ public: */ uchar damage() const {return damage_;} - /** Clears the damage flags. + /** Clears or sets the damage flags. Damage flags are cleared when parts of the widget drawing is repaired. - \param[in] c bitmask of flags to clear + + The optional argument \p c specifies the bits that are set + after the call (default: 0) and \b not the bits that are cleared! + + \note Therefore it is possible to set damage bits with this method, but + this should be avoided. Use damage(uchar) instead. + + \param[in] c new bitmask of damage flags (default: 0) \see damage(uchar), damage() */ void clear_damage(uchar c = 0) {damage_ = c;} @@ -923,5 +944,5 @@ public: #endif // -// End of "$Id: Fl_Widget.H 6753 2009-04-12 09:40:59Z AlbrechtS $". +// End of "$Id: Fl_Widget.H 6912 2009-10-02 19:08:55Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/Fl_Window.H b/plugins/zynaddsubfx/fltk/FL/Fl_Window.H index a55521db54..952a527936 100644 --- a/plugins/zynaddsubfx/fltk/FL/Fl_Window.H +++ b/plugins/zynaddsubfx/fltk/FL/Fl_Window.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Window.H 6614 2009-01-01 16:11:32Z matt $" +// "$Id: Fl_Window.H 6907 2009-09-28 14:34:52Z matt $" // // Window header file for the Fast Light Tool Kit (FLTK). // @@ -69,16 +69,6 @@ class FL_EXPORT Fl_Window : public Fl_Group { Fl_Cursor cursor_default; Fl_Color cursor_fg, cursor_bg; void size_range_(); - // values for flags(): - enum { - FL_MODAL = 64, - FL_NOBORDER = 8, - FL_FORCE_POSITION = 16, - FL_NON_MODAL = 32, - FL_OVERRIDE = 256, - FL_MENU_WINDOW = 4096, - FL_TOOLTIP_WINDOW = 8192 - }; void _Fl_Window(); // constructor innards // unimplemented copy ctor and assignment operator @@ -167,13 +157,13 @@ public: Fast inline function to turn the border off. It only works before show() is called. */ - void clear_border() {set_flag(FL_NOBORDER);} + void clear_border() {set_flag(NOBORDER);} /** See int Fl_Window::border(int) */ - int border() const {return !(flags() & FL_NOBORDER);} - /** Activate the flags FL_NOBORDER|FL_OVERRIDE */ - void set_override() {set_flag(FL_NOBORDER|FL_OVERRIDE);} + unsigned int border() const {return !(flags() & NOBORDER);} + /** Activate the flags NOBORDER|FL_OVERRIDE */ + void set_override() {set_flag(NOBORDER|OVERRIDE);} /** Returns non zero if FL_OVERRIDE flag is set, 0 otherwise. */ - int override() const { return flags()&FL_OVERRIDE; } + unsigned int override() const { return flags()&OVERRIDE; } /** A "modal" window, when shown(), will prevent any events from being delivered to other windows in the same program, and will also @@ -183,18 +173,18 @@ public: which window (if any) is modal by calling Fl::modal(). */ - void set_modal() {set_flag(FL_MODAL);} + void set_modal() {set_flag(MODAL);} /** Returns true if this window is modal. */ - int modal() const {return flags() & FL_MODAL;} + unsigned int modal() const {return flags() & MODAL;} /** A "non-modal" window (terminology borrowed from Microsoft Windows) acts like a modal() one in that it remains on top, but it has no effect on event delivery. There are three states for a window: modal, non-modal, and normal. */ - void set_non_modal() {set_flag(FL_NON_MODAL);} + void set_non_modal() {set_flag(NON_MODAL);} /** Returns true if this window is modal or non-modal. */ - int non_modal() const {return flags() & (FL_NON_MODAL|FL_MODAL);} + unsigned int non_modal() const {return flags() & (NON_MODAL|MODAL);} /** Marks the window as a menu window. @@ -209,10 +199,10 @@ public: This must be called before the window is shown and cannot be changed later. */ - void set_menu_window() {set_flag(FL_MENU_WINDOW);} + void set_menu_window() {set_flag(MENU_WINDOW);} /** Returns true if this window is a menu window. */ - int menu_window() const {return flags() & FL_MENU_WINDOW;} + unsigned int menu_window() const {return flags() & MENU_WINDOW;} /** Marks the window as a tooltip window. @@ -230,10 +220,10 @@ public: \note Since Fl_Tooltip_Window is derived from Fl_Menu_Window, this also \b clears the menu_window() state. */ - void set_tooltip_window() { set_flag(FL_TOOLTIP_WINDOW); - clear_flag(FL_MENU_WINDOW); } + void set_tooltip_window() { set_flag(TOOLTIP_WINDOW); + clear_flag(MENU_WINDOW); } /** Returns true if this window is a tooltip window. */ - int tooltip_window() const {return flags() & FL_TOOLTIP_WINDOW;} + unsigned int tooltip_window() const {return flags() & TOOLTIP_WINDOW;} /** Position the window so that the mouse is pointing at the @@ -252,7 +242,7 @@ public: so that the next time show() is called the window manager is free to position the window. */ - void free_position() {clear_flag(FL_FORCE_POSITION);} + void free_position() {clear_flag(FORCE_POSITION);} /** Set the allowable range the user can resize this window to. This only works for top-level windows. @@ -410,5 +400,5 @@ public: #endif // -// End of "$Id: Fl_Window.H 6614 2009-01-01 16:11:32Z matt $". +// End of "$Id: Fl_Window.H 6907 2009-09-28 14:34:52Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/fl_draw.H b/plugins/zynaddsubfx/fltk/FL/fl_draw.H index fab90b477a..69ecaf49c4 100644 --- a/plugins/zynaddsubfx/fltk/FL/fl_draw.H +++ b/plugins/zynaddsubfx/fltk/FL/fl_draw.H @@ -1,5 +1,5 @@ // -// "$Id: fl_draw.H 6779 2009-04-24 09:28:30Z yuri $" +// "$Id: fl_draw.H 6878 2009-09-17 22:12:24Z matt $" // // Portable drawing function header file for the Fast Light Tool Kit (FLTK). // @@ -203,14 +203,7 @@ inline Fl_Fontsize fl_size() {return fl_size_;} You can also use the value of \p size passed to fl_font() */ FL_EXPORT int fl_height(); // using "size" should work ok -/** - Dummy passthru function called only in Fl_Text_Display that simply returns - the font height as given by the \p size parameter in the same call! - - \todo Is fl_height(int, int size) required for Fl_Text_Dispay? - Why not use \p size parameter directly? -*/ -inline int fl_height(int, int size) {return size;} +FL_EXPORT int fl_height(int font, int size); /** Returns the recommended distance above the bottom of a fl_height() tall box to draw the text at so it looks centered vertically in that box. @@ -448,8 +441,8 @@ FL_EXPORT int fl_measure_pixmap(const char* const* cdata, int &w, int &h); // other: FL_EXPORT void fl_scroll(int X, int Y, int W, int H, int dx, int dy, void (*draw_area)(void*, int,int,int,int), void* data); -FL_EXPORT const char* fl_shortcut_label(int shortcut); -FL_EXPORT const char* fl_shortcut_label(int shortcuti, const char **eom); +FL_EXPORT const char* fl_shortcut_label(Fl_Shortcut shortcut); +FL_EXPORT const char* fl_shortcut_label(Fl_Shortcut shortcut, const char **eom); FL_EXPORT void fl_overlay_rect(int x,int y,int w,int h); FL_EXPORT void fl_overlay_clear(); FL_EXPORT void fl_cursor(Fl_Cursor, Fl_Color fg=FL_BLACK, Fl_Color bg=FL_WHITE); @@ -475,5 +468,5 @@ FL_EXPORT int fl_add_symbol(const char* name, void (*drawit)(Fl_Color), int scal #endif // -// End of "$Id: fl_draw.H 6779 2009-04-24 09:28:30Z yuri $". +// End of "$Id: fl_draw.H 6878 2009-09-17 22:12:24Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/FL/fl_types.h b/plugins/zynaddsubfx/fltk/FL/fl_types.h index e676a621e6..d87cd73873 100644 --- a/plugins/zynaddsubfx/fltk/FL/fl_types.h +++ b/plugins/zynaddsubfx/fltk/FL/fl_types.h @@ -52,6 +52,9 @@ typedef char *Fl_String; typedef const char *Fl_CString; /** 24-bit Unicode character + 8-bit indicator for keyboard flags */ +typedef unsigned int Fl_Shortcut; + +/** 24-bit Unicode character - upper 8-bits are unused */ typedef unsigned int Fl_Char; /*@}*/ /* group: Miscellaneous */ diff --git a/plugins/zynaddsubfx/fltk/README.123 b/plugins/zynaddsubfx/fltk/README.123 new file mode 100644 index 0000000000..1ab0c4f47c --- /dev/null +++ b/plugins/zynaddsubfx/fltk/README.123 @@ -0,0 +1,686 @@ + + R E A D M E . 1 2 3 + ===================== + +This file listst the differences between FLTK 1 and FLTK 2 with annotations +for a possible implementation of FLTK 3. The all new and improved FLTK 3 +needs to be compatible with 1 and 2. It must have a moder API, plenty of +widgets, lots of options, customization at run-time, but still be easily +portable, fast, and of course light. + +FLTK 1 has become a nice starting point for the first steps in GUI +programming. It runs on al major platform (and on many minor ones +as well), is small, compact, and easy to use. FLTK 2 was the +attempt to continue the success of FLTK 1 with a much cleaber API +and many important details improved. Unfortunately many users never +made the jump to FLTK 2 and so it not only ended in a crawling slow +branch, it also became instable and at last unmaintainable. + +FLTK 3 sets out to surprise FLTK 1 users and satisfy FLTK 2 junkies. +It will basically be the improved FLTK 2 API combined with the quite +stable innards of FLTK 1. As an extra bonus, FLTK 3 will be compatible +to 1 and 2. Just prepend your code with the "coding_style" instruction +and FLTK 3 will do the rest. It is even possible to intermix F1 and +F2 coding styles at any place. + +Nice challange, eh? So let's get going: + + + The Big Differences +--------------------- + +FLTK 2 is based on FLTK 1 in many ways, and while the FLTK 1 API was based +on the Forms Library, FLTK 2 is Bill's take on how FLTK 1 should have been. +This chapter outlines the biggest differences between version. + +(1) Coordinate System: FLTK 1 child coordinates are always relative to the +window, not as most would expect to the parent. FLTK 2 does the logical +thing and uses group-relative origins. This is somewhat difficult to port +if we want to stay downward compatible. Fl_Widget will need an additional +flag indicating absolute or relative coordinates. + +(2) Pulldown Menus: The developers of the Forms Library did not implement +the idea of hierarchies all the way through. Pulldown menus, which are +hierarchical by nature, were instead implemented as a list with lots of +tricks and cludges to make them usable. FLTK 2 went half way by using the +existing Windget/Group relation to create menus, however, menu items are +still specialized widgets. For FLTK 3, I would like to allow any widget +inside a pulldown menu. + +(3) Browsers and Tree Views: Browsers in FLTK1 are implemented even worse +than Pulldown Menus. FLTK 2 solved the issues in a similar way, and here +again, I prefer the FLTK 2 way very mch, but also would like to extend +functionality to allow arbitrary widgets as list items. A Tree-like +widget comes free with the FLTK 2 concept. FLTK 1 has no such thing and +even Fluid had to hack the library badly to generate a tree view. + +(4) Namespaces: this is a minr issue that I include for completeness. FLTK 2 +introduces the ftk namespace, renaming all widgets. FLTK 3 will use the +FLTK 2 naming scheme and map FLTK 1 class names using typedefs. This is, as +most things in programming are, a compromise. The "coding_style" function +must be used to switch between FLTK 1 and FLTK 2 code. No worries though, +it's easy and straight forward. + +(5) Layout: FLTK 1 uses a top-down approach for widget layout in which the +parent widget decides about the childs size "resize(x, y, w, h)". In FLTK 2 +any widget can call "layout()" which will query children for their preffered +size and propagate the information up. This is a great concept that FLTK 3 +should adapt, plus it is compatible. + +(6) Ractangle: FLTK 2's base class is fltk::Rectangle. This is nice and +easy to implement. The API is pretty much the same in both versions. + +(7) Styles: FLTK 2 uses a minimal number of styles to define the basic +(and often repeated) parameters of every widget. API's are similar though, +so this is luckily another pretty straight-forward upgrade. + + + Comparison Chart by Class +--------------------------- + +This chart contains a list of all classes in FLTK 1 and 2, how they +correspond, and how they could be implemented in FLTK 3. + +1: class Fl +2: namespace fltk +*: this is a pretty straight-forward mapping of functions. The actual work + lies in finding and listing all global functions and adapting those. + +1: class Fl_Adjuster +2: class Adjuster +*: should map easily + +1: +2: class AlignGroup +*: undocumented in FLTK 2. Minimal code. Can be transfered easily. + +1: +2: class AnsiWidget +*: There is no equvalet in FLTK 1, but the widget may be easily ported. + +1: +2: class AssociationFunctor +*: Associations are a new and rarly used concept in FLTK 2. We need to + decide if these should be moved into FLTK 3 + +1: +2: class AssociationType +*: Associations are a new and rarly used concept in FLTK 2. We need to + decide if these should be moved into FLTK 3 + +1: +2: class BarGroup +*: undocumented in FLTK 2. Minimal code. Can be transfered easily. + +1: class Fl_BMP_Image +2: class bmpImage +*: should map easily + +1: class Fl_Bitmap +2: + +1: class Fl_Box +2: class Widget +*: This actually maps pretty much exactly to fltk::Widget. FLTK 2 provides + a bunch of other box-like classes which have some predefined properties, + however this is the best match for FLTK 1. fltk::InvisibleBox can be used + as well. + +1: class Fl_Browser +2: class Browser + +1: class Fl_Browser_ +2: + +1: class Fl_Button +2: class Button +*: should map easily + +1: class Fl_Cairo_State +2: + +1: class Fl_Cairo_Window +2: + +1: class Fl_Chart +2: + +1: class Fl_Check_Browser +2: + +1: class Fl_Check_Button +2: class CheckButton +*: should map easily + +1: class Fl_Choice +2: class Choice +*: should map easily + +1: class Fl_Clock +2: class Clock +*: should map easily + +1: class Fl_Clock_Output +2: class ClockOutput +*: should map easily + +1: class Fl_Color_Chooser +2: class ColorChooser +*: should map easily + +1: +2: class ComboBrowser + +1: +2: class ComboWindow + +1: +2: class CycleButton + +1: class Fl_Counter +2: + +1: class Fl_Dial +2: class Dial +*: should map easily + +1: +2: class Divider + +1: class Fl_Double_Window +2: class DoubleBufferWindow +*: should map easily + +1: class Fl_End +2: + +1: +2: class EngravedLabel + +1: class Fl_File_Browser +2: class FileBrowser +*: should map easily + +1: class Fl_File_Chooser +2: class FileChooser +*: should map easily + +1: class Fl_File_Icon +2: class FileIcon +*: should map easily + +1: class Fl_File_Input +2: class FileInput +*: should map easily + +1: class Fl_Fill_Dial +2: class FillDial +*: should map easily + +1: class Fl_Fill_Slider +2: class FillSlider +*: should map easily + +1: +2: class FlatBox + +1: class Fl_Float_Input +2: class FloatInput +*: should map easily + +1: class Fl_FormsBitmap +2: + +1: class Fl_FormsPixmap +2: + +1: class Fl_FormsText +2: class Fl_FormsText +*: should map easily + +1: +2: class FrameBox + +1: class Fl_Free +2: + +1: class Fl_GIF_Image +2: class gifImage +*: should map easily + +1: class Fl_Gl_Choice +2: class GlChoice +*: should map easily + +1: class Fl_Gl_Window +2: class GlWindow +*: should map easily + +1: +2: class GlOverlay + +1: class Fl_Glut_Window +2: class GlutWindow + +1: class Fl_Group +2: class Group +*: should map easily, must manage coordinate systems + +1: +2: class GSave + +1: +2: class Guard + +1: class Fl_Help_Dialog +2: class HelpDialog +*: should map easily + +1: class Fl_Help_View +2: class HelpView +*: should map easily + +1: +2: class HighlightBox + +1: +2: class HighlightButton + +1: class Fl_Hold_Browser +2: + +1: class Fl_Hor_Fill_Slider +2: + +1: class Fl_Hor_Nice_Slider +2: + +1: class Fl_Hor_Slider +2: + +1: class Fl_Hor_Value_Slider +2: + +1: class Fl_Image +2: class Image +*: should map easily + +1: class Fl_Input +2: class Input +*: should map easily + +1: class Fl_Input_ +2: + +1: +2: class InputBrowser + +1: class Fl_Input_Choice +2: class ComboBox +*: should map easily + +1: class Fl_Int_Input +2: class IntInput +*: should map easily + +1: +2: class InvisibleBox + +1: +2: class Item + +1: +2: class ItemGroup + +1: class Fl_JPEG_Image +2: class jpegImage +*: should map easily + +1: +2: class LabelType + +1: class Fl_Light_Button +2: class LightButton +*: should map easily + +1: class Fl_Line_Dial +2: class LineDial +*: should map easily + +1: +2: class List + +1: class Fl_Menu_ +2: class Menu + +1: class Fl_Menu_Bar +2: class MenuBar + +1: class Fl_Menu_Button +2: class PopupMenu + +1: +2: class MenuSection + +1: class Fl_Menu_Window +2: class MenuWindow + +1: +2: class Monitor + +1: class Fl_Multi_Browser +2: class MultiBrowser + +1: +2: class MultiImage + +1: class Fl_Multiline_Input +2: class MultiLineInput +*: should map easily + +1: class Fl_Multiline_Output +2: class MultiLineOutput +*: should map easily + +1: +2: class Mutex + +1: class Fl_Nice_Slider +2: + +1: +2: class NumericInput + +1: class Fl_Output +2: class Output +*: should map easily + +1: class Fl_Overlay_Window +2: + +1: class Fl_PNG_Image +2: class pngImage +*: should map easily + +1: class Fl_PNM_Image +2: class pnmImage +*: should map easily + +1: class Fl_Pack +2: class PackedGroup +*: should map easily, FLTK 2 has soem additional functionaity + +1: class Fl_Pixmap +2: + +1: class Fl_Positioner +2: + +1: class Fl_Preferences +2: class Preferences +*: should map easily + +1: class Fl_Progress +2: class ProgressBar +*: should map easily + +1: class Fl_RGB_Image +2: class rgbImage +*: should map easily + +1: class Fl_Radio_Button +2: class RadioButton +*: should map easily + +1: +2: class RadioItem + +1: class Fl_Radio_Light_Button +2: class RadioLightButton +*: should map easily + +1: class Fl_Radio_Round_Button +2: + +1: +2: class Rectangle + +1: +2: class RecursiveMutex + +1: class Fl_Repeat_Button +2: class RepeatButton +*: should map easily + +1: class Fl_Return_Button +2: class ReturnButton +*: should map easily + +1: class Fl_Roller +2: class ThumbWheel +*: should map easily + +1: class Fl_Round_Button +2: + +1: class Fl_Round_Clock +2: + +1: class Fl_Scroll +2: class ScrollGroup +*: should map easily + +1: class Fl_Scrollbar +2: class Scrollbar +*: should map easily + +1: class Fl_Secret_Input +2: class SecretInput +*: should map easily + +1: class Fl_Select_Browser +2: + +1: +2: class ShapedWindow + +1: class Fl_Shared_Image +2: class SharedImage +*: should map easily + +1: +2: class ShortcutFunctor + +1: class Fl_Simple_Counter +2: + +1: class Fl_Single_Window +2: + +1: +2: class SignalMutex + +1: class Fl_Slider +2: class Slider +*: should map easily + +1: class Fl_Spinner +2: + +1: +2: class StatusBarGroup + +1: +2: class StringArray + +1: +2: class StringHierarchy + +1: +2: class StringList + +1: +2: class Style + +1: +2: class StyleSet + +1: +2: class Symbol + +1: class Fl_Sys_Menu_Bar +2: class SystemMenuBar +*: should map easily + +1: class Fl_Tabs +2: class TabGroup +*: should map easily + +1: +2: class TabGroupPager + +1: class Fl_Text_Buffer +2: class TextBuffer +*: should map easily + +1: class Fl_Text_Display +2: class TextDisplay +*: should map easily + +1: class Fl_Text_Editor +2: class TextEditor +*: should map easily + +1: class Fl_Text_Selection +2: class TextSelection +*: should map easily + +1: class Fl_Tile +2: class TiledGroup +*: should map easily + +1: class Fl_Tiled_Image +2: class TiledImage +*: should map easily + +1: class Fl_Timer +2: + +1: class Fl_Toggle_Button +2: class ToggleButton +*: should map easily + +1: +2: class ToggleItem + +1: class Fl_Tooltip +2: class Tooltip +*: should map easily + +1: +2: class WordwrapInput + +1: +2: class WordwrapOutput + +1: class Fl_Valuator +2: class Valuator +*: should map easily + +1: class Fl_Value_Input +2: class ValueInput +*: should map easily + +1: class Fl_Value_Output +2: class ValueOutput +*: should map easily + +1: class Fl_Value_Slider +2: class ValueSlider +*: should map easily + +1: class Fl_Widget +2: class Widget +*: should map easily for the most part + +1: class Fl_Widget_Tracker +2: + +1: class Fl_Window +2: class Window +*: should map easily + +1: class Fl_Wizard +2: class WizardGroup +*: should map easily + +1: class Fl_X +2: class CreatedWindow +*: should map easily + +1: class Fl_XBM_Image +2: class xbmImage +*: should map easily + +1: class Fl_XPM_Image +2: class xpmImage +*: should map easily + +1: +2: class xpmFileImage + +1: +2: struct Cursor + +1: +2: struct Font + +1: struct Fl_Glut_Bitmap_Font +2: + +1: struct Fl_Glut_StrokeChar +2: + +1: struct Fl_Glut_StrokeFont +2: + +1: struct Fl_Glut_StrokeStrip +2: + +1: struct Fl_Glut_StrokeVertex +2: + +1: struct Fl_Help_Block +2: struct HelpBlock +*: should map easily + +1: struct Fl_Help_Font_Stack +2: + +1: struct Fl_Help_Font_Style +2: + +1: struct Fl_Help_Link +2: struct HelpLink +*: should map easily + +1: struct Fl_Help_Target +2: struct HelpTarget +*: should map easily + +1: +2: struct ImageType + +1: struct Fl_Label +2: + +1: struct Fl_Menu_Item +2: + +1: struct Fl_Multi_Label +2: + +1: +2: struct NamedStyle + + diff --git a/plugins/zynaddsubfx/fltk/src/CMakeLists.txt b/plugins/zynaddsubfx/fltk/src/CMakeLists.txt index 7b628bd012..d12f04db21 100644 --- a/plugins/zynaddsubfx/fltk/src/CMakeLists.txt +++ b/plugins/zynaddsubfx/fltk/src/CMakeLists.txt @@ -34,7 +34,7 @@ SET(CPPFILES Fl_Menu.cxx Fl_Menu_.cxx Fl_Menu_Bar.cxx - Fl_Sys_Menu_Bar.cxx + Fl_Sys_Menu_Bar.cxx Fl_Menu_Button.cxx Fl_Menu_Window.cxx Fl_Menu_add.cxx @@ -130,6 +130,8 @@ SET(CPPFILES fl_vertex.cxx screen_xywh.cxx fl_utf8.cxx + fl_encoding_latin1.cxx + fl_encoding_mac_roman.cxx ) SET(FLCPPFILES forms_compatability.cxx @@ -165,18 +167,18 @@ SET(IMGCPPFILES SET(CFILES fl_call_main.c - fl_utf.c flstring.c scandir.c numericsort.c vsnprintf.c - xutf8/case.c xutf8/is_right2left.c xutf8/is_spacing.c - xutf8/keysym2Ucs.c + xutf8/case.c xutf8/utf8Input.c xutf8/utf8Utils.c xutf8/utf8Wrap.c + xutf8/keysym2Ucs.c + fl_utf.c ) ADD_LIBRARY(fltk ${CPPFILES} ${CFILES}) diff --git a/plugins/zynaddsubfx/fltk/src/Fl.cxx b/plugins/zynaddsubfx/fltk/src/Fl.cxx index d621d23181..2d6e03fe39 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl.cxx 6787 2009-05-14 20:16:09Z engelsman $" +// "$Id: Fl.cxx 6836 2009-07-25 12:56:16Z AlbrechtS $" // // Main event handling code for the Fast Light Tool Kit (FLTK). // @@ -1699,5 +1699,5 @@ Fl_Widget_Tracker::~Fl_Widget_Tracker() { } // -// End of "$Id: Fl.cxx 6787 2009-05-14 20:16:09Z engelsman $". +// End of "$Id: Fl.cxx 6836 2009-07-25 12:56:16Z AlbrechtS $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_Browser.cxx b/plugins/zynaddsubfx/fltk/src/Fl_Browser.cxx index 14a2db47ca..0db0092459 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_Browser.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_Browser.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Browser.cxx 6726 2009-03-27 16:52:31Z greg.ercolano $" +// "$Id: Fl_Browser.cxx 6895 2009-09-21 06:35:08Z greg.ercolano $" // // Browser widget for the Fast Light Tool Kit (FLTK). // @@ -44,10 +44,16 @@ #define SELECTED 1 #define NOTDISPLAYED 2 +// WARNING: +// Fl_File_Chooser.cxx also has a definition of this structure (FL_BLINE). +// Changes to FL_BLINE *must* be reflected in Fl_File_Chooser.cxx as well. +// This hack in Fl_File_Chooser should be solved. +// struct FL_BLINE { // data is in a linked list of these FL_BLINE* prev; FL_BLINE* next; void* data; + Fl_Image* icon; short length; // sizeof(txt)-1, may be longer than string char flags; // selected, displayed char txt[1]; // start of allocated array @@ -138,7 +144,8 @@ const char *Fl_Browser::item_text(void *item) const { item_next(), etc. to access the internal linked list more efficiently. \param[in] line The line number of the item to return. (1 based) - \returns The returned item. + \retval item that was found. + \retval NULL if line is out of range. \see item_at(), find_line(), lineno() */ FL_BLINE* Fl_Browser::find_line(int line) const { @@ -287,6 +294,7 @@ void Fl_Browser::insert(int line, const char* newtext, void* d) { t->flags = 0; strcpy(t->txt, newtext); t->data = d; + t->icon = 0; insert(line, t); } @@ -321,6 +329,7 @@ void Fl_Browser::text(int line, const char* newtext) { replacing(t, n); cache = n; n->data = t->data; + n->icon = t->icon; n->length = (short)l; n->flags = t->flags; n->prev = t->prev; @@ -364,8 +373,7 @@ int Fl_Browser::item_height(void *item) const { fl_font(textfont(), textsize()); int hh = fl_height(); if (hh > hmax) hmax = hh; - } - else { + } else { const int* i = column_widths(); // do each column separately as they may all set different fonts: for (char* str = l->txt; str && *str; str++) { @@ -400,6 +408,9 @@ int Fl_Browser::item_height(void *item) const { } } + if (l->icon && (l->icon->h()+2)>hmax) { + hmax = l->icon->h() + 2; // leave 2px above/below + } return hmax; // previous version returned hmax+2! } @@ -412,7 +423,8 @@ int Fl_Browser::item_height(void *item) const { incr_height(), full_height() */ int Fl_Browser::item_width(void *item) const { - char* str = ((FL_BLINE*)item)->txt; + FL_BLINE* l=(FL_BLINE*)item; + char* str = l->txt; const int* i = column_widths(); int ww = 0; @@ -457,6 +469,8 @@ int Fl_Browser::item_width(void *item) const { if (*str == format_char_ && str[1]) str ++; + if (ww==0 && l->icon) ww = l->icon->w(); + fl_font(font, tsize); return ww + int(fl_width(str)) + 6; } @@ -492,9 +506,11 @@ int Fl_Browser::incr_height() const { \param[in] X,Y,W,H position and size. */ void Fl_Browser::item_draw(void* item, int X, int Y, int W, int H) const { - char* str = ((FL_BLINE*)item)->txt; + FL_BLINE* l = (FL_BLINE*)item; + char* str = l->txt; const int* i = column_widths(); + bool first = true; // for icon while (W > 6) { // do each tab-separated field int w1 = W; // width for this field char* e = 0; // pointer to end of field or null if none @@ -502,6 +518,15 @@ void Fl_Browser::item_draw(void* item, int X, int Y, int W, int H) const { e = strchr(str, column_char()); if (e) {*e = 0; w1 = *i++;} } + // Icon drawing code + if (first) { + first = false; + if (l->icon) { + l->icon->draw(X+2,Y+1); // leave 2px left, 1px above + int iconw = l->icon->w()+2; + X += iconw; W -= iconw; w1 -= iconw; + } + } int tsize = textsize(); Fl_Font font = textfont(); Fl_Color lcol = textcolor(); @@ -521,7 +546,7 @@ void Fl_Browser::item_draw(void* item, int X, int Y, int W, int H) const { case 'c': talign = FL_ALIGN_CENTER; break; case 'r': talign = FL_ALIGN_RIGHT; break; case 'B': - if (!(((FL_BLINE*)item)->flags & SELECTED)) { + if (!(l->flags & SELECTED)) { fl_color((Fl_Color)strtol(str, &str, 10)); fl_rectf(X, Y, w1, H); } else strtol(str, &str, 10); @@ -557,7 +582,7 @@ void Fl_Browser::item_draw(void* item, int X, int Y, int W, int H) const { } BREAK: fl_font(font, tsize); - if (((FL_BLINE*)item)->flags & SELECTED) + if (l->flags & SELECTED) lcol = fl_contrast(lcol, selection_color()); if (!active_r()) lcol = fl_inactive(lcol); fl_color(lcol); @@ -592,8 +617,7 @@ Fl_Browser::Fl_Browser(int X, int Y, int W, int H, const char *L) Updates the browser so that \p line is shown at position \p pos. \param[in] line line number. (1 based) \param[in] pos position. - \see topline(), middleline(), bottomline(), \n -+: Command not found. + \see topline(), middleline(), bottomline() */ void Fl_Browser::lineposition(int line, Fl_Line_Position pos) { if (line<1) line = 1; @@ -835,6 +859,58 @@ void Fl_Browser::swap(int a, int b) { swap(ai,bi); } +/** + Set the image icon for \p line to the value \p icon. + Caller is responsible for keeping the icon allocated. + The \p line is automatically redrawn. + \param[in] line The line to be modified. If out of range, nothing is done. + \param[in] icon The image icon to be assigned to the \p line. + If NULL, any previous icon is removed. +*/ +void Fl_Browser::icon(int line, Fl_Image* icon) { + + if (line<1 || line > lines) return; + + FL_BLINE* bl = find_line(line); + + int old_h = bl->icon ? bl->icon->h()+2 : 0; // init with *old* icon height + bl->icon = 0; // remove icon, if any + int th = item_height(bl); // height of text only + int new_h = icon ? icon->h()+2 : 0; // init with *new* icon height + if (th > old_h) old_h = th; + if (th > new_h) new_h = th; + int dh = new_h - old_h; + full_height_ += dh; // do this *always* + + bl->icon = icon; // set new icon + if (dh>0) { + redraw(); // icon larger than item? must redraw widget + } else { + redraw_line(bl); // icon same or smaller? can redraw just this line + } + replacing(bl,bl); // recalc Fl_Browser_::max_width et al +} + +/** + Returns the icon currently defined for \p line. + If no icon is defined, NULL is returned. + \param[in] line The line whose icon is returned. + \returns The icon defined, or NULL if none. +*/ +Fl_Image* Fl_Browser::icon(int line) const { + FL_BLINE* l = find_line(line); + return(l ? l->icon : NULL); +} + +/** + Removes the icon for \p line. + It's ok to remove an icon if none has been defined. + \param[in] line The line whose icon is to be removed. +*/ +void Fl_Browser::remove_icon(int line) { + icon(line,0); +} + // -// End of "$Id: Fl_Browser.cxx 6726 2009-03-27 16:52:31Z greg.ercolano $". +// End of "$Id: Fl_Browser.cxx 6895 2009-09-21 06:35:08Z greg.ercolano $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_Choice.cxx b/plugins/zynaddsubfx/fltk/src/Fl_Choice.cxx index 22054e8215..a31bdc8737 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_Choice.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_Choice.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Choice.cxx 6616 2009-01-01 21:28:26Z matt $" +// "$Id: Fl_Choice.cxx 6873 2009-09-16 07:06:41Z AlbrechtS $" // // Choice widget for the Fast Light Tool Kit (FLTK). // @@ -209,5 +209,5 @@ int Fl_Choice::handle(int e) { } // -// End of "$Id: Fl_Choice.cxx 6616 2009-01-01 21:28:26Z matt $". +// End of "$Id: Fl_Choice.cxx 6873 2009-09-16 07:06:41Z AlbrechtS $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_Double_Window.cxx b/plugins/zynaddsubfx/fltk/src/Fl_Double_Window.cxx index 8e31149c36..f26951e4df 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_Double_Window.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_Double_Window.cxx @@ -128,7 +128,7 @@ HDC fl_makeDC(HBITMAP bitmap) { SetTextAlign(new_gc, TA_BASELINE|TA_LEFT); SetBkMode(new_gc, TRANSPARENT); #if USE_COLORMAP - if (fl_palette) SelectPalette(new_gc, fl_palette, false); + if (fl_palette) SelectPalette(new_gc, fl_palette, FALSE); #endif SelectObject(new_gc, bitmap); return new_gc; diff --git a/plugins/zynaddsubfx/fltk/src/Fl_File_Browser.cxx b/plugins/zynaddsubfx/fltk/src/Fl_File_Browser.cxx index 1834185a4a..00b182ccff 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_File_Browser.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_File_Browser.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_File_Browser.cxx 6616 2009-01-01 21:28:26Z matt $" +// "$Id: Fl_File_Browser.cxx 6853 2009-09-09 05:16:41Z greg.ercolano $" // // Fl_File_Browser routines. // @@ -42,6 +42,7 @@ #include #include #include +#include // icon #include #include #include "flstring.h" @@ -80,11 +81,17 @@ #define SELECTED 1 #define NOTDISPLAYED 2 +// TODO -- Warning: The definition of FL_BLINE here is a hack. +// Fl_File_Browser should not do this. PLEASE FIX. +// FL_BLINE should be private to Fl_Browser, and not re-defined here. +// For now, make sure this struct is precisely consistent with Fl_Browser.cxx. +// struct FL_BLINE // data is in a linked list of these { FL_BLINE *prev; // Previous item in list FL_BLINE *next; // Next item in list void *data; // Pointer to data (function) + Fl_Image *icon; // Pointer to optional icon short length; // sizeof(txt)-1, may be longer than string char flags; // selected, displayed char txt[1]; // start of allocated array @@ -635,5 +642,5 @@ Fl_File_Browser::filter(const char *pattern) // I - Pattern string // -// End of "$Id: Fl_File_Browser.cxx 6616 2009-01-01 21:28:26Z matt $". +// End of "$Id: Fl_File_Browser.cxx 6853 2009-09-09 05:16:41Z greg.ercolano $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_File_Chooser2.cxx b/plugins/zynaddsubfx/fltk/src/Fl_File_Chooser2.cxx index 03e070e169..58df478be0 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_File_Chooser2.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_File_Chooser2.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_File_Chooser2.cxx 6678 2009-03-13 23:36:09Z AlbrechtS $" +// "$Id: Fl_File_Chooser2.cxx 6899 2009-09-23 21:32:23Z matt $" // // More Fl_File_Chooser routines. // @@ -858,7 +858,7 @@ Fl_File_Chooser::fileNameCB() } } else { // File doesn't exist, so beep at and alert the user... - fl_alert("%s", existing_file_label); + fl_alert(existing_file_label); } } else if (Fl::event_key() != FL_Delete && @@ -1046,7 +1046,7 @@ Fl_File_Chooser::newdir() // Get a directory name from the user - if ((dir = fl_input("%s", new_directory_label, (char *)NULL)) == NULL) + if ((dir = fl_input(new_directory_label, NULL)) == NULL) return; // Make it relative to the current directory as needed... @@ -1213,7 +1213,7 @@ Fl_File_Chooser::showChoiceCB() item = showChoice->text(showChoice->value()); if (strcmp(item, custom_filter_label) == 0) { - if ((item = fl_input("%s",custom_filter_label, pattern_)) != NULL) { + if ((item = fl_input(custom_filter_label, pattern_)) != NULL) { strlcpy(pattern_, item, sizeof(pattern_)); quote_pathname(temp, item, sizeof(temp)); @@ -1332,10 +1332,37 @@ Fl_File_Chooser::update_preview() window->cursor(FL_CURSOR_DEFAULT); Fl::check(); - // Scan the buffer for printable chars... - for (ptr = preview_text_; + // Scan the buffer for printable UTF8 chars... + for (ptr = preview_text_; *ptr; ptr++) { + uchar c = uchar(*ptr); + if ( (c&0x80)==0 ) { + if (!isprint(c&255) && !isspace(c&255)) break; + } else if ( (c&0xe0)==0xc0 ) { + if (ptr[1] && (ptr[1]&0xc0)!=0x80) break; + ptr++; + } else if ( (c&0xf0)==0xe0 ) { + if (ptr[1] && (ptr[1]&0xc0)!=0x80) break; + ptr++; + if (ptr[1] && (ptr[1]&0xc0)!=0x80) break; + ptr++; + } else if ( (c&0xf8)==0xf0 ) { + if (ptr[1] && (ptr[1]&0xc0)!=0x80) break; + ptr++; + if (ptr[1] && (ptr[1]&0xc0)!=0x80) break; + ptr++; + if (ptr[1] && (ptr[1]&0xc0)!=0x80) break; + ptr++; + } + } +// *ptr && (isprint(*ptr & 255) || isspace(*ptr & 255)); +// ptr ++); + + // Scan the buffer for printable characters in 8 bit + if (*ptr || ptr == preview_text_) { + for (ptr = preview_text_; *ptr && (isprint(*ptr & 255) || isspace(*ptr & 255)); ptr ++); + } if (*ptr || ptr == preview_text_) { // Non-printable file, just show a big ?... @@ -1589,5 +1616,5 @@ unquote_pathname(char *dst, // O - Destination string // -// End of "$Id: Fl_File_Chooser2.cxx 6678 2009-03-13 23:36:09Z AlbrechtS $". +// End of "$Id: Fl_File_Chooser2.cxx 6899 2009-09-23 21:32:23Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_File_Input.cxx b/plugins/zynaddsubfx/fltk/src/Fl_File_Input.cxx index 6ed5a07594..d46c984521 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_File_Input.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_File_Input.cxx @@ -144,7 +144,7 @@ void Fl_File_Input::update_buttons() { \param[in] str new string value \param[in] len lengh of value */ -int // O - true on success +int // O - TRUE on success Fl_File_Input::value(const char *str, // I - New string value int len) { // I - Length of value damage(FL_DAMAGE_BAR); @@ -157,7 +157,7 @@ Fl_File_Input::value(const char *str, // I - New string value Returns non 0 on success. \param[in] str new string value */ -int // O - true on success +int // O - TRUE on success Fl_File_Input::value(const char *str) { // I - New string value damage(FL_DAMAGE_BAR); return Fl_Input::value(str); @@ -187,7 +187,7 @@ void Fl_File_Input::draw() { Return non zero if event is handled. \param[in] event */ -int // O - true if we handled event +int // O - TRUE if we handled event Fl_File_Input::handle(int event) // I - Event { // printf("handle(event = %d)\n", event); @@ -230,7 +230,7 @@ Fl_File_Input::handle(int event) // I - Event Return non zero if event is handled. \param[in] event */ -int // O - true if we handled event +int // O - TRUE if we handled event Fl_File_Input::handle_button(int event) // I - Event { int i, // Looping var diff --git a/plugins/zynaddsubfx/fltk/src/Fl_Image.cxx b/plugins/zynaddsubfx/fltk/src/Fl_Image.cxx index 79c8762b1c..e0ffc14fee 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_Image.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_Image.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Image.cxx 6773 2009-04-21 09:25:22Z AlbrechtS $" +// "$Id: Fl_Image.cxx 6804 2009-06-29 07:44:25Z AlbrechtS $" // // Image drawing code for the Fast Light Tool Kit (FLTK). // @@ -551,5 +551,5 @@ void Fl_RGB_Image::label(Fl_Menu_Item* m) { // -// End of "$Id: Fl_Image.cxx 6773 2009-04-21 09:25:22Z AlbrechtS $". +// End of "$Id: Fl_Image.cxx 6804 2009-06-29 07:44:25Z AlbrechtS $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_Input.cxx b/plugins/zynaddsubfx/fltk/src/Fl_Input.cxx index 1b25a68980..7be68aafae 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_Input.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_Input.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Input.cxx 6765 2009-04-15 08:35:28Z matt $" +// "$Id: Fl_Input.cxx 6888 2009-09-19 21:16:21Z matt $" // // Input widget for the Fast Light Tool Kit (FLTK). // @@ -621,6 +621,18 @@ int Fl_Input::handle(int event) { take_focus(); return 1; +/* TODO: this will scroll the area, but stop if the cursor would become invisible. + That clipping happens in drawtext(). Do we change the clipping or should + we move the cursor (ouch)? + case FL_MOUSEWHEEL: + if (Fl::e_dy > 0) { + yscroll( yscroll() - Fl::e_dy*15 ); + } else if (Fl::e_dy < 0) { + yscroll( yscroll() - Fl::e_dy*15 ); + } + return 1; +*/ + } Fl_Boxtype b = box(); return Fl_Input_::handletext(event, @@ -637,5 +649,5 @@ Fl_Input::Fl_Input(int X, int Y, int W, int H, const char *l) } // -// End of "$Id: Fl_Input.cxx 6765 2009-04-15 08:35:28Z matt $". +// End of "$Id: Fl_Input.cxx 6888 2009-09-19 21:16:21Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_Input_.cxx b/plugins/zynaddsubfx/fltk/src/Fl_Input_.cxx index 3868255b19..ca6638c60d 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_Input_.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_Input_.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Input_.cxx 6777 2009-04-23 15:32:19Z matt $" +// "$Id: Fl_Input_.cxx 6887 2009-09-19 20:57:48Z matt $" // // Common input widget routines for the Fast Light Tool Kit (FLTK). // @@ -134,7 +134,7 @@ double Fl_Input_::expandpos( if (c < ' ' || c == 127) { if (c == '\t' && input_type()==FL_MULTILINE_INPUT) { n += 8-(chr%8); - chr += 8-(chr%8); + chr += 7-(chr%8); } else n += 2; } else { n++; @@ -239,6 +239,7 @@ void Fl_Input_::drawtext(int X, int Y, int W, int H) { // count how many lines and put the last one into the buffer: // And figure out where the cursor is: int height = fl_height(); + int threshold = height/2; int lines; int curx, cury; for (p=value(), curx=cury=lines=0; ;) { @@ -248,15 +249,15 @@ void Fl_Input_::drawtext(int X, int Y, int W, int H) { if (Fl::focus()==this && !was_up_down) up_down_pos = curx; cury = lines*height; int newscroll = xscroll_; - if (curx > newscroll+W-20) { + if (curx > newscroll+W-threshold) { // figure out scrolling so there is space after the cursor: - newscroll = curx+20-W; + newscroll = curx+threshold-W; // figure out the furthest left we ever want to scroll: int ex = int(expandpos(p, e, buf, 0))+2-W; // use minimum of both amounts: if (ex < newscroll) newscroll = ex; - } else if (curx < newscroll+20) { - newscroll = curx-20; + } else if (curx < newscroll+threshold) { + newscroll = curx-threshold; } if (newscroll < 0) newscroll = 0; if (newscroll != xscroll_) { @@ -1253,5 +1254,5 @@ Fl_Char Fl_Input_::index(int i) const } // -// End of "$Id: Fl_Input_.cxx 6777 2009-04-23 15:32:19Z matt $". +// End of "$Id: Fl_Input_.cxx 6887 2009-09-19 20:57:48Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_Menu.cxx b/plugins/zynaddsubfx/fltk/src/Fl_Menu.cxx index 4e71f07753..f49d896689 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_Menu.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_Menu.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Menu.cxx 6757 2009-04-12 20:00:45Z matt $" +// "$Id: Fl_Menu.cxx 6841 2009-08-03 06:26:32Z AlbrechtS $" // // Menu code for the Fast Light Tool Kit (FLTK). // @@ -1014,5 +1014,5 @@ const Fl_Menu_Item* Fl_Menu_Item::test_shortcut() const { } // -// End of "$Id: Fl_Menu.cxx 6757 2009-04-12 20:00:45Z matt $". +// End of "$Id: Fl_Menu.cxx 6841 2009-08-03 06:26:32Z AlbrechtS $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_Menu_.cxx b/plugins/zynaddsubfx/fltk/src/Fl_Menu_.cxx index ce7c89e105..3c83ae7b94 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_Menu_.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_Menu_.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Menu_.cxx 6660 2009-02-15 18:58:03Z AlbrechtS $" +// "$Id: Fl_Menu_.cxx 6904 2009-09-27 11:39:02Z matt $" // // Common menu code for the Fast Light Tool Kit (FLTK). // @@ -172,11 +172,11 @@ void Fl_Menu_Item::setonly() { } } -Fl_Menu_::Fl_Menu_(int X,int Y,int W,int H,const char* l) /** - Creates a new Fl_Menu_ widget using the given position, size, - and label string. menu() is initialized to null. -*/ + Creates a new Fl_Menu_ widget using the given position, size, + and label string. menu() is initialized to null. + */ +Fl_Menu_::Fl_Menu_(int X,int Y,int W,int H,const char* l) : Fl_Widget(X,Y,W,H,l) { set_flag(SHORTCUT_LABEL); box(FL_UP_BOX); @@ -262,5 +262,5 @@ void Fl_Menu_::clear() { } // -// End of "$Id: Fl_Menu_.cxx 6660 2009-02-15 18:58:03Z AlbrechtS $". +// End of "$Id: Fl_Menu_.cxx 6904 2009-09-27 11:39:02Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_Menu_add.cxx b/plugins/zynaddsubfx/fltk/src/Fl_Menu_add.cxx index 9a3d4be08f..cbeeb631a7 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_Menu_add.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_Menu_add.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Menu_add.cxx 6716 2009-03-24 01:40:44Z fabien $" +// "$Id: Fl_Menu_add.cxx 6878 2009-09-17 22:12:24Z matt $" // // Menu utilities for the Fast Light Tool Kit (FLTK). // @@ -177,56 +177,95 @@ int Fl_Menu_Item::add( } /** - Adds a new menu item, with a title string, shortcut int (or string), - callback, argument to the callback, and flags. + Adds a new menu item. + + \param[in] label The text label for the menu item. + \param[in] shortcut Optional keyboard shortcut that can be an int or string; (FL_CTRL+'a') or "^a". Default 0 if none. + \param[in] callback Optional callback invoked when user clicks the item. Default 0 if none. + \param[in] userdata Optional user data passed as an argument to the callback. Default 0 if none. + \param[in] flags Optional flags that control the type of menu item; see below. Default is 0 for none. + \returns The index into the menu() array, where the entry was added. + + \par Description If the menu array was directly set with menu(x), then copy() is done to make a private array. - - The characters "&", "/", "\", and "_" are treated as - special characters in the label string. The "&" character - specifies that the following character is an accelerator and - will be underlined. The "\" character is used to escape the next - character in the string. Labels starting with the "_" character - cause a divider to be placed after that menu item. - - A label of the form "foo/bar/baz" will create submenus called - "foo" and "bar" with an entry called "baz". The "/" character is - ignored if it appears as the first character of the label string, e.g. - "/foo/bar/baz". - + \par + A menu item's callback must not add() items to its parent menu during the callback. + + Detailed Description of Parameters + \par label + The menu item's label. This option is required. + \par + The characters "&", "/", "\", and "_" are treated as special characters in the label string. + The "&" character specifies that the following character is an accelerator and will be underlined. + The "\" character is used to escape the next character in the string. + Labels starting with the "_" character cause a divider to be placed after that menu item. + \par + A label of the form "File/Quit" will create the submenu "File" + with a menu item called "Quit". The "/" character is ignored if it appears + as the first character of the label string, e.g. "/File/Quit". + \par The label string is copied to new memory and can be freed. The other arguments (including the shortcut) are copied into the menu item unchanged. - + \par If an item exists already with that name then it is replaced with this new one. Otherwise this new one is added to the end of the correct menu or submenu. The return value is the offset into the array that the new entry was placed at. + \par shortcut + The keyboard shortcut for this menu item. + \par + This parameter is optional, and defaults to 0 to indicate no shortcut. + \par Shortcut can be 0L, or either a modifier/key combination (for example FL_CTRL+'A') or a string describing the shortcut in one of two ways: - - \code + \verbatim [#+^] e.g. "97", "^97", "+97", "#97" [#+^] e.g. "a", "^a", "+a", "#a" - \endcode + \endverbatim ..where \ is a decimal value representing an ascii character (eg. 97 is the ascii for 'a'), and the optional prefixes enhance the value that follows. Multiple prefixes must appear in the above order. - \code + \verbatim # - Alt + - Shift ^ - Control - \endcode + \endverbatim Text shortcuts are converted to integer shortcut by calling - int fl_old_shortcut(const char*). - - The return value is the index into the array that the entry was put. - - No items must be added to a menu during a callback to the same menu. + Fl_Shortcut fl_old_shortcut(const char*). + + \par callback + The callback to invoke when this menu item is selected. + \par + This parameter is optional, and defaults to 0 for no callback. + + \par userdata + The callback's 'user data' that is passed to the callback. + \par + This parameter is optional, and defaults to 0. + + \par flags + These are bit flags to define what kind of menu item this is. + \par + This parameter is optional, and defaults to 0 to define a 'regular' menu item. + \par + These flags can be 'OR'ed together: + \code + FL_MENU_INACTIVE // Deactivate menu item (gray out) + FL_MENU_TOGGLE // Item is a checkbox toggle (shows checkbox for on/off state) + FL_MENU_VALUE // The on/off state for checkbox/radio buttons (if set, state is 'on') + FL_MENU_RADIO // Item is a radio button (one checkbox of many can be on) + FL_MENU_INVISIBLE // Item will not show up (shortcut will work) + FL_SUBMENU_POINTER // Indicates user_data() is a pointer to another menu array + FL_SUBMENU // This item is a submenu to other items + FL_MENU_DIVIDER // Creates divider line below this item. Also ends a group of radio buttons. + \endcode + */ -int Fl_Menu_::add(const char *t, int s, Fl_Callback *c,void *v,int f) { +int Fl_Menu_::add(const char *label,int shortcut,Fl_Callback *callback,void *userdata,int flags) { // make this widget own the local array: if (this != fl_menu_array_owner) { if (fl_menu_array_owner) { @@ -260,7 +299,7 @@ int Fl_Menu_::add(const char *t, int s, Fl_Callback *c,void *v,int f) { } fl_menu_array_owner = this; } - int r = menu_->add(t,s,c,v,f); + int r = menu_->add(label,shortcut,callback,userdata,flags); // if it rellocated array we must fix the pointer: int value_offset = value_-menu_; menu_ = local_array; // in case it reallocated it @@ -335,5 +374,5 @@ void Fl_Menu_::remove(int i) { } // -// End of "$Id: Fl_Menu_add.cxx 6716 2009-03-24 01:40:44Z fabien $". +// End of "$Id: Fl_Menu_add.cxx 6878 2009-09-17 22:12:24Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_Progress.cxx b/plugins/zynaddsubfx/fltk/src/Fl_Progress.cxx index 227c90f579..d7dee68855 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_Progress.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_Progress.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Progress.cxx 6616 2009-01-01 21:28:26Z matt $" +// "$Id: Fl_Progress.cxx 6794 2009-06-27 09:29:36Z AlbrechtS $" // // Progress bar widget routines. // @@ -119,5 +119,5 @@ Fl_Progress::Fl_Progress(int X, int Y, int W, int H, const char* L) // -// End of "$Id: Fl_Progress.cxx 6616 2009-01-01 21:28:26Z matt $". +// End of "$Id: Fl_Progress.cxx 6794 2009-06-27 09:29:36Z AlbrechtS $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_Scroll.cxx b/plugins/zynaddsubfx/fltk/src/Fl_Scroll.cxx index 07ebcc28ff..f9a03027a5 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_Scroll.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_Scroll.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Scroll.cxx 6654 2009-02-08 18:47:37Z AlbrechtS $" +// "$Id: Fl_Scroll.cxx 6828 2009-07-12 00:15:06Z greg.ercolano $" // // Scroll widget for the Fast Light Tool Kit (FLTK). // @@ -413,5 +413,5 @@ int Fl_Scroll::handle(int event) { } // -// End of "$Id: Fl_Scroll.cxx 6654 2009-02-08 18:47:37Z AlbrechtS $". +// End of "$Id: Fl_Scroll.cxx 6828 2009-07-12 00:15:06Z greg.ercolano $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_Text_Buffer.cxx b/plugins/zynaddsubfx/fltk/src/Fl_Text_Buffer.cxx index 91c33f4bc4..73f72f1213 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_Text_Buffer.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_Text_Buffer.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Text_Buffer.cxx 6765 2009-04-15 08:35:28Z matt $" +// "$Id: Fl_Text_Buffer.cxx 6825 2009-07-04 05:18:29Z fabien $" // // Copyright 2001-2009 by Bill Spitzak and others. // Original code Copyright Mark Edel. Permission to distribute under @@ -2502,5 +2502,5 @@ Fl_Text_Buffer::outputfile(const char *file, int start, int end, int buflen) { // -// End of "$Id: Fl_Text_Buffer.cxx 6765 2009-04-15 08:35:28Z matt $". +// End of "$Id: Fl_Text_Buffer.cxx 6825 2009-07-04 05:18:29Z fabien $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_Text_Display.cxx b/plugins/zynaddsubfx/fltk/src/Fl_Text_Display.cxx index 5a01f74628..3e09584e85 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_Text_Display.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_Text_Display.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Text_Display.cxx 6765 2009-04-15 08:35:28Z matt $" +// "$Id: Fl_Text_Display.cxx 6909 2009-09-28 14:41:43Z matt $" // // Copyright 2001-2009 by Bill Spitzak and others. // Original code Copyright Mark Edel. Permission to distribute under @@ -387,8 +387,8 @@ void Fl_Text_Display::resize(int X, int Y, int W, int H) { mMaxsize = max(mMaxsize, fl_height(mStyleTable[i].font, mStyleTable[i].size)); // did we have scrollbars initially? - int hscrollbarvisible = mHScrollBar->visible(); - int vscrollbarvisible = mVScrollBar->visible(); + unsigned int hscrollbarvisible = mHScrollBar->visible(); + unsigned int vscrollbarvisible = mVScrollBar->visible(); // try without scrollbars first mVScrollBar->clear_visible(); @@ -3439,5 +3439,5 @@ int Fl_Text_Display::handle(int event) { // -// End of "$Id: Fl_Text_Display.cxx 6765 2009-04-15 08:35:28Z matt $". +// End of "$Id: Fl_Text_Display.cxx 6909 2009-09-28 14:41:43Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_Text_Editor.cxx b/plugins/zynaddsubfx/fltk/src/Fl_Text_Editor.cxx index 5e5ea41af6..dc471cafe6 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_Text_Editor.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_Text_Editor.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Text_Editor.cxx 6765 2009-04-15 08:35:28Z matt $" +// "$Id: Fl_Text_Editor.cxx 6894 2009-09-20 21:55:21Z greg.ercolano $" // // Copyright 2001-2009 by Bill Spitzak and others. // Original code Copyright Mark Edel. Permission to distribute under @@ -156,6 +156,14 @@ static struct { { 'c', FL_COMMAND, Fl_Text_Editor::kf_copy }, { 'v', FL_COMMAND, Fl_Text_Editor::kf_paste }, { 'a', FL_COMMAND, Fl_Text_Editor::kf_select_all }, + { FL_Left, FL_COMMAND, Fl_Text_Editor::kf_meta_move }, + { FL_Right, FL_COMMAND, Fl_Text_Editor::kf_meta_move }, + { FL_Up, FL_COMMAND, Fl_Text_Editor::kf_meta_move }, + { FL_Down, FL_COMMAND, Fl_Text_Editor::kf_meta_move }, + { FL_Left, FL_COMMAND|FL_SHIFT, Fl_Text_Editor::kf_m_s_move }, + { FL_Right, FL_COMMAND|FL_SHIFT, Fl_Text_Editor::kf_m_s_move }, + { FL_Up, FL_COMMAND|FL_SHIFT, Fl_Text_Editor::kf_m_s_move }, + { FL_Down, FL_COMMAND|FL_SHIFT, Fl_Text_Editor::kf_m_s_move }, #endif // __APPLE__ { 0, 0, 0 } @@ -352,6 +360,40 @@ int Fl_Text_Editor::kf_ctrl_move(int c, Fl_Text_Editor* e) { return 1; } +/** Moves the current text cursor in the direction indicated by meta key */ +int Fl_Text_Editor::kf_meta_move(int c, Fl_Text_Editor* e) { + if (!e->buffer()->selected()) + e->dragPos = e->insert_position(); + if (c != FL_Up && c != FL_Down) { + e->buffer()->unselect(); + e->show_insert_position(); + } + switch (c) { + case FL_Up: // top of buffer + e->insert_position(0); + e->scroll(0, 0); + break; + case FL_Down: // end of buffer + e->insert_position(e->buffer()->length()); + e->scroll(e->count_lines(0, e->buffer()->length(), 1), 0); + break; + case FL_Left: // beginning of line + kf_move(FL_Home, e); + break; + case FL_Right: // end of line + kf_move(FL_End, e); + break; + } + return 1; +} + +/** Extends the current selection in the direction indicated by meta key c. */ +int Fl_Text_Editor::kf_m_s_move(int c, Fl_Text_Editor* e) { + kf_meta_move(c, e); + fl_text_drag_me(e->insert_position(), e); + return 1; +} + /** Extends the current selection in the direction indicated by control key c. */ int Fl_Text_Editor::kf_c_s_move(int c, Fl_Text_Editor* e) { kf_ctrl_move(c, e); @@ -572,5 +614,5 @@ int Fl_Text_Editor::handle(int event) { } // -// End of "$Id: Fl_Text_Editor.cxx 6765 2009-04-15 08:35:28Z matt $". +// End of "$Id: Fl_Text_Editor.cxx 6894 2009-09-20 21:55:21Z greg.ercolano $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_Tooltip.cxx b/plugins/zynaddsubfx/fltk/src/Fl_Tooltip.cxx index ef533a0dc0..ee02ac88db 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_Tooltip.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_Tooltip.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Tooltip.cxx 6712 2009-03-22 19:21:34Z AlbrechtS $" +// "$Id: Fl_Tooltip.cxx 6902 2009-09-27 11:06:56Z matt $" // // Tooltip source file for the Fast Light Tool Kit (FLTK). // @@ -34,10 +34,10 @@ float Fl_Tooltip::delay_ = 1.0f; float Fl_Tooltip::hoverdelay_ = 0.2f; int Fl_Tooltip::enabled_ = 1; -unsigned Fl_Tooltip::color_ = fl_color_cube(FL_NUM_RED - 1, +Fl_Color Fl_Tooltip::color_ = fl_color_cube(FL_NUM_RED - 1, FL_NUM_GREEN - 1, FL_NUM_BLUE - 2); -unsigned Fl_Tooltip::textcolor_ = FL_BLACK; +Fl_Color Fl_Tooltip::textcolor_ = FL_BLACK; Fl_Font Fl_Tooltip::font_ = FL_HELVETICA; Fl_Fontsize Fl_Tooltip::size_ = FL_NORMAL_SIZE; @@ -278,5 +278,5 @@ void Fl_Widget::tooltip(const char *tt) { } // -// End of "$Id: Fl_Tooltip.cxx 6712 2009-03-22 19:21:34Z AlbrechtS $". +// End of "$Id: Fl_Tooltip.cxx 6902 2009-09-27 11:06:56Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_Window.cxx b/plugins/zynaddsubfx/fltk/src/Fl_Window.cxx index c0fa1a945f..558a8d2e15 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_Window.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_Window.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Window.cxx 6669 2009-02-25 08:44:54Z AlbrechtS $" +// "$Id: Fl_Window.cxx 6905 2009-09-27 12:06:35Z matt $" // // Window widget class for the Fast Light Tool Kit (FLTK). // @@ -66,7 +66,7 @@ Fl_Window::Fl_Window(int X,int Y,int W, int H, const char *l) cursor_bg = FL_WHITE; _Fl_Window(); - set_flag(FL_FORCE_POSITION); + set_flag(FORCE_POSITION); } Fl_Window::Fl_Window(int W, int H, const char *l) @@ -151,8 +151,7 @@ void Fl_Window::copy_label(const char *a) { void Fl_Window::iconlabel(const char *iname) { - // FIXME: 'flags' is 32 bit large! - uchar saveflags = flags(); + unsigned saveflags = flags(); label(label(), iname); set_flag(saveflags); } @@ -179,5 +178,5 @@ Fl_Window *Fl_Window::current() { // -// End of "$Id: Fl_Window.cxx 6669 2009-02-25 08:44:54Z AlbrechtS $". +// End of "$Id: Fl_Window.cxx 6905 2009-09-27 12:06:35Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_Window_fullscreen.cxx b/plugins/zynaddsubfx/fltk/src/Fl_Window_fullscreen.cxx index 67f9877c81..6635133fd7 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_Window_fullscreen.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_Window_fullscreen.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Window_fullscreen.cxx 6660 2009-02-15 18:58:03Z AlbrechtS $" +// "$Id: Fl_Window_fullscreen.cxx 6905 2009-09-27 12:06:35Z matt $" // // Fullscreen window support for the Fast Light Tool Kit (FLTK). // @@ -43,10 +43,10 @@ void Fl_Window::border(int b) { if (b) { if (border()) return; - clear_flag(FL_NOBORDER); + clear_flag(NOBORDER); } else { if (!border()) return; - set_flag(FL_NOBORDER); + set_flag(NOBORDER); } #if defined(USE_X11) if (shown()) Fl_X::i(this)->sendxjunk(); @@ -91,5 +91,5 @@ void Fl_Window::fullscreen_off(int X,int Y,int W,int H) { } // -// End of "$Id: Fl_Window_fullscreen.cxx 6660 2009-02-15 18:58:03Z AlbrechtS $". +// End of "$Id: Fl_Window_fullscreen.cxx 6905 2009-09-27 12:06:35Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_arg.cxx b/plugins/zynaddsubfx/fltk/src/Fl_arg.cxx index d0d1b6f45d..b2ed5b36c7 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_arg.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_arg.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_arg.cxx 6712 2009-03-22 19:21:34Z AlbrechtS $" +// "$Id: Fl_arg.cxx 6813 2009-07-01 07:32:14Z AlbrechtS $" // // Optional argument initialization code for the Fast Light Tool Kit (FLTK). // @@ -538,5 +538,5 @@ int XParseGeometry(const char* string, int* x, int* y, #endif // ifdef WIN32 // -// End of "$Id: Fl_arg.cxx 6712 2009-03-22 19:21:34Z AlbrechtS $". +// End of "$Id: Fl_arg.cxx 6813 2009-07-01 07:32:14Z AlbrechtS $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_mac.cxx b/plugins/zynaddsubfx/fltk/src/Fl_mac.cxx index 5e181fc6c9..28541652cd 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_mac.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_mac.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_mac.cxx 6758 2009-04-13 07:32:01Z matt $" +// "$Id: Fl_mac.cxx 6905 2009-09-27 12:06:35Z matt $" // // MacOS specific code for the Fast Light Tool Kit (FLTK). // @@ -1496,10 +1496,10 @@ void fl_open_display() { beenHereDoneThat = 1; FlushEvents(everyEvent,0); - + MoreMasters(); // \todo Carbon suggests MoreMasterPointers() AEInstallEventHandler( kCoreEventClass, kAEQuitApplication, NewAEEventHandlerUPP((AEEventHandlerProcPtr)QuitAppleEventHandler), 0, false ); - + // create the Mac Handle for the default cursor (a pointer to a pointer) GetQDGlobalsArrow(&default_cursor); default_cursor_ptr = &default_cursor; @@ -1508,12 +1508,12 @@ void fl_open_display() { ClearMenuBar(); AppendResMenu( GetMenuHandle( 1 ), 'DRVR' ); DrawMenuBar(); - + // bring the application into foreground without a 'CARB' resource Boolean same_psn; ProcessSerialNumber cur_psn, front_psn; if( !GetCurrentProcess( &cur_psn ) && !GetFrontProcess( &front_psn ) && - !SameProcess( &front_psn, &cur_psn, &same_psn ) && !same_psn ) + !SameProcess( &front_psn, &cur_psn, &same_psn ) && !same_psn ) { // only transform the application type for unbundled apps CFBundleRef bundle = CFBundleGetMainBundle(); @@ -1522,35 +1522,16 @@ void fl_open_display() { FSRef execFs; CFURLRef execUrl = CFBundleCopyExecutableURL( bundle ); CFURLGetFSRef( execUrl, &execFs ); - + FSRef bundleFs; GetProcessBundleLocation( &cur_psn, &bundleFs ); - + if( !FSCompareFSRefs( &execFs, &bundleFs ) ) bundle = NULL; - + CFRelease(execUrl); } - - // imm: keycode handler stub setting - use Gestalt to determine the running system version, - // then set the keycode_function pointer accordingly - SInt32 MacVersion; - if (Gestalt(gestaltSystemVersion, &MacVersion) == noErr) - { -// SInt32 maj, min, fix; -// Gestalt(gestaltSystemVersionMajor, &maj); // e.g. 10 -// Gestalt(gestaltSystemVersionMinor, &min); // e.g. 4 -// Gestalt(gestaltSystemVersionBugFix, &fix); // e.g. 11 - if(MacVersion >= 0x1050) { // 10.5.0 or later - keycode_function = keycodeToUnicode; - } - else { - keycode_function = keycode_wrap_old; // pre-10.5 mechanism - } - } - // else our default handler will be used (keycode_wrap_old) - - + if( !bundle ) { // Earlier versions of this code tried to use weak linking, however it @@ -1558,19 +1539,30 @@ void fl_open_display() { // both TransformProcessType and CPSEnableForegroundOperation, the following // conditional code compiled on 10.2 will still work on newer releases... OSErr err; - + #if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_2 if (TransformProcessType != NULL) { - err = TransformProcessType(&cur_psn, kProcessTransformToForegroundApplication); - } else + err = TransformProcessType(&cur_psn, kProcessTransformToForegroundApplication); + } else #endif // MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_2 - err = CPSEnableForegroundOperation(&cur_psn, 0x03, 0x3C, 0x2C, 0x1103); - + err = CPSEnableForegroundOperation(&cur_psn, 0x03, 0x3C, 0x2C, 0x1103); + if (err == noErr) { - SetFrontProcess( &cur_psn ); + SetFrontProcess( &cur_psn ); } } } + + // imm: keycode handler stub setting - use Gestalt to determine the running system version, + // then set the keycode_function pointer accordingly + keycode_function = keycode_wrap_old; // default to pre-10.5 mechanism + SInt32 MacVersion; + if (Gestalt(gestaltSystemVersion, &MacVersion) == noErr) + { + if(MacVersion >= 0x1050) { // 10.5.0 or later + keycode_function = keycodeToUnicode; + } + } } } @@ -2185,7 +2177,7 @@ void Fl_X::make(Fl_Window* w) wp += 2*bx; hp += 2*by+bt; } - if (!(w->flags() & Fl_Window::FL_FORCE_POSITION)) { + if (!(w->flags() & Fl_Widget::FORCE_POSITION)) { // use the Carbon functions below for default window positioning w->x(xyPos+Fl::x()); w->y(xyPos+Fl::y()); @@ -2232,7 +2224,7 @@ void Fl_X::make(Fl_Window* w) SetWindowClass(x->xid, kFloatingWindowClass); SetWindowActivationScope(x->xid, kWindowActivationScopeAll); } - if (!(w->flags() & Fl_Window::FL_FORCE_POSITION)) + if (!(w->flags() & Fl_Widget::FORCE_POSITION)) { WindowRef pw = Fl_X::first ? Fl_X::first->xid : 0 ; if (w->modal()) { @@ -2412,7 +2404,7 @@ void Fl_Window::resize(int X,int Y,int W,int H) { int is_a_resize = (W != w() || H != h()); // printf("Fl_Winodw::resize(X=%d, Y=%d, W=%d, H=%d), is_a_resize=%d, resize_from_system=%p, this=%p\n", // X, Y, W, H, is_a_resize, resize_from_system, this); - if (X != x() || Y != y()) set_flag(FL_FORCE_POSITION); + if (X != x() || Y != y()) set_flag(FORCE_POSITION); else if (!is_a_resize) return; if ( (resize_from_system!=this) && (!parent()) && shown()) { if (is_a_resize) { @@ -2881,5 +2873,5 @@ void MacUnmapWindow(Fl_Window *w, WindowPtr p) { #endif // FL_DOXYGEN // -// End of "$Id: Fl_mac.cxx 6758 2009-04-13 07:32:01Z matt $". +// End of "$Id: Fl_mac.cxx 6905 2009-09-27 12:06:35Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_win32.cxx b/plugins/zynaddsubfx/fltk/src/Fl_win32.cxx index be96d311ff..a97a082da2 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_win32.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_win32.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_win32.cxx 6668 2009-02-21 10:18:47Z AlbrechtS $" +// "$Id: Fl_win32.cxx 6905 2009-09-27 12:06:35Z matt $" // // WIN32-specific code for the Fast Light Tool Kit (FLTK). // @@ -398,7 +398,7 @@ int fl_wait(double time_to_wait) { time_to_wait = (time_to_wait > 10000 ? 10000 : time_to_wait); int t_msec = (int) (time_to_wait * 1000.0 + 0.5); - MsgWaitForMultipleObjects(0, NULL, false, t_msec, QS_ALLINPUT); + MsgWaitForMultipleObjects(0, NULL, FALSE, t_msec, QS_ALLINPUT); fl_lock_function(); @@ -1127,7 +1127,7 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar #if USE_COLORMAP case WM_QUERYNEWPALETTE : fl_GetDC(hWnd); - if (fl_select_palette()) InvalidateRect(hWnd, NULL, false); + if (fl_select_palette()) InvalidateRect(hWnd, NULL, FALSE); break; case WM_PALETTECHANGED: @@ -1215,7 +1215,7 @@ int Fl_X::fake_X_wm(const Fl_Window* w,int &X,int &Y, int &bt,int &bx, int &by) r.right = w->x()+w->w(); r.bottom = w->y()+w->h(); // get the decoration rectangle for the desired client rectangle - BOOL ok = AdjustWindowRectEx(&r, style, false, exstyle); + BOOL ok = AdjustWindowRectEx(&r, style, FALSE, exstyle); if (ok) { X = r.left; Y = r.top; @@ -1292,7 +1292,7 @@ void Fl_Window::resize(int X,int Y,int W,int H) { int resize_from_program = (this != resize_bug_fix); if (!resize_from_program) resize_bug_fix = 0; if (X != x() || Y != y()) { - set_flag(FL_FORCE_POSITION); + set_flag(FORCE_POSITION); } else { if (!is_a_resize) return; flags |= SWP_NOMOVE; @@ -1474,7 +1474,7 @@ Fl_X* Fl_X::make(Fl_Window* w) { wp += 2*bx; hp += 2*by+bt; } - if (!(w->flags() & Fl_Window::FL_FORCE_POSITION)) { + if (!(w->flags() & Fl_Widget::FORCE_POSITION)) { xp = yp = CW_USEDEFAULT; } else { if (!Fl::grab()) { @@ -1557,7 +1557,7 @@ Fl_X* Fl_X::make(Fl_Window* w) { CoCreateInstance(CLSID_CActiveIMM, NULL, CLSCTX_INPROC_SERVER, IID_IActiveIMMApp, (void**) &fl_aimm); if (fl_aimm) { - fl_aimm->Activate(true); + fl_aimm->Activate(TRUE); } } #endif // !__GNUC__ || __GNUC__ >= 3 @@ -1916,5 +1916,5 @@ void fl_cleanup_dc_list(void) { // clean up the list #endif // FL_DOXYGEN // -// End of "$Id: Fl_win32.cxx 6668 2009-02-21 10:18:47Z AlbrechtS $". +// End of "$Id: Fl_win32.cxx 6905 2009-09-27 12:06:35Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/src/Fl_x.cxx b/plugins/zynaddsubfx/fltk/src/Fl_x.cxx index 9cb834a4b4..4683338314 100644 --- a/plugins/zynaddsubfx/fltk/src/Fl_x.cxx +++ b/plugins/zynaddsubfx/fltk/src/Fl_x.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_x.cxx 6767 2009-04-16 22:23:36Z AlbrechtS $" +// "$Id: Fl_x.cxx 6905 2009-09-27 12:06:35Z matt $" // // X specific code for the Fast Light Tool Kit (FLTK). // @@ -1352,7 +1352,7 @@ void Fl_Window::resize(int X,int Y,int W,int H) { int is_a_resize = (W != w() || H != h()); int resize_from_program = (this != resize_bug_fix); if (!resize_from_program) resize_bug_fix = 0; - if (is_a_move && resize_from_program) set_flag(FL_FORCE_POSITION); + if (is_a_move && resize_from_program) set_flag(FORCE_POSITION); else if (!is_a_resize && !is_a_move) return; if (is_a_resize) { Fl_Group::resize(X,Y,W,H); @@ -1430,7 +1430,7 @@ void Fl_X::make_xid(Fl_Window* win, XVisualInfo *visual, Colormap colormap) if (!win->parent() && !Fl::grab()) { // center windows in case window manager does not do anything: #ifdef FL_CENTER_WINDOWS - if (!(win->flags() & Fl_Window::FL_FORCE_POSITION)) { + if (!(win->flags() & Fl_Widget::FORCE_POSITION)) { win->x(X = scr_x+(scr_w-W)/2); win->y(Y = scr_y+(scr_h-H)/2); } @@ -1636,7 +1636,7 @@ void Fl_X::sendxjunk() { prop[1] = 1|2|16; // MWM_FUNC_ALL | MWM_FUNC_RESIZE | MWM_FUNC_MAXIMIZE } - if (w->flags() & Fl_Window::FL_FORCE_POSITION) { + if (w->flags() & Fl_Widget::FORCE_POSITION) { hints->flags |= USPosition; hints->x = w->x(); hints->y = w->y(); @@ -1741,5 +1741,5 @@ void Fl_Window::make_current() { #endif // -// End of "$Id: Fl_x.cxx 6767 2009-04-16 22:23:36Z AlbrechtS $". +// End of "$Id: Fl_x.cxx 6905 2009-09-27 12:06:35Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/src/fl_ask.cxx b/plugins/zynaddsubfx/fltk/src/fl_ask.cxx index 897f6d8f8c..0abb379ad6 100644 --- a/plugins/zynaddsubfx/fltk/src/fl_ask.cxx +++ b/plugins/zynaddsubfx/fltk/src/fl_ask.cxx @@ -1,5 +1,5 @@ // -// "$Id: fl_ask.cxx 6763 2009-04-13 22:47:21Z AlbrechtS $" +// "$Id: fl_ask.cxx 6869 2009-09-13 21:57:46Z AlbrechtS $" // // Standard dialog functions for the Fast Light Tool Kit (FLTK). // @@ -215,8 +215,7 @@ static int innards(const char* fmt, va_list ap, message_form->show(); // deactivate Fl::grab(), because it is incompatible with Fl::readqueue() Fl_Window* g = Fl::grab(); - if (g) // do an alternative grab to avoid floating menus, if possible - Fl::grab(message_form); + if (g) Fl::grab(0); int r = 0; for (;;) { Fl_Widget *o = Fl::readqueue(); @@ -461,5 +460,5 @@ const char *fl_password(const char *fmt, const char *defstr, ...) { /** @} */ // -// End of "$Id: fl_ask.cxx 6763 2009-04-13 22:47:21Z AlbrechtS $". +// End of "$Id: fl_ask.cxx 6869 2009-09-13 21:57:46Z AlbrechtS $". // diff --git a/plugins/zynaddsubfx/fltk/src/fl_boxtype.cxx b/plugins/zynaddsubfx/fltk/src/fl_boxtype.cxx index 32d597cbe4..6f8222ee03 100644 --- a/plugins/zynaddsubfx/fltk/src/fl_boxtype.cxx +++ b/plugins/zynaddsubfx/fltk/src/fl_boxtype.cxx @@ -1,5 +1,5 @@ // -// "$Id: fl_boxtype.cxx 6716 2009-03-24 01:40:44Z fabien $" +// "$Id: fl_boxtype.cxx 6902 2009-09-27 11:06:56Z matt $" // // Box drawing code for the Fast Light Tool Kit (FLTK). // @@ -406,7 +406,7 @@ void Fl_Widget::draw_box() const { // if (t == FL_FLAT_BOX) return; // t += 2; // convert box to frame // } - draw_box((Fl_Boxtype)t, x_, y_, w_, h_, (Fl_Color)color_); + draw_box((Fl_Boxtype)t, x_, y_, w_, h_, color_); } /** Draws a box of type t, of color c at the widget's position and size. */ void Fl_Widget::draw_box(Fl_Boxtype t, Fl_Color c) const { @@ -420,5 +420,5 @@ void Fl_Widget::draw_box(Fl_Boxtype t, int X, int Y, int W, int H, Fl_Color c) c } // -// End of "$Id: fl_boxtype.cxx 6716 2009-03-24 01:40:44Z fabien $". +// End of "$Id: fl_boxtype.cxx 6902 2009-09-27 11:06:56Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/src/fl_color.cxx b/plugins/zynaddsubfx/fltk/src/fl_color.cxx index f611d31ff8..c1d182227c 100644 --- a/plugins/zynaddsubfx/fltk/src/fl_color.cxx +++ b/plugins/zynaddsubfx/fltk/src/fl_color.cxx @@ -1,5 +1,5 @@ // -// "$Id: fl_color.cxx 6716 2009-03-24 01:40:44Z fabien $" +// "$Id: fl_color.cxx 6813 2009-07-01 07:32:14Z AlbrechtS $" // // Color functions for the Fast Light Tool Kit (FLTK). // @@ -484,5 +484,5 @@ Fl_Color fl_contrast(Fl_Color fg, Fl_Color bg) { @} */ // -// End of "$Id: fl_color.cxx 6716 2009-03-24 01:40:44Z fabien $". +// End of "$Id: fl_color.cxx 6813 2009-07-01 07:32:14Z AlbrechtS $". // diff --git a/plugins/zynaddsubfx/fltk/src/fl_color_win32.cxx b/plugins/zynaddsubfx/fltk/src/fl_color_win32.cxx index a1564628cc..48ce3a9fe7 100644 --- a/plugins/zynaddsubfx/fltk/src/fl_color_win32.cxx +++ b/plugins/zynaddsubfx/fltk/src/fl_color_win32.cxx @@ -241,7 +241,7 @@ fl_select_palette(void) fl_palette = CreatePalette(pPal); } if (fl_palette) { - SelectPalette(fl_gc, fl_palette, false); + SelectPalette(fl_gc, fl_palette, FALSE); RealizePalette(fl_gc); } return fl_palette; diff --git a/plugins/zynaddsubfx/fltk/src/fl_dnd_win32.cxx b/plugins/zynaddsubfx/fltk/src/fl_dnd_win32.cxx index c65cec389c..133bb7ae63 100644 --- a/plugins/zynaddsubfx/fltk/src/fl_dnd_win32.cxx +++ b/plugins/zynaddsubfx/fltk/src/fl_dnd_win32.cxx @@ -434,14 +434,14 @@ public: // df->pFiles = sizeof(DROPFILES); // df->pt.x = 0; // df->pt.y = 0; -// df->fNC = false; +// df->fNC = FALSE; // for (int i = 0; i < fl_selection_length[0]; i++) { // if (fl_selection_buffer[0][i] == '\n') { // fl_selection_buffer[0][i] = '\0'; // } // } // -// df->fWide = true; +// df->fWide = TRUE; // l = fl_utf2unicode((unsigned char*)fl_selection_buffer[0], // fl_selection_length[0], (xchar*)(((char*)pMem) // + sizeof(DROPFILES))); diff --git a/plugins/zynaddsubfx/fltk/src/fl_draw.cxx b/plugins/zynaddsubfx/fltk/src/fl_draw.cxx index a501c27ee9..5d8e574755 100644 --- a/plugins/zynaddsubfx/fltk/src/fl_draw.cxx +++ b/plugins/zynaddsubfx/fltk/src/fl_draw.cxx @@ -1,5 +1,5 @@ // -// "$Id: fl_draw.cxx 6735 2009-04-01 22:11:57Z engelsman $" +// "$Id: fl_draw.cxx 6845 2009-08-28 20:14:41Z greg.ercolano $" // // Label drawing code for the Fast Light Tool Kit (FLTK). // @@ -422,6 +422,31 @@ void fl_measure(const char* str, int& w, int& h, int draw_symbols) { h = lines*h; } +/** + This function returns the actual height of the specified \p font + and \p size. Normally the font height should always be 'size', + but with the advent of XFT, there are (currently) complexities + that seem to only be solved by asking the font what its actual + font height is. (See STR#2115) + + This function was originally undocumented in 1.1.x, and was used + only by Fl_Text_Display. We're now documenting it in 1.3.x so that + apps that need precise height info can get it with this function. + + \returns the height of the font in pixels. + + \todo In the future, when the XFT issues are resolved, this function + should simply return the 'size' value. +*/ +int fl_height(int font, int size) { + if ( font == fl_font() && size == fl_size() ) return(fl_height()); + int tf = fl_font(), ts = fl_size(); // save + fl_font(font,size); + int height = fl_height(); + fl_font(tf,ts); // restore + return(height); +} + // -// End of "$Id: fl_draw.cxx 6735 2009-04-01 22:11:57Z engelsman $". +// End of "$Id: fl_draw.cxx 6845 2009-08-28 20:14:41Z greg.ercolano $". // diff --git a/plugins/zynaddsubfx/fltk/src/fl_draw_image_win32.cxx b/plugins/zynaddsubfx/fltk/src/fl_draw_image_win32.cxx index 15dce417cb..d94e8b3b2c 100644 --- a/plugins/zynaddsubfx/fltk/src/fl_draw_image_win32.cxx +++ b/plugins/zynaddsubfx/fltk/src/fl_draw_image_win32.cxx @@ -1,5 +1,5 @@ // -// "$Id: fl_draw_image_win32.cxx 6616 2009-01-01 21:28:26Z matt $" +// "$Id: fl_draw_image_win32.cxx 6844 2009-08-24 19:55:29Z AlbrechtS $" // // WIN32 image drawing code for the Fast Light Tool Kit (FLTK). // @@ -115,8 +115,10 @@ static void innards(const uchar *buf, int X, int Y, int W, int H, int delta, int linedelta, int depth, Fl_Draw_Image_Cb cb, void* userdata) { + char indexed = 0; + #if USE_COLORMAP - char indexed = (fl_palette != 0); + indexed = (fl_palette != 0); #endif if (depth==0) depth = 3; @@ -319,5 +321,5 @@ void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) { } // -// End of "$Id: fl_draw_image_win32.cxx 6616 2009-01-01 21:28:26Z matt $". +// End of "$Id: fl_draw_image_win32.cxx 6844 2009-08-24 19:55:29Z AlbrechtS $". // diff --git a/plugins/zynaddsubfx/fltk/src/fl_font_win32.cxx b/plugins/zynaddsubfx/fltk/src/fl_font_win32.cxx index db7ef6b3c4..fc708a8caf 100644 --- a/plugins/zynaddsubfx/fltk/src/fl_font_win32.cxx +++ b/plugins/zynaddsubfx/fltk/src/fl_font_win32.cxx @@ -44,8 +44,8 @@ Fl_Font_Descriptor::Fl_Font_Descriptor(const char* name, Fl_Fontsize size) { fl_angle_*10, // base-line orientation angle weight, italic, - false, // underline attribute flag - false, // strikeout attribute flag + FALSE, // underline attribute flag + FALSE, // strikeout attribute flag DEFAULT_CHARSET, // character set identifier OUT_DEFAULT_PRECIS, // output precision CLIP_DEFAULT_PRECIS,// clipping precision diff --git a/plugins/zynaddsubfx/fltk/src/fl_font_xft.cxx b/plugins/zynaddsubfx/fltk/src/fl_font_xft.cxx index c101675a39..a7d43fcd4d 100644 --- a/plugins/zynaddsubfx/fltk/src/fl_font_xft.cxx +++ b/plugins/zynaddsubfx/fltk/src/fl_font_xft.cxx @@ -1,5 +1,5 @@ // -// "$Id: fl_font_xft.cxx 6779 2009-04-24 09:28:30Z yuri $" +// "$Id: fl_font_xft.cxx 6862 2009-09-13 10:15:42Z matt $" // // Xft font code for the Fast Light Tool Kit (FLTK). // @@ -635,5 +635,5 @@ void fl_rtl_draw(const char* c, int n, int x, int y) { #endif // -// End of "$Id: fl_font_xft.cxx 6779 2009-04-24 09:28:30Z yuri $" +// End of "$Id: fl_font_xft.cxx 6862 2009-09-13 10:15:42Z matt $" // diff --git a/plugins/zynaddsubfx/fltk/src/fl_open_uri.cxx b/plugins/zynaddsubfx/fltk/src/fl_open_uri.cxx index ea97de6c96..e882e19367 100644 --- a/plugins/zynaddsubfx/fltk/src/fl_open_uri.cxx +++ b/plugins/zynaddsubfx/fltk/src/fl_open_uri.cxx @@ -1,5 +1,5 @@ // -// "$Id: fl_open_uri.cxx 6641 2009-01-20 11:10:29Z fabien $" +// "$Id: fl_open_uri.cxx 6901 2009-09-26 13:56:04Z matt $" // // fl_open_uri() code for FLTK. // @@ -117,9 +117,9 @@ fl_open_uri(const char *uri, char *msg, int msglen) { #elif defined(__APPLE__) char *argv[3]; // Command-line arguments - argv[0] = "open"; - argv[1] = (char *)uri; - argv[2] = 0; + argv[0] = (char*)"open"; + argv[1] = (char*)uri; + argv[2] = (char*)0; if (msg) snprintf(msg, msglen, "open %s", uri); @@ -364,5 +364,5 @@ int main(int argc, char **argv) { // -// End of "$Id: fl_open_uri.cxx 6641 2009-01-20 11:10:29Z fabien $". +// End of "$Id: fl_open_uri.cxx 6901 2009-09-26 13:56:04Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/src/fl_shortcut.cxx b/plugins/zynaddsubfx/fltk/src/fl_shortcut.cxx index f2f400d8a1..56b03241da 100644 --- a/plugins/zynaddsubfx/fltk/src/fl_shortcut.cxx +++ b/plugins/zynaddsubfx/fltk/src/fl_shortcut.cxx @@ -1,5 +1,5 @@ // -// "$Id: fl_shortcut.cxx 6760 2009-04-13 11:32:58Z matt $" +// "$Id: fl_shortcut.cxx 6878 2009-09-17 22:12:24Z matt $" // // Shortcut support routines for the Fast Light Tool Kit (FLTK). // @@ -39,7 +39,7 @@ // It also checks against the first character of Fl::event_text(), // and zero for FL_SHIFT means "don't care". // This allows punctuation shortcuts like "#" to work (rather than -// calling it "shift+3") +// calling it "shift+3" on a US keyboard) #include #include @@ -58,19 +58,12 @@ be confused with Fl_Widget::test_shortcut(). */ -int Fl::test_shortcut(int shortcut) { +int Fl::test_shortcut(Fl_Shortcut shortcut) { if (!shortcut) return 0; - int v = shortcut & 0xffff; -#ifdef __APPLE__ - if (v > 32 && v < 0x7f || v >= 0x80 && v <= 0xff) { -#else - // most X11 use MSWindows Latin-1 if set to Western encoding, so 0x80 to 0xa0 are defined - if (v > 32 && v < 0x7f || v >= 0x80 && v <= 0xff) { -#endif - if (isupper(v)) { - shortcut |= FL_SHIFT; - } + Fl_Char v = shortcut & FL_KEY_MASK; + if (fl_tolower(v)!=v) { + shortcut |= FL_SHIFT; } int shift = Fl::event_state(); @@ -81,17 +74,18 @@ int Fl::test_shortcut(int shortcut) { // these three must always be correct: if (mismatch&(FL_META|FL_ALT|FL_CTRL)) return 0; - int key = shortcut & 0xffff; + Fl_Char key = shortcut & FL_KEY_MASK; // if shift is also correct, check for exactly equal keysyms: if (!(mismatch&(FL_SHIFT)) && key == Fl::event_key()) return 1; - // try matching ascii, ignore shift: - if (key == event_text()[0]) return 1; + // try matching utf8, ignore shift: + Fl_Char firstChar = fl_utf8decode(Fl::event_text(), Fl::event_text()+Fl::event_length(), 0); + if (key==firstChar) return 1; // kludge so that Ctrl+'_' works (as opposed to Ctrl+'^_'): if ((shift&FL_CTRL) && key >= 0x3f && key <= 0x5F - && event_text()[0]==(key^0x40)) return 1; + && firstChar==(key^0x40)) return 1; // firstChar should be within a-z return 0; } @@ -180,7 +174,7 @@ static Keyname table[] = { \param [in] shortcut the integer value containing the ascii charcter or extended keystroke plus modifiers \return a pointer to a static buffer containing human readable text for the shortcut */ -const char* fl_shortcut_label(int shortcut) { +const char* fl_shortcut_label(Fl_Shortcut shortcut) { return fl_shortcut_label(shortcut, 0L); } @@ -190,23 +184,17 @@ const char* fl_shortcut_label(int shortcut) { \param [in] shortcut the integer value containing the ascii charcter or extended keystroke plus modifiers \param [in] eom if this pointer is set, it will receive a pointer to the end of the modifier text \return a pointer to a static buffer containing human readable text for the shortcut - \see fl_shortcut_label(int shortcut) + \see fl_shortcut_label(Fl_Shortcut shortcut) */ -const char* fl_shortcut_label(int shortcut, const char **eom) { +const char* fl_shortcut_label(Fl_Shortcut shortcut, const char **eom) { static char buf[20]; char *p = buf; if (eom) *eom = p; if (!shortcut) {*p = 0; return buf;} // fix upper case shortcuts - int v = shortcut & 0xffff; -#ifdef __APPLE__ - if (v > 32 && v < 0x7f || v >= 0x80 && v <= 0xff) { -#else - if (v > 32 && v < 0x7f || v >= 0xa0 && v <= 0xff) { -#endif - if (isupper(v)) { - shortcut |= FL_SHIFT; - } + Fl_Char v = shortcut & FL_KEY_MASK; + if (fl_tolower(v)!=v) { + shortcut |= FL_SHIFT; } #ifdef __APPLE__ // this column contains utf8 characters - v @@ -221,7 +209,7 @@ const char* fl_shortcut_label(int shortcut, const char **eom) { if (shortcut & FL_CTRL) {strcpy(p,"Ctrl+"); p += 5;} #endif // __APPLE__ if (eom) *eom = p; - int key = shortcut & 0xFFFF; + Fl_Char key = shortcut & FL_KEY_MASK; #if defined(WIN32) || defined(__APPLE__) // if not X if (key >= FL_F && key <= FL_F_Last) { *p++ = 'F'; @@ -234,7 +222,7 @@ const char* fl_shortcut_label(int shortcut, const char **eom) { while (a < b) { int c = (a+b)/2; if (table[c].key == key) { - if (p > buf) { + if (p > buf) { strcpy(p,table[c].name); return buf; } else { @@ -252,7 +240,7 @@ const char* fl_shortcut_label(int shortcut, const char **eom) { *p++ = uchar(key & 127); } else { // if none found, use the keystroke as a match: - *p++ = uchar(toupper(key & 255)); + p += fl_utf8encode(fl_toupper(key), p); } } *p = 0; @@ -262,7 +250,11 @@ const char* fl_shortcut_label(int shortcut, const char **eom) { if (key == FL_Enter || key == '\r') q="Enter"; // don't use Xlib's "Return": else if (key > 32 && key < 0x100) q = 0; else q = XKeysymToString(key); - if (!q) {*p++ = uchar(toupper(key & 255)); *p = 0; return buf;} + if (!q) { + p += fl_utf8encode(fl_toupper(key), p); + *p = 0; + return buf; + } if (p > buf) { strcpy(p,q); return buf; @@ -278,9 +270,9 @@ const char* fl_shortcut_label(int shortcut, const char **eom) { /** Emulation of XForms named shortcuts. */ -int fl_old_shortcut(const char* s) { +Fl_Shortcut fl_old_shortcut(const char* s) { if (!s || !*s) return 0; - int n = 0; + Fl_Shortcut n = 0; if (*s == '#') {n |= FL_ALT; s++;} if (*s == '+') {n |= FL_SHIFT; s++;} if (*s == '^') {n |= FL_CTRL; s++;} @@ -290,14 +282,14 @@ int fl_old_shortcut(const char* s) { // Tests for &x shortcuts in button labels: -char Fl_Widget::label_shortcut(const char *t) { +Fl_Shortcut Fl_Widget::label_shortcut(const char *t) { if (!t) return 0; for (;;) { if (*t==0) return 0; if (*t=='&') { - char s = t[1]; + Fl_Shortcut s = fl_utf8decode(t+1, 0, 0); if (s==0) return 0; - else if (s=='&') t++; + else if (s==(Fl_Char)'&') t++; else return s; } t++; @@ -309,8 +301,9 @@ int Fl_Widget::test_shortcut(const char *t) { // on MSWindows, users expect shortcuts to work only when the Alt modifier is pressed if (Fl::event_state(FL_ALT)==0) return 0; #endif - char c = Fl::event_text()[0]; - if (!c || !t) return 0; + if (!t) return 0; + Fl_Shortcut c = fl_utf8decode(Fl::event_text(), Fl::event_text()+Fl::event_length(), 0); + if (!c) return 0; if (c == label_shortcut(t)) return 1; return 0; @@ -322,5 +315,5 @@ int Fl_Widget::test_shortcut() { } // -// End of "$Id: fl_shortcut.cxx 6760 2009-04-13 11:32:58Z matt $". +// End of "$Id: fl_shortcut.cxx 6878 2009-09-17 22:12:24Z matt $". // diff --git a/plugins/zynaddsubfx/fltk/src/fl_utf.c b/plugins/zynaddsubfx/fltk/src/fl_utf.c index 1362ef7550..cc2059ce54 100644 --- a/plugins/zynaddsubfx/fltk/src/fl_utf.c +++ b/plugins/zynaddsubfx/fltk/src/fl_utf.c @@ -138,11 +138,11 @@ unsigned fl_utf8decode(const char* p, const char* end, int* len) { unsigned char c = *(unsigned char*)p; if (c < 0x80) { - *len = 1; + if (len) *len = 1; return c; #if ERRORS_TO_CP1252 } else if (c < 0xa0) { - *len = 1; + if (len) *len = 1; return cp1252[c-0x80]; #endif } else if (c < 0xc2) { @@ -150,7 +150,7 @@ unsigned fl_utf8decode(const char* p, const char* end, int* len) } if (p+1 >= end || (p[1]&0xc0) != 0x80) goto FAIL; if (c < 0xe0) { - *len = 2; + if (len) *len = 2; return ((p[0] & 0x1f) << 6) + ((p[1] & 0x3f)); @@ -171,7 +171,7 @@ unsigned fl_utf8decode(const char* p, const char* end, int* len) } else if (c < 0xf0) { UTF8_3: if (p+2 >= end || (p[2]&0xc0) != 0x80) goto FAIL; - *len = 3; + if (len) *len = 3; return ((p[0] & 0x0f) << 12) + ((p[1] & 0x3f) << 6) + @@ -182,7 +182,7 @@ unsigned fl_utf8decode(const char* p, const char* end, int* len) } else if (c < 0xf4) { UTF8_4: if (p+3 >= end || (p[2]&0xc0) != 0x80 || (p[3]&0xc0) != 0x80) goto FAIL; - *len = 4; + if (len) *len = 4; #if STRICT_RFC3629 /* RFC 3629 says all codes ending in fffe or ffff are illegal: */ if ((p[1]&0xf)==0xf && @@ -199,7 +199,7 @@ unsigned fl_utf8decode(const char* p, const char* end, int* len) goto UTF8_4; } else { FAIL: - *len = 1; + if (len) *len = 1; #if ERRORS_TO_ISO8859_1 return c; #else diff --git a/plugins/zynaddsubfx/fltk/src/screen_xywh.cxx b/plugins/zynaddsubfx/fltk/src/screen_xywh.cxx index adfaa1dd93..fa7e1e139d 100644 --- a/plugins/zynaddsubfx/fltk/src/screen_xywh.cxx +++ b/plugins/zynaddsubfx/fltk/src/screen_xywh.cxx @@ -58,7 +58,7 @@ static fl_gmi_func fl_gmi = NULL; // used to get a proc pointer for GetMonitorIn static RECT screens[16]; static BOOL CALLBACK screen_cb(HMONITOR mon, HDC, LPRECT r, LPARAM) { - if (num_screens >= 16) return true; + if (num_screens >= 16) return TRUE; MONITORINFO mi; mi.cbSize = sizeof(mi); @@ -69,7 +69,7 @@ static BOOL CALLBACK screen_cb(HMONITOR mon, HDC, LPRECT r, LPARAM) { screens[num_screens] = mi.rcWork; num_screens ++; } - return true; + return TRUE; } static void screen_init() {