From 34f5e4f752b49efe750072b6f09fd451af891513 Mon Sep 17 00:00:00 2001 From: Albrecht Schlosser Date: Sun, 25 Sep 2016 11:23:27 +0000 Subject: [PATCH] X11: More explicit warning when using rotated text w/o Xft. The warning is issued to stderr only once (previously: every time rotated text was used). git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11978 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- FL/fl_draw.H | 13 +++++++++---- src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_x.cxx | 8 +++++++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/FL/fl_draw.H b/FL/fl_draw.H index 05019a311..393f5a88c 100644 --- a/FL/fl_draw.H +++ b/FL/fl_draw.H @@ -3,7 +3,7 @@ // // Portable drawing function header file for the Fast Light Tool Kit (FLTK). // -// Copyright 1998-2011 by Bill Spitzak and others. +// Copyright 1998-2016 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 @@ -624,8 +624,8 @@ FL_EXPORT const char *fl_local_to_mac_roman(const char *t, int n=-1); */ FL_EXPORT void fl_draw(const char* str, int x, int y); /** - Draws a nul-terminated UTF-8 string starting at the given \p x, \p y location and - rotating \p angle degrees counter-clockwise. + Draws a nul-terminated UTF-8 string starting at the given \p x, \p y + location and rotating \p angle degrees counter-clockwise. This version of fl_draw provides direct access to the text drawing function of the underlying OS and is supported by Xft, Win32 and MacOS fltk subsets. @@ -636,8 +636,13 @@ FL_EXPORT void fl_draw(int angle, const char* str, int x, int y); */ inline void fl_draw(const char* str, int n, int x, int y) {fl_graphics_driver->draw(str,n,x,y); } /** - Draws at the given \p x, \p y location a UTF-8 string of length \p n bytes + Draws at the given \p x, \p y location a UTF-8 string of length \p n bytes rotating \p angle degrees counter-clockwise. + + \note When using X11 (Unix, Linux, Cygwin et al.) this needs Xft to work. + Under plain X11 (w/o Xft) rotated text is not supported by FLTK. + A warning will be issued to stderr at runtime (only once) if you + use this method with an angle other than 0. */ inline void fl_draw(int angle, const char* str, int n, int x, int y) {fl_graphics_driver->draw(angle,str,n,x,y); } /** diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_x.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_x.cxx index 60ee51d28..cdefdd262 100644 --- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_x.cxx +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_x.cxx @@ -659,7 +659,13 @@ void Fl_Xlib_Graphics_Driver::draw(const char* c, int n, int x, int y) { } void Fl_Xlib_Graphics_Driver::draw(int angle, const char *str, int n, int x, int y) { - fprintf(stderr,"ROTATING TEXT NOT IMPLEMENTED\n"); + static char warning = 0; // issue warning only once + if (!warning && angle != 0) { + warning = 1; + fprintf(stderr, + "libfltk: rotated text not implemented by X backend.\n" + " You should use the Xft backend. Check USE_XFT in config.h.\n"); + } this->draw(str, n, (int)x, (int)y); }