view dw/fltkplatform.hh @ 2030:382160be8c2f

cookies comments I was going to say something in the comments about simplicity and not implementing every little bit of the rfc when we don't know of cookies that make it necessary, but then I suppose that's all implied with dillo.
author corvid <>
date Tue, 17 May 2011 22:48:50 +0000
parents d80adb974879
children 5660c1916c58
line wrap: on
line source

#   error Do not include this file directly, use "fltkcore.hh" instead.

namespace dw {

 * \brief This namespace contains FLTK implementations of Dw interfaces.
namespace fltk {

class FltkFont: public core::style::Font
   class FontFamily: public lout::object::Object {
         Fl_Font font[4];
         FontFamily ();
         void set (Fl_Font, int attrs);
         Fl_Font get (int attrs);

   static FontFamily standardFontFamily;

   static lout::container::typed::HashTable <lout::object::ConstString,
                                             FontFamily> *systemFonts;
   static lout::container::typed::HashTable <dw::core::style::FontAttrs,
                                       FltkFont> *fontsTable;

   FltkFont (core::style::FontAttrs *attrs);
   ~FltkFont ();

   Fl_Font font;

   static FltkFont *create (core::style::FontAttrs *attrs);
   static bool fontExists (const char *name);

class FltkColor: public core::style::Color
   static lout::container::typed::HashTable <dw::core::style::ColorAttrs,
                                       FltkColor> *colorsTable;

   FltkColor (int color);
   ~FltkColor ();

   int colors[SHADING_NUM];

   static FltkColor *create(int color);

class FltkTooltip: public core::style::Tooltip
   FltkTooltip (const char *text);
   ~FltkTooltip ();
   static FltkTooltip *create(const char *text);
   void onEnter();
   void onLeave();
   void onMotion();

 * \brief This interface adds some more methods for all flkt-based views.
class FltkView: public core::View
   virtual bool usesFltkWidgets () = 0;

   virtual void addFltkWidget (Fl_Widget *widget,
                               core::Allocation *allocation);
   virtual void removeFltkWidget (Fl_Widget *widget);
   virtual void allocateFltkWidget (Fl_Widget *widget,
                                    core::Allocation *allocation);
   virtual void drawFltkWidget (Fl_Widget *widget, core::Rectangle *area);

class FltkPlatform: public core::Platform
   class FltkResourceFactory: public core::ui::ResourceFactory
      FltkPlatform *platform;

      inline void setPlatform (FltkPlatform *platform) {
         this->platform = platform; }

      core::ui::LabelButtonResource *createLabelButtonResource (const char
      core::ui::ComplexButtonResource *
      createComplexButtonResource (core::Widget *widget, bool relief);
      core::ui::ListResource *
      createListResource (core::ui::ListResource::SelectionMode selectionMode,
                          int rows);
      core::ui::OptionMenuResource *createOptionMenuResource ();
      core::ui::EntryResource *createEntryResource (int maxLength,
                                                    bool password,
                                                    const char *label);
      core::ui::MultiLineTextResource *createMultiLineTextResource (int cols,
                                                                    int rows);
      core::ui::CheckButtonResource *createCheckButtonResource (bool
      core::ui::RadioButtonResource *
      createRadioButtonResource (core::ui::RadioButtonResource
                                  *groupedWith, bool activated);

   FltkResourceFactory resourceFactory;

   class IdleFunc: public lout::object::Object
      int id;
      void (core::Layout::*func) ();

   core::Layout *layout;

   lout::container::typed::List <IdleFunc> *idleQueue;
   bool idleFuncRunning;
   int idleFuncId;

   static void generalStaticIdle(void *data);
   void generalIdle();

   FltkView *view;
   lout::container::typed::List <ui::FltkResource> *resources;

   FltkPlatform ();
   ~FltkPlatform ();

   void setLayout (core::Layout *layout);

   void attachView (core::View *view);

   void detachView  (core::View *view);

   int textWidth (core::style::Font *font, const char *text, int len);
   int nextGlyph (const char *text, int idx);
   int prevGlyph (const char *text, int idx);
   float dpiX ();
   float dpiY ();

   int addIdle (void (core::Layout::*func) ());
   void removeIdle (int idleId);

   core::style::Font *createFont (core::style::FontAttrs *attrs,
                                      bool tryEverything);
   bool fontExists (const char *name);
   core::style::Color *createColor (int color);
   core::style::Tooltip *createTooltip (const char *text);

   core::Imgbuf *createImgbuf (core::Imgbuf::Type type, int width, int height);

   void copySelection(const char *text);

   core::ui::ResourceFactory *getResourceFactory ();

   void attachResource (ui::FltkResource *resource);
   void detachResource (ui::FltkResource *resource);

} // namespace fltk
} // namespace dw

#endif // __DW_FLTKPLATFORM_HH__