Mercurial > dillo_port1.3
view dw/fltkviewbase.hh @ 1738:7974b38cc036
use background-color on <html>-element
author | Johannes Hofmann <Johannes.Hofmann@gmx.de> |
---|---|
date | Mon, 11 Oct 2010 23:36:36 +0200 |
parents | 3e2034b39789 |
children | cbca357af616 |
line wrap: on
line source
#ifndef __DW_FLTKVIEWBASE_HH__ #define __DW_FLTKVIEWBASE_HH__ #include <time.h> // for time_t #include <sys/time.h> // for time_t in FreeBSD #include <fltk/Group.h> #include <fltk/Image.h> #include <fltk/Scrollbar.h> #include "fltkcore.hh" namespace dw { namespace fltk { class FltkViewBase: public FltkView, public ::fltk::Group { private: typedef enum { DRAW_PLAIN, DRAW_CLIPPED, DRAW_BUFFERED } DrawType; int bgColor; core::Region drawRegion; ::fltk::Rectangle *exposeArea; static ::fltk::Image *backBuffer; static bool backBufferInUse; void draw (const core::Rectangle *rect, DrawType type); void drawChildWidgets (); inline void clipPoint (int *x, int *y, int border) { if (exposeArea) { if (*x < exposeArea->x () - border) *x = exposeArea->x () - border; if (*x > exposeArea->r () + border) *x = exposeArea->r () + border; if (*y < exposeArea->y () - border) *y = exposeArea->y () - border; if (*y > exposeArea->b () + border) *y = exposeArea->b () + border; } } protected: core::Layout *theLayout; int canvasWidth, canvasHeight; int mouse_x, mouse_y; virtual int translateViewXToCanvasX (int x) = 0; virtual int translateViewYToCanvasY (int y) = 0; virtual int translateCanvasXToViewX (int x) = 0; virtual int translateCanvasYToViewY (int y) = 0; public: FltkViewBase (int x, int y, int w, int h, const char *label = 0); ~FltkViewBase (); void draw(); int handle (int event); void setLayout (core::Layout *layout); void setCanvasSize (int width, int ascent, int descent); void setCursor (core::style::Cursor cursor); void setBgColor (core::style::Color *color); void startDrawing (core::Rectangle *area); void finishDrawing (core::Rectangle *area); void queueDraw (core::Rectangle *area); void queueDrawTotal (); void cancelQueueDraw (); void drawPoint (core::style::Color *color, core::style::Color::Shading shading, int x, int y); void drawLine (core::style::Color *color, core::style::Color::Shading shading, int x1, int y1, int x2, int y2); void drawRectangle (core::style::Color *color, core::style::Color::Shading shading, bool filled, int x, int y, int width, int height); void drawArc (core::style::Color *color, core::style::Color::Shading shading, bool filled, int centerX, int centerY, int width, int height, int angle1, int angle2); void drawPolygon (core::style::Color *color, core::style::Color::Shading shading, bool filled, int points[][2], int npoints); core::View *getClippingView (int x, int y, int width, int height); void mergeClippingView (core::View *clippingView); void setBufferedDrawing (bool b); }; class FltkWidgetView: public FltkViewBase { public: FltkWidgetView (int x, int y, int w, int h, const char *label = 0); ~FltkWidgetView (); void layout(); void drawText (core::style::Font *font, core::style::Color *color, core::style::Color::Shading shading, int x, int y, const char *text, int len); void drawImage (core::Imgbuf *imgbuf, int xRoot, int yRoot, int x, int y, int width, int height); bool usesFltkWidgets (); void addFltkWidget (::fltk::Widget *widget, core::Allocation *allocation); void removeFltkWidget (::fltk::Widget *widget); void allocateFltkWidget (::fltk::Widget *widget, core::Allocation *allocation); void drawFltkWidget (::fltk::Widget *widget, core::Rectangle *area); }; } // namespace fltk } // namespace dw #endif // __DW_FLTKVIEWBASE_HH__