Mercurial > dillo_port1.3
view dw/platform.hh @ 1918:55af06da5523
merge in recent changes from main repo
author | corvid <corvid@lavabit.com> |
---|---|
date | Fri, 25 Feb 2011 08:37:13 +0000 |
parents | d5536dc7114a |
children | 4b65c2dd3d47 |
line wrap: on
line source
#ifndef __DW_PLATFORM_HH__ #define __DW_PLATFORM_HH__ #ifndef __INCLUDED_FROM_DW_CORE_HH__ # error Do not include this file directly, use "core.hh" instead. #endif namespace dw { namespace core { /** * \brief An interface to encapsulate some platform dependencies. * * \sa\ref dw-overview */ class Platform: public lout::object::Object { public: /* * ----------------------------------- * General * ----------------------------------- */ /** * \brief This methods notifies the platform, that it has been attached to * a layout. */ virtual void setLayout (Layout *layout) = 0; /* * ------------------------- * Operations on views * ------------------------- */ /** * \brief This methods notifies the platform, that a view has been attached * to the related layout. */ virtual void attachView (View *view) = 0; /** * \brief This methods notifies the platform, that a view has been detached * from the related layout. */ virtual void detachView (View *view) = 0; /* * ----------------------------------- * Platform dependent properties * ----------------------------------- */ /** * \brief Return the width of a text, with a given length and font. */ virtual int textWidth (style::Font *font, const char *text, int len) = 0; /** * \brief Return the index of the next glyph in string text. */ virtual int nextGlyph (const char *text, int idx) = 0; /** * \brief Return the index of the previous glyph in string text. */ virtual int prevGlyph (const char *text, int idx) = 0; /** * \brief Return screen resolution in x-direction. */ virtual float dpiX () = 0; /** * \brief Return screen resolution in y-direction. */ virtual float dpiY () = 0; /* * --------------------------------------------------------- * These are to encapsulate some platform dependencies * --------------------------------------------------------- */ /** * \brief Add an idle function. * * An idle function is called once, when no other * tasks are to be done (e.g. there are no events to process), and then * removed from the queue. The return value is a number, which can be * used in removeIdle below. */ virtual int addIdle (void (Layout::*func) ()) = 0; /** * \brief Remove an idle function, which has not been processed yet. */ virtual void removeIdle (int idleId) = 0; /* * --------------------- * Style Resources * --------------------- */ /** * \brief Create a (platform dependent) font. * * Typically, within a platform, a sub class of dw::core::style::Font * is defined, which holds more platform dependent data. * * Also, this method must fill the attributes "font" (when needed), * "ascent", "descent", "spaceSidth" and "xHeight". If "tryEverything" * is true, several methods should be used to use another font, when * the requested font is not available. Passing false is typically done, * if the caller wants to test different variations. */ virtual style::Font *createFont (style::FontAttrs *attrs, bool tryEverything) = 0; virtual bool fontExists (const char *name) = 0; /** * \brief Create a color resource for a given 0xrrggbb value. */ virtual style::Color *createColor (int color) = 0; /** * \brief Create a tooltip */ virtual style::Tooltip *createTooltip (const char *text) = 0; /* * -------------------- * Image Buffers * -------------------- */ virtual Imgbuf *createImgbuf (Imgbuf::Type type, int width, int height) = 0; /** * \brief Copy selected text (0-terminated). */ virtual void copySelection(const char *text) = 0; /** * ... */ virtual ui::ResourceFactory *getResourceFactory () = 0; }; } // namespace dw } // namespace core #endif // __DW_PLATFORM_HH__