diff options
| -rwxr-xr-x | bin/fluid | bin | 0 -> 2685848 bytes | |||
| -rw-r--r-- | fluid/app/Snap_Action.cxx | 38 | ||||
| -rw-r--r-- | fluid/app/shell_command.cxx | 25 | ||||
| -rw-r--r-- | fluid/fld_path.h | 144 | ||||
| -rw-r--r-- | fluid/nodes/Widget_Node.cxx | 18 | ||||
| -rw-r--r-- | fluid/nodes/Window_Node.cxx | 20 | ||||
| -rw-r--r-- | fluid/proj/mergeback.cxx | 4 | ||||
| -rw-r--r-- | fluid/tools/filename.cxx | 135 | ||||
| -rw-r--r-- | fluid/tools/filename.h | 22 | ||||
| -rw-r--r-- | fluid/widgets/Code_Editor.cxx | 1 | ||||
| -rw-r--r-- | lib/libfltk.a | bin | 2237456 -> 2237456 bytes | |||
| -rw-r--r-- | lib/libfltk_forms.a | bin | 0 -> 32888 bytes | |||
| -rw-r--r-- | lib/libfltk_gl.a | bin | 0 -> 212448 bytes | |||
| -rw-r--r-- | lib/libfltk_images.a | bin | 0 -> 268016 bytes | |||
| -rw-r--r-- | lib/libfltk_jpeg.a | bin | 0 -> 305416 bytes | |||
| -rw-r--r-- | lib/libfltk_png.a | bin | 0 -> 287384 bytes | |||
| -rw-r--r-- | lib/libfltk_z.a | bin | 0 -> 103976 bytes |
17 files changed, 367 insertions, 40 deletions
diff --git a/bin/fluid b/bin/fluid Binary files differnew file mode 100755 index 000000000..8e20d02c8 --- /dev/null +++ b/bin/fluid diff --git a/fluid/app/Snap_Action.cxx b/fluid/app/Snap_Action.cxx index 0de72919e..08e9bf1e5 100644 --- a/fluid/app/Snap_Action.cxx +++ b/fluid/app/Snap_Action.cxx @@ -30,9 +30,13 @@ #include <math.h> #include <string.h> #include <assert.h> -#undef min -#undef max -#include <algorithm> + +#ifndef MIN +#define MIN(a,b) ((a)<=(b) ? (a) : (b)) +#endif +#ifndef MAX +#define MAX(a,b) ((a)>=(b) ? (a) : (b)) +#endif using namespace fld; using namespace fld::app; @@ -700,14 +704,15 @@ void Layout_List::write(Fl_Preferences &prefs, fld::Tool_Store storage) { */ void Layout_List::read(Fl_Preferences &prefs, fld::Tool_Store storage) { Fl_Preferences prefs_list(prefs, "Layouts"); - std::string cs; + char *cs_ptr = 0; int cp = 0; - prefs_list.get("current_suite", cs, ""); + prefs_list.get("current_suite", cs_ptr, ""); prefs_list.get("current_preset", cp, 0); - for (int i = 0; i < prefs_list.groups(); ++i) { + int i; + for (i = 0; i < prefs_list.groups(); ++i) { Fl_Preferences prefs_suite(prefs_list, Fl_Preferences::Name(i)); - char *new_name = nullptr; - prefs_suite.get("name", new_name, nullptr); + char *new_name = 0; + prefs_suite.get("name", new_name, 0); if (new_name) { int n = add(new_name); list_[n].read(prefs_suite); @@ -715,7 +720,10 @@ void Layout_List::read(Fl_Preferences &prefs, fld::Tool_Store storage) { ::free(new_name); } } - current_suite(cs); + if (cs_ptr) { + current_suite(std::string(cs_ptr)); + ::free(cs_ptr); + } current_preset(cp); update_dialogs(); } @@ -1117,8 +1125,8 @@ void Snap_Action::better_size(int &w, int &h) { x_min = x_inc; y_min = y_inc; } - int ww = std::max(w - x_min, 0); w = (w - ww + x_inc - 1) / x_inc; w = w * x_inc; w = w + ww; - int hh = std::max(h - y_min, 0); h = (h - hh + y_inc - 1) / y_inc; h = h * y_inc; h = h + hh; + int ww = MAX(w - x_min, 0); w = (w - ww + x_inc - 1) / x_inc; w = w * x_inc; w = w + ww; + int hh = MAX(h - y_min, 0); h = (h - hh + y_inc - 1) / y_inc; h = h * y_inc; h = h + hh; } @@ -1511,7 +1519,7 @@ class Fd_Snap_Siblings_Left : public Fd_Snap_Sibling { public: Fd_Snap_Siblings_Left() { type = 1; mask = FD_LEFT|FD_DRAG; } int sibling_check(Snap_Data &d, Fl_Widget *s) override { - return std::min(check_x_(d, d.bx, s->x()+s->w()), + return MIN(check_x_(d, d.bx, s->x()+s->w()), check_x_(d, d.bx, s->x()+s->w()+Fluid.proj.layout->widget_gap_x) ); } void draw(Snap_Data &d) override { @@ -1536,7 +1544,7 @@ class Fd_Snap_Siblings_Right : public Fd_Snap_Sibling { public: Fd_Snap_Siblings_Right() { type = 1; mask = FD_RIGHT|FD_DRAG; } int sibling_check(Snap_Data &d, Fl_Widget *s) override { - return std::min(check_x_(d, d.br, s->x()), + return MIN(check_x_(d, d.br, s->x()), check_x_(d, d.br, s->x()-Fluid.proj.layout->widget_gap_x)); } void draw(Snap_Data &d) override { @@ -1561,7 +1569,7 @@ class Fd_Snap_Siblings_Top : public Fd_Snap_Sibling { public: Fd_Snap_Siblings_Top() { type = 2; mask = FD_TOP|FD_DRAG; } int sibling_check(Snap_Data &d, Fl_Widget *s) override { - return std::min(check_y_(d, d.by, s->y()+s->h()), + return MIN(check_y_(d, d.by, s->y()+s->h()), check_y_(d, d.by, s->y()+s->h()+Fluid.proj.layout->widget_gap_y)); } void draw(Snap_Data &d) override { @@ -1586,7 +1594,7 @@ class Fd_Snap_Siblings_Bottom : public Fd_Snap_Sibling { public: Fd_Snap_Siblings_Bottom() { type = 2; mask = FD_BOTTOM|FD_DRAG; } int sibling_check(Snap_Data &d, Fl_Widget *s) override { - return std::min(check_y_(d, d.bt, s->y()), + return MIN(check_y_(d, d.bt, s->y()), check_y_(d, d.bt, s->y()-Fluid.proj.layout->widget_gap_y)); } void draw(Snap_Data &d) override { diff --git a/fluid/app/shell_command.cxx b/fluid/app/shell_command.cxx index bd53a28af..a4b664fda 100644 --- a/fluid/app/shell_command.cxx +++ b/fluid/app/shell_command.cxx @@ -564,26 +564,31 @@ bool Fd_Shell_Command::is_active() { void Fd_Shell_Command::read(Fl_Preferences &prefs) { int tmp; - prefs.get("name", name, "<unnamed>"); - prefs.get("label", label, "<no label>"); + char *str_ptr = 0; + prefs.get("name", str_ptr, "<unnamed>"); + if (str_ptr) { name = str_ptr; free(str_ptr); str_ptr = 0; } + prefs.get("label", str_ptr, "<no label>"); + if (str_ptr) { label = str_ptr; free(str_ptr); str_ptr = 0; } prefs.get("shortcut", tmp, 0); shortcut = (Fl_Shortcut)tmp; prefs.get("storage", tmp, -1); if (tmp != -1) storage = (fld::Tool_Store)tmp; prefs.get("condition", condition, ALWAYS); - prefs.get("condition_data", condition_data, ""); - prefs.get("command", command, ""); + prefs.get("condition_data", str_ptr, ""); + if (str_ptr) { condition_data = str_ptr; free(str_ptr); str_ptr = 0; } + prefs.get("command", str_ptr, ""); + if (str_ptr) { command = str_ptr; free(str_ptr); str_ptr = 0; } prefs.get("flags", flags, 0); } void Fd_Shell_Command::write(Fl_Preferences &prefs, bool save_location) { - prefs.set("name", name); - prefs.set("label", label); + prefs.set("name", name.c_str()); + prefs.set("label", label.c_str()); if (shortcut != 0) prefs.set("shortcut", (int)shortcut); if (save_location) prefs.set("storage", (int)storage); if (condition != ALWAYS) prefs.set("condition", condition); - if (!condition_data.empty()) prefs.set("condition_data", condition_data); - if (!command.empty()) prefs.set("command", command); + if (!condition_data.empty()) prefs.set("condition_data", condition_data.c_str()); + if (!command.empty()) prefs.set("command", command.c_str()); if (flags != 0) prefs.set("flags", flags); } @@ -695,7 +700,9 @@ void Fd_Shell_Command_List::read(Fl_Preferences &prefs, fld::Tool_Store storage) cmd->name = "Sample Shell Command"; cmd->label = "Sample Shell Command"; cmd->shortcut = FL_ALT+'g'; - Fluid.preferences.get("shell_command", cmd->command, "echo \"Sample Shell Command\""); + char *cmd_str = 0; + Fluid.preferences.get("shell_command", cmd_str, "echo \"Sample Shell Command\""); + if (cmd_str) { cmd->command = cmd_str; free(cmd_str); } Fluid.preferences.get("shell_savefl", save_fl, 1); Fluid.preferences.get("shell_writecode", save_code, 1); Fluid.preferences.get("shell_writemsgs", save_strings, 0); diff --git a/fluid/fld_path.h b/fluid/fld_path.h new file mode 100644 index 000000000..edcfb781f --- /dev/null +++ b/fluid/fld_path.h @@ -0,0 +1,144 @@ +// +// FLUID path helper functions for the Fast Light Tool Kit (FLTK). +// +// Copyright 1998-2025 by Bill Spitzak and others. +// +// This library is free software. Distribution and use rights are outlined in +// the file "COPYING" which should have been included with this file. If this +// file is missing or damaged, see the license at: +// +// https://www.fltk.org/COPYING.php +// + +#ifndef FLD_PATH_H +#define FLD_PATH_H + +#include <FL/filename.H> +#include <FL/fl_utf8.h> +#include <FL/platform.H> +#include <string.h> + +// Path helper functions using static buffers. +// These are NOT thread-safe, but FLUID is single-threaded. +// Each function uses its own buffer to allow nesting calls. + +// Get current working directory - returns pointer to static buffer +inline const char *fld_getcwd(void) { + static char buf[FL_PATH_MAX]; + fl_getcwd(buf, FL_PATH_MAX); + return buf; +} + +// Get absolute path - returns pointer to static buffer +inline const char *fld_filename_absolute(const char *from) { + static char buf[FL_PATH_MAX]; + fl_filename_absolute(buf, FL_PATH_MAX, from); + return buf; +} + +// Get absolute path with base directory - returns pointer to static buffer +inline const char *fld_filename_absolute2(const char *from, const char *cwd) { + static char buf[FL_PATH_MAX]; + fl_filename_absolute(buf, FL_PATH_MAX, from, cwd); + return buf; +} + +// Get relative path - returns pointer to static buffer +inline const char *fld_filename_relative(const char *from) { + static char buf[FL_PATH_MAX]; + fl_filename_relative(buf, FL_PATH_MAX, from); + return buf; +} + +// Get relative path with base directory - returns pointer to static buffer +inline const char *fld_filename_relative2(const char *from, const char *cwd) { + static char buf[FL_PATH_MAX]; + fl_filename_relative(buf, FL_PATH_MAX, from, cwd); + return buf; +} + +// Get path component (directory) - returns pointer to static buffer +// Note: fl_filename_name returns pointer to filename within the string, +// so we need to copy the path portion +inline const char *fld_filename_path(const char *filename) { + static char buf[FL_PATH_MAX]; + if (!filename || !*filename) { + buf[0] = '\0'; + return buf; + } + const char *name = fl_filename_name(filename); + if (name == filename) { + // no path component + buf[0] = '\0'; + return buf; + } + size_t len = name - filename; + if (len >= FL_PATH_MAX) len = FL_PATH_MAX - 1; + memcpy(buf, filename, len); + buf[len] = '\0'; + return buf; +} + +// Set extension - returns pointer to static buffer +inline const char *fld_filename_setext(const char *filename, const char *ext) { + static char buf[FL_PATH_MAX]; + if (!filename) { + buf[0] = '\0'; + return buf; + } + strlcpy(buf, filename, FL_PATH_MAX); + fl_filename_setext(buf, FL_PATH_MAX, ext); + return buf; +} + +// Get filename without extension - returns pointer to static buffer +inline const char *fld_filename_noext(const char *filename) { + return fld_filename_setext(filename, ""); +} + +// Ensure path ends with slash - returns pointer to static buffer +inline const char *fld_end_with_slash(const char *path) { + static char buf[FL_PATH_MAX]; + if (!path || !*path) { + buf[0] = '\0'; + return buf; + } + size_t len = strlen(path); + if (len >= FL_PATH_MAX - 1) len = FL_PATH_MAX - 2; + memcpy(buf, path, len); + if (buf[len - 1] != '/' && buf[len - 1] != '\\') { + buf[len] = '/'; + buf[len + 1] = '\0'; + } else { + buf[len] = '\0'; + } + return buf; +} + +// Concatenate path and filename - returns pointer to static buffer +inline const char *fld_path_concat(const char *path, const char *name) { + static char buf[FL_PATH_MAX]; + if (!path || !*path) { + if (!name) { + buf[0] = '\0'; + } else { + strlcpy(buf, name, FL_PATH_MAX); + } + return buf; + } + strlcpy(buf, path, FL_PATH_MAX); + size_t len = strlen(buf); + if (len > 0 && buf[len - 1] != '/' && buf[len - 1] != '\\') { + if (len < FL_PATH_MAX - 1) { + buf[len] = '/'; + buf[len + 1] = '\0'; + len++; + } + } + if (name && len < FL_PATH_MAX - 1) { + strlcat(buf, name, FL_PATH_MAX); + } + return buf; +} + +#endif // FLD_PATH_H diff --git a/fluid/nodes/Widget_Node.cxx b/fluid/nodes/Widget_Node.cxx index 5b51db75e..b02e53e66 100644 --- a/fluid/nodes/Widget_Node.cxx +++ b/fluid/nodes/Widget_Node.cxx @@ -42,9 +42,13 @@ #include <stdio.h> #include <stdlib.h> -#undef min -#undef max -#include <algorithm> + +#ifndef MIN +#define MIN(a,b) ((a)<=(b) ? (a) : (b)) +#endif +#ifndef MAX +#define MAX(a,b) ((a)>=(b) ? (a) : (b)) +#endif using namespace fld; using namespace fld::proj; @@ -518,10 +522,10 @@ static void calculate_bbox(Node* p) { bbox_r = o->x() + o->w(); bbox_b = o->y() + o->h(); first = 0; } else { - bbox_x = std::min(bbox_x, o->x()); - bbox_y = std::min(bbox_y, o->y()); - bbox_r = std::max(bbox_r, o->x() + o->w()); - bbox_b = std::max(bbox_b, o->y() + o->h()); + bbox_x = MIN(bbox_x, o->x()); + bbox_y = MIN(bbox_y, o->y()); + bbox_r = MAX(bbox_r, o->x() + o->w()); + bbox_b = MAX(bbox_b, o->y() + o->h()); } } } diff --git a/fluid/nodes/Window_Node.cxx b/fluid/nodes/Window_Node.cxx index 0ea3b306f..7e90f8272 100644 --- a/fluid/nodes/Window_Node.cxx +++ b/fluid/nodes/Window_Node.cxx @@ -49,9 +49,13 @@ #include <math.h> #include <stdlib.h> #include <stdio.h> -#undef min -#undef max -#include <algorithm> + +#ifndef MIN +#define MIN(a,b) ((a)<=(b) ? (a) : (b)) +#endif +#ifndef MAX +#define MAX(a,b) ((a)>=(b) ? (a) : (b)) +#endif extern Fl_Window *the_panel; extern void draw_width(int x, int y, int r, Fl_Align a); @@ -337,7 +341,7 @@ void Window_Node::ideal_size(int &w, int &h) { Fl_Window *win = Fluid.main_window; int screen = Fl::screen_num(win->x(), win->y()); Fl::screen_work_area(sx, sy, sw, sh, screen); - w = std::min(w, sw*3/4); h = std::min(h, sh*3/4); + w = MIN(w, sw*3/4); h = MIN(h, sh*3/4); } fld::app::Snap_Action::better_size(w, h); } @@ -534,10 +538,10 @@ void Window_Node::draw_overlaps() { if (p->level==q->level && p->is_true_widget()) { Widget_Node *wp = (Widget_Node*)p; if (wp->o->visible()) { - int px = std::max(x, wp->o->x()); - int py = std::max(y, wp->o->y()); - int pr = std::min(r, wp->o->x() + wp->o->w()); - int pb = std::min(b, wp->o->y() + wp->o->h()); + int px = MAX(x, wp->o->x()); + int py = MAX(y, wp->o->y()); + int pr = MIN(r, wp->o->x() + wp->o->w()); + int pb = MIN(b, wp->o->y() + wp->o->h()); if (pr > px && pb > py) fd_hatch(px, py, pr-px, pb-py); } diff --git a/fluid/proj/mergeback.cxx b/fluid/proj/mergeback.cxx index cef683f3e..34e4e1361 100644 --- a/fluid/proj/mergeback.cxx +++ b/fluid/proj/mergeback.cxx @@ -652,7 +652,9 @@ int mergeback_code_files(Project &proj, Mergeback::Feedback feedback) Fl_Preferences path(build_records, proj_filename.c_str()); int i, n = (int)proj_filename.size(); for (i=0; i<n; i++) if (proj_filename[i]=='\\') proj_filename[i] = '/'; - path.get("code", code_filename, ""); + char *code_fn_ptr = 0; + path.get("code", code_fn_ptr, ""); + if (code_fn_ptr) { code_filename = code_fn_ptr; free(code_fn_ptr); } } #endif if (code_filename.empty()) diff --git a/fluid/tools/filename.cxx b/fluid/tools/filename.cxx index a5d6e22b3..72386f78b 100644 --- a/fluid/tools/filename.cxx +++ b/fluid/tools/filename.cxx @@ -32,7 +32,9 @@ #include "tools/filename.h" #include <FL/filename.H> +#include <FL/fl_utf8.h> #include <FL/Fl.H> +#include "../src/flstring.h" //#include <FL/fl_string_functions.h> //#include "../src/flstring.h" // @@ -123,3 +125,136 @@ std::string fld::fix_separators(const std::string &fn) { } return ret; } + +// ---- FLUID-local wrapper functions for filename operations ---- + +/** + Get current working directory as std::string. + \return current working directory path + */ +std::string fl_getcwd_str() { + char buf[FL_PATH_MAX]; + fl_getcwd(buf, FL_PATH_MAX); + return std::string(buf); +} + +/** + Get path component (directory) from a filename. + \param[in] filename the full path + \return directory portion ending with separator + */ +std::string fl_filename_path_str(const char *filename) { + if (!filename || !*filename) return std::string(); + const char *name = fl_filename_name(filename); + if (name == filename) return std::string(); + return std::string(filename, name - filename); +} + +std::string fl_filename_path_str(const std::string &filename) { + return fl_filename_path_str(filename.c_str()); +} + +/** + Make a filename absolute. + \param[in] from relative or absolute filename + \return absolute filename + */ +std::string fl_filename_absolute_str(const char *from) { + char buf[FL_PATH_MAX]; + fl_filename_absolute(buf, FL_PATH_MAX, from); + return std::string(buf); +} + +std::string fl_filename_absolute_str(const std::string &from) { + return fl_filename_absolute_str(from.c_str()); +} + +/** + Make a filename absolute relative to a given directory. + \param[in] from relative filename + \param[in] cwd current working directory to use as base + \return absolute filename + */ +std::string fl_filename_absolute_str(const char *from, const char *cwd) { + char buf[FL_PATH_MAX]; + fl_filename_absolute(buf, FL_PATH_MAX, from, cwd); + return std::string(buf); +} + +std::string fl_filename_absolute_str(const std::string &from, const std::string &cwd) { + return fl_filename_absolute_str(from.c_str(), cwd.c_str()); +} + +/** + Make a filename relative to current directory. + \param[in] from absolute filename + \return relative filename + */ +std::string fl_filename_relative_str(const char *from) { + char buf[FL_PATH_MAX]; + fl_filename_relative(buf, FL_PATH_MAX, from); + return std::string(buf); +} + +std::string fl_filename_relative_str(const std::string &from) { + return fl_filename_relative_str(from.c_str()); +} + +/** + Get filename portion from a path. + \param[in] filename the full path + \return filename without directory + */ +std::string fl_filename_name_str(const char *filename) { + if (!filename) return std::string(); + return std::string(fl_filename_name(filename)); +} + +std::string fl_filename_name_str(const std::string &filename) { + return fl_filename_name_str(filename.c_str()); +} + +/** + Change the extension of a filename. + \param[in] filename original filename + \param[in] ext new extension (including dot) + \return filename with new extension + */ +std::string fl_filename_setext_str(const char *filename, const char *ext) { + char buf[FL_PATH_MAX]; + if (!filename) return std::string(); + strlcpy(buf, filename, FL_PATH_MAX); + fl_filename_setext(buf, FL_PATH_MAX, ext); + return std::string(buf); +} + +std::string fl_filename_setext_str(const std::string &filename, const std::string &ext) { + return fl_filename_setext_str(filename.c_str(), ext.c_str()); +} + +/** + Expand a filename with shell variables like ~ for home directory. + \param[in] from filename with possible shell expansions + \return expanded filename + */ +std::string fl_filename_expand_str(const std::string &from) { + char buf[FL_PATH_MAX]; + fl_filename_expand(buf, FL_PATH_MAX, from.c_str()); + return std::string(buf); +} + +/** + Get the extension of a filename. + \param[in] filename the filename + \return extension including the dot, or empty string if no extension + */ +std::string fl_filename_ext_str(const char *filename) { + if (!filename) return std::string(); + const char *ext = fl_filename_ext(filename); + if (!ext) return std::string(); + return std::string(ext); +} + +std::string fl_filename_ext_str(const std::string &filename) { + return fl_filename_ext_str(filename.c_str()); +} diff --git a/fluid/tools/filename.h b/fluid/tools/filename.h index 3a4359633..85e4a2844 100644 --- a/fluid/tools/filename.h +++ b/fluid/tools/filename.h @@ -21,10 +21,32 @@ #ifndef FLUID_TOOLS_FILENAME_H #define FLUID_TOOLS_FILENAME_H +#include <FL/filename.H> +#include <FL/fl_utf8.h> #include <string> std::string fl_filename_shortened(const std::string &filename, int maxchars); +// Wrapper functions for filename operations returning std::string +// These are FLUID-local implementations of functions that were removed from core FLTK + +std::string fl_getcwd_str(); +std::string fl_filename_path_str(const char *filename); +std::string fl_filename_path_str(const std::string &filename); +std::string fl_filename_absolute_str(const char *from); +std::string fl_filename_absolute_str(const std::string &from); +std::string fl_filename_absolute_str(const char *from, const char *cwd); +std::string fl_filename_absolute_str(const std::string &from, const std::string &cwd); +std::string fl_filename_relative_str(const char *from); +std::string fl_filename_relative_str(const std::string &from); +std::string fl_filename_name_str(const char *filename); +std::string fl_filename_name_str(const std::string &filename); +std::string fl_filename_setext_str(const char *filename, const char *ext); +std::string fl_filename_setext_str(const std::string &filename, const std::string &ext); +std::string fl_filename_expand_str(const std::string &from); +std::string fl_filename_ext_str(const char *filename); +std::string fl_filename_ext_str(const std::string &filename); + namespace fld { extern std::string end_with_slash(const std::string &fn); diff --git a/fluid/widgets/Code_Editor.cxx b/fluid/widgets/Code_Editor.cxx index 216ffab8f..aa7c28751 100644 --- a/fluid/widgets/Code_Editor.cxx +++ b/fluid/widgets/Code_Editor.cxx @@ -21,6 +21,7 @@ // #include <stdlib.h> +#include <ctype.h> #include "widgets/Code_Editor.h" using namespace fld; diff --git a/lib/libfltk.a b/lib/libfltk.a Binary files differindex 856ab0207..914c19a37 100644 --- a/lib/libfltk.a +++ b/lib/libfltk.a diff --git a/lib/libfltk_forms.a b/lib/libfltk_forms.a Binary files differnew file mode 100644 index 000000000..9862d482a --- /dev/null +++ b/lib/libfltk_forms.a diff --git a/lib/libfltk_gl.a b/lib/libfltk_gl.a Binary files differnew file mode 100644 index 000000000..c1982e5a8 --- /dev/null +++ b/lib/libfltk_gl.a diff --git a/lib/libfltk_images.a b/lib/libfltk_images.a Binary files differnew file mode 100644 index 000000000..34645bf0b --- /dev/null +++ b/lib/libfltk_images.a diff --git a/lib/libfltk_jpeg.a b/lib/libfltk_jpeg.a Binary files differnew file mode 100644 index 000000000..a826800cd --- /dev/null +++ b/lib/libfltk_jpeg.a diff --git a/lib/libfltk_png.a b/lib/libfltk_png.a Binary files differnew file mode 100644 index 000000000..924b33d25 --- /dev/null +++ b/lib/libfltk_png.a diff --git a/lib/libfltk_z.a b/lib/libfltk_z.a Binary files differnew file mode 100644 index 000000000..c47a475a7 --- /dev/null +++ b/lib/libfltk_z.a |
