00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef BTHEME_H
00013 #define BTHEME_H
00014
00015
00016
00017
00018
00019 #include "BImage.h"
00020 #include "BGraphics.h"
00021 #include "BWidget.h"
00022 #include "BScroller.h"
00023
00024 class BFont;
00025
00026 class BTheme {
00027 public:
00028 virtual ~BTheme() {}
00029 virtual BRect contentRectForWidget(const BWidget& widget) = 0;
00030 virtual void drawWidgetBackground(BImage& img, BWidget& widget) = 0;
00031 virtual void drawWidgetFrame(BImage& img, BWidget& widget) = 0;
00032
00033 virtual void drawButton(BImage& img, BWidget& w) = 0;
00034
00035 virtual void drawSelectionRect(BImage& img, const BRect& rect,
00036 const BWidget& w) = 0;
00037
00038 virtual void drawScroller(BImage& img, BScroller& w) = 0;
00039 virtual int scrollerHitTest(BScroller& w, const BEvent& event) = 0;
00040
00041 virtual BFont *defaultFont() = 0;
00042 virtual BFont *defaultSmallFont() = 0;
00043 virtual BFont *defaultBigFont() = 0;
00044
00045 virtual uint16 textColor() = 0;
00046 virtual uint16 selectedTextColor() = 0;
00047
00048 static BTheme* currentTheme();
00049 private:
00050 static BTheme *current;
00051 };
00052
00053 class BSimpleTheme: public BTheme {
00054 public:
00055 BSimpleTheme();
00056 virtual ~BSimpleTheme();
00057 virtual BRect contentRectForWidget(const BWidget& widget);
00058 virtual void drawWidgetBackground(BImage& img, BWidget& widget);
00059 virtual void drawWidgetFrame(BImage& img, BWidget& widget);
00060
00061 virtual void drawButton(BImage& img, BWidget& w);
00062
00063 virtual void drawSelectionRect(BImage& img, const BRect& rect,
00064 const BWidget& w);
00065
00066 virtual void drawScroller(BImage& img, BScroller& w);
00067 virtual int scrollerHitTest(BScroller& w, const BEvent& event);
00068
00069 virtual BFont *defaultFont() { return _font; }
00070 virtual BFont *defaultSmallFont() { return _smallFont; }
00071 virtual BFont *defaultBigFont() { return _bigFont; }
00072
00073 virtual uint16 textColor() { return RGB15(0, 0, 0) | BIT(15); }
00074 virtual uint16 selectedTextColor() { return RGB15(31, 31, 31) | BIT(15); }
00075
00076 private:
00077 BFont *_font, *_smallFont, *_bigFont;
00078 };
00079
00080
00081 #endif