Fltk backward compatibility

* Code changes to maintain backward compatibility to fltk versions
    prior to 1.3.2
  * revised fltk.m4 to test for MAJOR, MINOR & PATCH levels
pull/1/head
David Freese 2013-05-20 17:45:12 -05:00
rodzic b168ea7e5b
commit fe1e10a481
10 zmienionych plików z 268 dodań i 29 usunięć

Wyświetl plik

@ -18,7 +18,7 @@ AC_DEFUN([AC_FLDIGI_FLTK], [
])
fi
HAVE_FLTK_API_VERSION=no
FLTK_API_VERSION="`$FLTK_CONFIG --api-version`"
FLTK_API_VERSION="`$FLTK_CONFIG --version`"
if test $? -ne 0; then
AC_MSG_ERROR([$FLTK_CONFIG failed])
fi
@ -26,7 +26,13 @@ AC_DEFUN([AC_FLDIGI_FLTK], [
HAVE_FLTK_API_VERSION=yes
fi
FLDIGI_FLTK_API_MAJOR=${FLTK_API_VERSION%%.*}
FLDIGI_FLTK_API_MINOR=${FLTK_API_VERSION#*.}; FLDIGI_FLTK_API_MINOR=${FLDIGI_FLTK_API_MINOR%%.*}
FLDIGI_FLTK_API_MINOR=${FLTK_API_VERSION#*.};
FLDIGI_FLTK_API_MINOR=${FLDIGI_FLTK_API_MINOR%%.*}
FLDIGI_FLTK_API_PATCH=${FLTK_API_VERSION#*.};
FLDIGI_FLTK_API_PATCH=${FLDIGI_FLTK_API_PATCH#*.};
if test "${HAVE_FLTK_API_VERSION}" = "no"; then
AC_MSG_ERROR([
*** The version of FLTK found on your system provides API version $FLTK_API_VERSION.
@ -50,6 +56,7 @@ AC_DEFUN([AC_FLDIGI_FLTK], [
AC_DEFINE_UNQUOTED([FLTK_BUILD_VERSION], ["`$FLTK_CONFIG --version`"], [FLTK version])
AC_DEFINE_UNQUOTED([FLDIGI_FLTK_API_MAJOR], [$FLDIGI_FLTK_API_MAJOR], [FLTK API major version])
AC_DEFINE_UNQUOTED([FLDIGI_FLTK_API_MINOR], [$FLDIGI_FLTK_API_MINOR], [FLTK API minor version])
AC_DEFINE_UNQUOTED([FLDIGI_FLTK_API_PATCH], [$FLDIGI_FLTK_API_PATCH], [FLTK API patch])
AC_ARG_VAR([FLUID], [Fast Light User-Interface Designer])
AC_CHECK_PROG([FLUID], [fluid], [fluid])

Wyświetl plik

@ -521,6 +521,8 @@ fldigi_SOURCES += \
widgets/picture.cxx \
widgets/progress.cxx \
widgets/psk_browser.cxx \
widgets/missing_strings.c \
widgets/missing_strings.h \
wwv/analysis.cxx \
wwv/wwv.cxx \
logbook/xmlrpc_log.cxx \

Wyświetl plik

@ -72,11 +72,11 @@ void initViewer()
mainViewer->usb = usb;
mainViewer->rfc = rfc;
mainViewer->setfont(progdefaults.ViewerFontnbr, progdefaults.ViewerFontsize);
mainViewer->HighLight_1(progdefaults.bwsrHiLight1);
mainViewer->HighLight_2(progdefaults.bwsrHiLight2);
mainViewer->SelectColor(progdefaults.bwsrSelect);
mainViewer->Background1(progdefaults.bwsrBackgnd1);
mainViewer->Background2(progdefaults.bwsrBackgnd2);
mainViewer->HighLight_1((Fl_Color)progdefaults.bwsrHiLight1);
mainViewer->HighLight_2((Fl_Color)progdefaults.bwsrHiLight2);
mainViewer->SelectColor((Fl_Color)progdefaults.bwsrSelect);
mainViewer->Background1((Fl_Color)progdefaults.bwsrBackgnd1);
mainViewer->Background2((Fl_Color)progdefaults.bwsrBackgnd2);
mainViewer->makecolors();
mainViewer->clear();
if (active_modem->get_mode() == MODE_RTTY) {
@ -91,11 +91,11 @@ void initViewer()
brwsViewer->usb = usb;
brwsViewer->rfc = rfc;
brwsViewer->setfont(progdefaults.ViewerFontnbr, progdefaults.ViewerFontsize);
brwsViewer->HighLight_1(progdefaults.bwsrHiLight1);
brwsViewer->HighLight_2(progdefaults.bwsrHiLight2);
brwsViewer->SelectColor(progdefaults.bwsrSelect);
brwsViewer->Background1(progdefaults.bwsrBackgnd1);
brwsViewer->Background2(progdefaults.bwsrBackgnd2);
brwsViewer->HighLight_1((Fl_Color)progdefaults.bwsrHiLight1);
brwsViewer->HighLight_2((Fl_Color)progdefaults.bwsrHiLight2);
brwsViewer->SelectColor((Fl_Color)progdefaults.bwsrSelect);
brwsViewer->Background1((Fl_Color)progdefaults.bwsrBackgnd1);
brwsViewer->Background2((Fl_Color)progdefaults.bwsrBackgnd2);
brwsViewer->makecolors();
brwsViewer->clear();
dlgViewer->size(dlgViewer->w(), dlgViewer->h() - brwsViewer->h() +
@ -158,11 +158,11 @@ void viewer_redraw()
if (mainViewer) {
mainViewer->usb = usb;
mainViewer->rfc = rfc;
mainViewer->HighLight_1(progdefaults.bwsrHiLight1);
mainViewer->HighLight_2(progdefaults.bwsrHiLight2);
mainViewer->SelectColor(progdefaults.bwsrSelect);
mainViewer->Background1(progdefaults.bwsrBackgnd1);
mainViewer->Background2(progdefaults.bwsrBackgnd2);
mainViewer->HighLight_1((Fl_Color)progdefaults.bwsrHiLight1);
mainViewer->HighLight_2((Fl_Color)progdefaults.bwsrHiLight2);
mainViewer->SelectColor((Fl_Color)progdefaults.bwsrSelect);
mainViewer->Background1((Fl_Color)progdefaults.bwsrBackgnd1);
mainViewer->Background2((Fl_Color)progdefaults.bwsrBackgnd2);
mainViewer->makecolors();
mainViewer->resize(mainViewer->x(), mainViewer->y(), mainViewer->w(), mainViewer->h());
}
@ -171,11 +171,11 @@ void viewer_redraw()
brwsViewer->rfc = rfc;
brwsViewer->resize(
brwsViewer->x(), brwsViewer->y(), brwsViewer->w(), brwsViewer->h());
brwsViewer->HighLight_1(progdefaults.bwsrHiLight1);
brwsViewer->HighLight_2(progdefaults.bwsrHiLight2);
brwsViewer->SelectColor(progdefaults.bwsrSelect);
brwsViewer->Background1(progdefaults.bwsrBackgnd1);
brwsViewer->Background2(progdefaults.bwsrBackgnd2);
brwsViewer->HighLight_1((Fl_Color)progdefaults.bwsrHiLight1);
brwsViewer->HighLight_2((Fl_Color)progdefaults.bwsrHiLight2);
brwsViewer->SelectColor((Fl_Color)progdefaults.bwsrSelect);
brwsViewer->Background1((Fl_Color)progdefaults.bwsrBackgnd1);
brwsViewer->Background2((Fl_Color)progdefaults.bwsrBackgnd2);
brwsViewer->makecolors();
dlgViewer->redraw();
}

Wyświetl plik

@ -236,7 +236,7 @@ static void cb_bwsrSldrSelColor(Fl_Button* o, void*) {
Fl_Button *bwsrHiLite_1_color=(Fl_Button *)0;
static void cb_bwsrHiLite_1_color(Fl_Button*, void*) {
progdefaults.bwsrHiLight1 = fl_show_colormap(progdefaults.bwsrHiLight1);
progdefaults.bwsrHiLight1 = fl_show_colormap((Fl_Color)progdefaults.bwsrHiLight1);
bwsrHiLite_1_color->color(progdefaults.bwsrHiLight1);
viewer_redraw();
progdefaults.changed = true;
@ -245,7 +245,7 @@ progdefaults.changed = true;
Fl_Button *bwsrHiLite_2_color=(Fl_Button *)0;
static void cb_bwsrHiLite_2_color(Fl_Button*, void*) {
progdefaults.bwsrHiLight2 = fl_show_colormap(progdefaults.bwsrHiLight2);
progdefaults.bwsrHiLight2 = fl_show_colormap((Fl_Color)progdefaults.bwsrHiLight2);
bwsrHiLite_2_color->color(progdefaults.bwsrHiLight2);
viewer_redraw();
progdefaults.changed = true;
@ -254,7 +254,7 @@ progdefaults.changed = true;
Fl_Button *bwsrHiLite_even_lines=(Fl_Button *)0;
static void cb_bwsrHiLite_even_lines(Fl_Button*, void*) {
progdefaults.bwsrBackgnd2 = fl_show_colormap(progdefaults.bwsrBackgnd2);
progdefaults.bwsrBackgnd2 = fl_show_colormap((Fl_Color)progdefaults.bwsrBackgnd2);
bwsrHiLite_even_lines->color(progdefaults.bwsrBackgnd2);
viewer_redraw();
progdefaults.changed = true;;
@ -263,7 +263,7 @@ progdefaults.changed = true;;
Fl_Button *bwsrHiLite_odd_lines=(Fl_Button *)0;
static void cb_bwsrHiLite_odd_lines(Fl_Button*, void*) {
progdefaults.bwsrBackgnd1 = fl_show_colormap(progdefaults.bwsrBackgnd1);
progdefaults.bwsrBackgnd1 = fl_show_colormap((Fl_Color)progdefaults.bwsrBackgnd1);
bwsrHiLite_odd_lines->color(progdefaults.bwsrBackgnd1);
viewer_redraw();
progdefaults.changed = true;
@ -272,7 +272,7 @@ progdefaults.changed = true;
Fl_Button *bwsrHiLite_select=(Fl_Button *)0;
static void cb_bwsrHiLite_select(Fl_Button*, void*) {
progdefaults.bwsrSelect = fl_show_colormap(progdefaults.bwsrSelect);
progdefaults.bwsrSelect = fl_show_colormap((Fl_Color)progdefaults.bwsrSelect);
bwsrHiLite_select->color(progdefaults.bwsrSelect);
viewer_redraw();
progdefaults.changed = true;

Wyświetl plik

@ -31,6 +31,7 @@
#include <FL/Fl.H>
#include "Fl_Text_Buffer_mod.H"
#include "missing_strings.h"
#define PREFERRED_GAP_SIZE 1024
/* Initial size for the buffer gap (empty space

Wyświetl plik

@ -36,6 +36,8 @@
#include "Fl_Text_Display_mod.H"
#include <FL/Fl_Window.H>
#include "missing_strings.h"
#undef min
#undef max

Wyświetl plik

@ -35,6 +35,7 @@
#include "Fl_Text_Editor_mod.H"
#include <FL/fl_ask.H>
#include "missing_strings.h"
Fl_Text_Editor_mod::Fl_Text_Editor_mod(int X, int Y, int W, int H, const char* l)
: Fl_Text_Display_mod(X, Y, W, H, l) {

Wyświetl plik

@ -0,0 +1,106 @@
/*
* "$Id: flstring.c 4288 2005-04-16 00:13:17Z mike $"
*
* missing BSD string functions for the Fast Light Tool Kit (FLTK).
* version < 1.3.2
*
* Copyright 1998-2005 by Bill Spitzak and others.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems on the following page:
*
* http://www.fltk.org/str.php
*/
#include "missing_strings.h"
// versions of FLTK < 1.3.2 do not contain fl_string
#if (FLDIGI_FLTK_API_MAJOR == 1 && FLDIGI_FLTK_API_MINOR < 3 ) || \
(FLDIGI_FLTK_API_MAJOR == 1 && FLDIGI_FLTK_API_MINOR == 3 && FLDIGI_FLTK_API_PATCH < 1)
/*
* 'fl_strlcat()' - Safely concatenate two strings.
*/
size_t /* O - Length of string */
fl_strlcat(char *dst, /* O - Destination string */
const char *src, /* I - Source string */
size_t size) { /* I - Size of destination string buffer */
size_t srclen; /* Length of source string */
size_t dstlen; /* Length of destination string */
/*
* Figure out how much room is left...
*/
dstlen = strlen(dst);
size -= dstlen + 1;
if (!size) return (dstlen); /* No room, return immediately... */
/*
* Figure out how much room is needed...
*/
srclen = strlen(src);
/*
* Copy the appropriate amount...
*/
if (srclen > size) srclen = size;
memcpy(dst + dstlen, src, srclen);
dst[dstlen + srclen] = '\0';
return (dstlen + srclen);
}
/*
* 'fl_strlcpy()' - Safely copy two strings.
*/
size_t /* O - Length of string */
fl_strlcpy(char *dst, /* O - Destination string */
const char *src, /* I - Source string */
size_t size) { /* I - Size of destination string buffer */
size_t srclen; /* Length of source string */
/*
* Figure out how much room is needed...
*/
size --;
srclen = strlen(src);
/*
* Copy the appropriate amount...
*/
if (srclen > size) srclen = size;
memcpy(dst, src, srclen);
dst[srclen] = '\0';
return (srclen);
}
#endif

Wyświetl plik

@ -0,0 +1,120 @@
/*
* "$Id: flstring.h 4660 2005-11-27 14:45:48Z mike $"
*
* Common string header file for the Fast Light Tool Kit (FLTK).
* versions < 1.3.x
*
* Copyright 1998-2005 by Bill Spitzak and others.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
* Please report all bugs and problems on the following page:
*
* http://www.fltk.org/str.php
*/
#ifndef flstring_h
# define flstring_h
#include <config.h>
// versions of FLTK < 1.3.2 do not contain fl_string
#if (FLDIGI_FLTK_API_MAJOR == 1 && FLDIGI_FLTK_API_MINOR < 3 ) || \
(FLDIGI_FLTK_API_MAJOR == 1 && FLDIGI_FLTK_API_MINOR == 3 && FLDIGI_FLTK_API_PATCH < 1)
# include <FL/Fl_Export.H>
# include <config.h>
# include <stdio.h>
# include <stdarg.h>
# include <string.h>
# ifdef HAVE_STRINGS_H
# include <strings.h>
# endif /* HAVE_STRINGS_H */
# include <ctype.h>
/*
* Apparently Unixware defines "index" to strchr (!) rather than
* providing a proper entry point or not providing the (obsolete)
* BSD function. Make sure index is not defined...
*/
# ifdef index
# undef index
# endif /* index */
# if defined(WIN32) && !defined(__CYGWIN__)
# define strcasecmp(s,t) _stricmp((s), (t))
# define strncasecmp(s,t,n) _strnicmp((s), (t), (n))
// Visual C++ 2005 incorrectly displays a warning about the use of POSIX APIs
// on Windows, which is supposed to be POSIX compliant... Some of these functions
// are also defined in ISO C99...
# define strdup _strdup
# define unlink _unlink
# elif defined(__EMX__)
# define strcasecmp(s,t) stricmp((s), (t))
# define strncasecmp(s,t,n) strnicmp((s), (t), (n))
# endif /* WIN32 */
# ifdef __cplusplus
extern "C" {
# endif /* __cplusplus */
/*
* MetroWerks' CodeWarrior put thes "non-standard" functions in
* <extras.h> which unfortunatly does not play well otherwise
* when included - to be resolved...
*/
# if defined(__APPLE__) && defined(__MWERKS__) && defined(_MSL_USING_MW_C_HEADERS)
int strcasecmp(const char*,const char*);
int strncasecmp(const char*,const char*,int);
char *strdup(const char*);
# endif
FL_EXPORT extern int fl_snprintf(char *, size_t, const char *, ...);
# if !HAVE_SNPRINTF
# define snprintf fl_snprintf
# endif /* !HAVE_SNPRINTF */
FL_EXPORT extern int fl_vsnprintf(char *, size_t, const char *, va_list ap);
# if !HAVE_VSNPRINTF
# define vsnprintf fl_vsnprintf
# endif /* !HAVE_VSNPRINTF */
/*
* strlcpy() and strlcat() are some really useful BSD string functions
* that work the way strncpy() and strncat() *should* have worked.
*/
FL_EXPORT extern size_t fl_strlcat(char *, const char *, size_t);
# if !HAVE_STRLCAT
# define strlcat fl_strlcat
# endif /* !HAVE_STRLCAT */
FL_EXPORT extern size_t fl_strlcpy(char *, const char *, size_t);
# if !HAVE_STRLCPY
# define strlcpy fl_strlcpy
# endif /* !HAVE_STRLCPY */
# ifdef __cplusplus
}
# endif /* __cplusplus */
#endif /* < FLTK < 1.3.0 */
#endif /* !flstring_h */

Wyświetl plik

@ -69,8 +69,8 @@ pskBrowser::pskBrowser(int x, int y, int w, int h, const char *l)
HiLite_1 = FL_RED;
HiLite_2 = FL_GREEN;
BkSelect = FL_BLUE;
Backgnd1 = 55;
Backgnd2 = 53;
Backgnd1 = (Fl_Color)55;
Backgnd2 = (Fl_Color)53;
makecolors();
cdistiller = reinterpret_cast<CharsetDistiller*>(operator new(MAXCHANNELS*sizeof(CharsetDistiller)));