diff options
Diffstat (limited to 'vncviewer/fltk')
-rw-r--r-- | vncviewer/fltk/layout.h | 82 | ||||
-rw-r--r-- | vncviewer/fltk/util.h | 110 |
2 files changed, 110 insertions, 82 deletions
diff --git a/vncviewer/fltk/layout.h b/vncviewer/fltk/layout.h index 8153f9b1..ae716e1a 100644 --- a/vncviewer/fltk/layout.h +++ b/vncviewer/fltk/layout.h @@ -25,7 +25,6 @@ #define __FLTK_LAYOUT_H__ #include <FL/fl_draw.H> -#include <FL/Fl_Menu_.H> /* Calculates the width of a string as printed by FLTK (pixels) */ static inline int gui_str_len(const char *str) @@ -39,87 +38,6 @@ static inline int gui_str_len(const char *str) return (int)(len + 0.5f); } -/* Escapes all @ in text as those have special meaning in labels */ -static inline size_t fltk_escape(const char *in, char *out, size_t maxlen) -{ - size_t len; - - len = 0; - - while (*in != '\0') { - if (*in == '@') { - if (maxlen >= 3) { - *out++ = '@'; - *out++ = '@'; - maxlen -= 2; - } - - len += 2; - } else { - if (maxlen >= 2) { - *out++ = *in; - maxlen--; - } - - len += 1; - } - - in++; - } - - if (maxlen) - *out = '\0'; - - return len; -} - -/* Filter out unsafe characters for menu entries */ -static inline size_t fltk_menu_escape(const char *in, char *out, size_t maxlen) -{ - size_t len; - - len = 0; - - while (*in != '\0') { - if (*in == '/') { - if (maxlen >= 3) { - *out++ = '\\'; - *out++ = '/'; - maxlen -= 2; - } - - len += 2; - } else { - if (maxlen >= 2) { - *out++ = *in; - maxlen--; - } - - len += 1; - } - - in++; - } - - if (maxlen) - *out = '\0'; - - return len; -} - -/* Helper to add menu entries safely */ -static inline void fltk_menu_add(Fl_Menu_ *menu, const char *text, - int shortcut, Fl_Callback *cb, - void *data = 0, int flags = 0) -{ - char buffer[1024]; - - if (fltk_menu_escape(text, buffer, sizeof(buffer)) >= sizeof(buffer)) - return; - - menu->add(buffer, shortcut, cb, data, flags); -} - /**** MARGINS ****/ #define OUTER_MARGIN 10 diff --git a/vncviewer/fltk/util.h b/vncviewer/fltk/util.h new file mode 100644 index 00000000..87765396 --- /dev/null +++ b/vncviewer/fltk/util.h @@ -0,0 +1,110 @@ +/* Copyright 2011 Pierre Ossman <ossman@cendio.se> for Cendio AB + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#ifndef __FLTK_UTIL_H__ +#define __FLTK_UTIL_H__ + +#include <FL/Fl_Menu_.H> + +/* Escapes all @ in text as those have special meaning in labels */ +static inline size_t fltk_escape(const char *in, char *out, size_t maxlen) +{ + size_t len; + + len = 0; + + while (*in != '\0') { + if (*in == '@') { + if (maxlen >= 3) { + *out++ = '@'; + *out++ = '@'; + maxlen -= 2; + } + + len += 2; + } else { + if (maxlen >= 2) { + *out++ = *in; + maxlen--; + } + + len += 1; + } + + in++; + } + + if (maxlen) + *out = '\0'; + + return len; +} + +/* Filter out unsafe characters for menu entries */ +static inline size_t fltk_menu_escape(const char *in, char *out, size_t maxlen) +{ + size_t len; + + len = 0; + + while (*in != '\0') { + if (*in == '/') { + if (maxlen >= 3) { + *out++ = '\\'; + *out++ = '/'; + maxlen -= 2; + } + + len += 2; + } else { + if (maxlen >= 2) { + *out++ = *in; + maxlen--; + } + + len += 1; + } + + in++; + } + + if (maxlen) + *out = '\0'; + + return len; +} + +/* Helper to add menu entries safely */ +static inline void fltk_menu_add(Fl_Menu_ *menu, const char *text, + int shortcut, Fl_Callback *cb, + void *data = 0, int flags = 0) +{ + char buffer[1024]; + + if (fltk_menu_escape(text, buffer, sizeof(buffer)) >= sizeof(buffer)) + return; + + menu->add(buffer, shortcut, cb, data, flags); +} + +#endif |