xref: /haiku/src/apps/cortex/TipManager/TipView.h (revision 95c9effd68127df2dce202d5e254a7c86560010a)
1 /*
2  * Copyright (c) 1999-2000, Eric Moon.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions, and the following disclaimer.
11  *
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions, and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * 3. The name of the author may not be used to endorse or promote products
17  *    derived from this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
20  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21  * OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
23  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
26  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
27  * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 
31 
32 // TipView.h
33 // * PURPOSE
34 //   Provide a basic, extensible 'ToolTip' view, designed
35 //   to be hosted by a floating window (TipWindow).
36 // * HISTORY
37 //   e.moon		20oct99		multi-line support
38 //   e.moon		17oct99		Begun.
39 
40 #ifndef __TipView_H__
41 #define __TipView_H__
42 
43 #include <Font.h>
44 #include <String.h>
45 #include <View.h>
46 
47 #include <vector>
48 
49 #include "cortex_defs.h"
50 __BEGIN_CORTEX_NAMESPACE
51 
52 class TipWindow;
53 
54 class TipView :
55 	public	BView {
56 	typedef	BView _inherited;
57 
58 public:											// *** dtor/ctors
59 	virtual ~TipView();
60 	TipView();
61 
62 public:											// *** operations
63 
64 	// if attached to a BWindow, the window must be locked
65 	virtual void setText(
66 		const char*							text);
67 
68 public:											// *** BView
69 
70 	virtual void Draw(
71 		BRect										updateRect);
72 
73 	virtual void FrameResized(
74 		float										width,
75 		float										height);
76 
77 	virtual void GetPreferredSize(
78 		float*									outWidth,
79 		float*									outHeight);
80 
81 private:										// implementation
82 	BString										m_text;
83 	BPoint										m_offset;
84 
85 	BFont											m_font;
86 	font_height								m_fontHeight;
87 
88 	rgb_color									m_textColor;
89 	rgb_color									m_borderLoColor;
90 	rgb_color									m_borderHiColor;
91 	rgb_color									m_viewColor;
92 
93 
94 	typedef std::vector<int32> line_set;
95 	line_set									m_lineSet;
96 
97 private:
98 	static const float				s_xPad;
99 	static const float				s_yPad;
100 
101 	void _initColors();
102 	void _initFont();
103 	void _updateLayout(
104 		float										width,
105 		float										height);
106 
107 	void _setText(
108 		const char*							text);
109 
110 	float _maxTextWidth();
111 	float _textHeight();
112 };
113 
114 __END_CORTEX_NAMESPACE
115 #endif /*__TipView_H__*/
116