aboutsummaryrefslogtreecommitdiff
path: root/doc/fltk-problems.doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/fltk-problems.doc')
-rw-r--r--doc/fltk-problems.doc219
1 files changed, 219 insertions, 0 deletions
diff --git a/doc/fltk-problems.doc b/doc/fltk-problems.doc
new file mode 100644
index 00000000..3e8c401f
--- /dev/null
+++ b/doc/fltk-problems.doc
@@ -0,0 +1,219 @@
+/** \page fltk-problems Problems with FLTK
+
+<h2>dw::fltk::FltkViewport</h2>
+
+Current problems:
+
+<ul>
+<li> dw::fltk::FltkViewport::draw should only draw the region, for which e.g.
+ an expose event was received.
+
+<li> dw::fltk::FltkViewport::queueDraw will collect data, which has to be
+ redrawn. Currently, it calls redraw (DAMAGE_EXPOSE), can this be changed,
+ so that dw::fltk::FltkViewport::draw will distinguish between the two
+ cases?
+
+<li> For Scrolling, something similar applies, only parts of the viewport
+ have to be redrawn.
+
+<li> Also for Scrolling, it is necessary to copy parts of the window.
+
+<li> How should dw::fltk::FltkViewport::cancelQueueDraw be implemented?
+
+<li> If the value of a scrollbar is changed by the program, not the user,
+ the callback seems not to be called. Can this be assured?
+
+<li> The same for dw::fltk::FltkViewport::layout?
+
+<li> Also, the problems with the widgets seems to work. Also sure?
+
+<li> When drawing, clipping of 32 bit values seems to work.
+
+<li> Who is responsable for clearing before drawing?
+
+<li> The embedded buttons are not redrawn, when pressing the mouse button
+ on them.
+
+<li> The item group within a selection widget (menu) should not be selectable.
+</ul>
+
+
+<h2>dw::fltk::FltkPlatform</h2>
+
+<ul>
+<li> There is the problem, that fltk::font always returns a font, the
+ required one, or a replacements. The latter is not wanted in all
+ cases, e.g. when several fonts are tested. Perhaps, this could be
+ solved by searching in the font list.
+
+<li> In dw::fltk::FltkFont::FltkFont, fltk::measure does not seem to work
+ for the calculation of dw::core::style::Font::xHeight.
+
+<li> Distinction between italics and oblique would be nice
+ (dw::fltk::FltkFont::FltkFont).
+</ul>
+
+
+<h2>dw::fltk::ui::FltkCheckButtonResource</h2>
+
+Groups of fltk::RadioButton must be added to one fltk::Group, which is
+not possible in this context. There are two alternatives:
+
+<ol>
+<li>there is a more flexible way to group radio buttons, or
+<li>radio buttons are not grouped, instead, grouping (especially
+ unchecking other buttons) is done by the application.
+</ol>
+
+(This is mostly solved.)
+
+<h2>dw::fltk::FltkImgbuf</h2>
+
+Alpha transparency should be best abstracted by FLTK itself. If not,
+perhaps different implementations for different window systems could
+be used. Then, it is for X necessary to use GCs with clipping masks.
+
+
+<h2>Lower Priority</h2>
+
+There needs to be an XEmbed implementation.
+
+
+<h2>dw::fltk::ui::ComplexButton</h2>
+
+Unfortunately, FLTK does not provide a button with Group as parent, so
+that children may be added to the button. dw::fltk::ui::ComplexButton does
+exactly this, and is, in an ugly way, a modified copy of the FLTK
+button.
+
+It would be nice, if this is merged with the standard FLTK
+button. Furthermore, setting the type is strange.
+
+If the files do not compile, it may be useful to create a new one from
+the FLTK source:
+
+<ol>
+<li> Copy fltk/Button.h from FLTK to dw/fltkcomplexbutton.hh and
+ src/Button.cxx to dw/fltkcomplexbutton.cc.
+
+<li> In both files, rename "Button" to "ComplexButton". Automatic replacing
+ should work.
+
+<li> Apply the changes below.
+</ol>
+
+The following changes should be applied manually.
+
+<h3>Changes in fltkcomplexbutton.hh</h3>
+
+First of all, the #define's for avoiding multiple includes:
+
+\code
+-#ifndef fltk_ComplexButton_h // fltk_Button_h formerly
+-#define fltk_ComplexButton_h
++#ifndef __FLTK_COMPLEX_BUTTON_HH__
++#define __FLTK_COMPLEX_BUTTON_HH__
+\endcode
+
+at the beginning and
+
+\code
+-#endif
++#endif // __FLTK_COMPLEX_BUTTON_HH__
+\endcode
+
+at the end. Then, the namespace is changed:
+
+\code
+-namespace fltk {
++namespace dw {
++namespace fltk {
++namespace ui {
+\endcode
+
+at the beginning and
+
+\code
+-}
++} // namespace ui
++} // namespace fltk
++} // namespace dw
+\endcode
+
+at the end. Most important, the base class is changed:
+
+\code
+-#ifndef fltk_Widget_h
+-#include "Widget.h"
+-#endif
++#include <fltk/Group.h>
+\endcode
+
+and
+
+\code
+-class FL_API ComplexButton : public Widget {
++class ComplexButton: public ::fltk::Group
++{
+\endcode
+
+Finally, for dw::fltk::ui::ComplexButton::default_style, there is a
+namespace conflict:
+
+\code
+- static NamedStyle* default_style;
++ static ::fltk::NamedStyle* default_style;
+\endcode
+
+<h3>Changes in fltkcomplexbutton.cc</h3>
+
+First, #include's:
+
+\code
+
+ #include <fltk/events.h>
+ #include <fltk/damage.h>
+-#include <fltk/ComplexButton.h> // <fltk/Button.h> formerly
+ #include <fltk/Group.h>
+ #include <fltk/Box.h>
+ #include <stdlib.h>
++
++#include "fltkcomplexbutton.hh"
+\endcode
+
+Second, namespaces:
+
+\code
++using namespace dw::fltk::ui;
+ using namespace fltk;
+\endcode
+
+Since the base class is now Group, the constructor must be changed:
+
+\code
+-ComplexButton::ComplexButton(int x,int y,int w,int h, const char *l) : Widget(x,y,w,h,l) {
++ComplexButton::ComplexButton(int x,int y,int w,int h, const char *l) :
++ Group(x,y,w,h,l)
++{
+\endcode
+
+At the end of the constructor,
+
+\code
++ type (NORMAL);
+ }
+\endcode
+
+must be added (I've forgotten, what this is for).
+
+Finally, the button must draw its children (end of
+dw::fltk::ui::ComplexButton::draw()):
+
+\code
++
++ for (int i = 0; i < children (); i++)
++ draw_child (*child (i));
+ }
+\endcode
+
+*/ \ No newline at end of file