1/*
2 * Copyright 2001-2013 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Stephan A��mus, superstippi@gmx.de
7 *		DarkWyrm, bpmagic@columbus.rr.com
8 *		John Scipione, jscipione@gmail.com
9 *		Clemens Zeidler, haiku@clemens-zeidler.de
10 */
11#ifndef BE_DECORATOR_H
12#define BE_DECORATOR_H
13
14
15#include "DecorManager.h"
16#include "SATDecorator.h"
17
18
19class Desktop;
20class ServerBitmap;
21
22
23class BeDecorAddOn : public DecorAddOn {
24public:
25								BeDecorAddOn(image_id id, const char* name);
26
27protected:
28	virtual Decorator*			_AllocateDecorator(DesktopSettings& settings,
29									BRect rect, Desktop* desktop);
30};
31
32
33class BeDecorator: public SATDecorator {
34public:
35								BeDecorator(DesktopSettings& settings,
36									BRect frame, Desktop* desktop);
37	virtual						~BeDecorator();
38
39	virtual	void				GetComponentColors(Component component,
40									uint8 highlight, ComponentColors _colors,
41									Decorator::Tab* tab = NULL);
42
43protected:
44	virtual	void				_DrawFrame(BRect rect);
45
46	virtual	void				_DrawTab(Decorator::Tab* tab, BRect rect);
47	virtual	void				_DrawTitle(Decorator::Tab* tab, BRect rect);
48	virtual	void				_DrawClose(Decorator::Tab* tab, bool direct,
49									BRect rect);
50	virtual	void				_DrawZoom(Decorator::Tab* tab, bool direct,
51									BRect rect);
52	virtual	void				_DrawMinimize(Decorator::Tab* tab, bool direct,
53									BRect rect);
54
55	virtual	void				_GetButtonSizeAndOffset(const BRect& tabRect,
56									float* offset, float* size,
57									float* inset) const;
58
59private:
60			void				_DrawBevelRect(DrawingEngine* engine,
61									const BRect rect, bool down,
62									rgb_color light, rgb_color shadow);
63			void				_DrawBlendedRect(DrawingEngine* engine,
64									const BRect rect, bool down,
65									rgb_color colorA, rgb_color colorB,
66									rgb_color colorC, rgb_color colorD);
67			void				_DrawButtonBitmap(ServerBitmap* bitmap,
68									bool direct, BRect rect);
69			ServerBitmap*		_GetBitmapForButton(Decorator::Tab* tab,
70									Component item, bool down, int32 width,
71									int32 height);
72			ServerBitmap* 		_CreateTemporaryBitmap(BRect bounds) const;
73			void				_GetComponentColors(Component component,
74									ComponentColors _colors,
75									Decorator::Tab* tab = NULL);
76
77private:
78			status_t			fCStatus;
79
80			ServerBitmap*		fCloseBitmap;
81			ServerBitmap*		fBigZoomBitmap;
82			ServerBitmap*		fSmallZoomBitmap;
83			ServerBitmap*		fGlintBitmap;
84};
85
86
87#endif	// BE_DECORATOR_H
88