xref: /haiku/headers/os/interface/ControlLook.h (revision 6889394848e2dc9f41ff53b12141d572822ca0c6)
1 /*
2  * Copyright 2009-2015, Haiku, Inc. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef _CONTROL_LOOK_H
6 #define _CONTROL_LOOK_H
7 
8 
9 #include <Alignment.h>
10 #include <Font.h>
11 #include <Rect.h>
12 #include <Slider.h>
13 
14 
15 class BBitmap;
16 class BControl;
17 class BGradientLinear;
18 class BView;
19 
20 
21 // WARNING! This is experimental API and may change! Be prepared to
22 // recompile your software in a next version of haiku.
23 
24 
25 namespace BPrivate {
26 
27 
28 class BControlLook {
29 public:
30 								BControlLook();
31 	virtual						~BControlLook();
32 
33 	// TODO: Probably more convenient to pull these enums into global
34 	// namespace and rename them to e.g. "B_CONTROL_LOOK_FOCUSED" instead of
35 	// "BControlLook::B_FOCUSED".
36 
37 	enum frame_type {
38 		B_BUTTON_FRAME,
39 		B_GROUP_FRAME,
40 		B_MENU_FIELD_FRAME,
41 		B_SCROLL_VIEW_FRAME,
42 		B_TEXT_CONTROL_FRAME,
43 	};
44 
45 	enum background_type {
46 		B_BUTTON_BACKGROUND,
47 		B_BUTTON_WITH_POP_UP_BACKGROUND,
48 		B_MENU_BACKGROUND,
49 		B_MENU_BAR_BACKGROUND,
50 		B_MENU_FIELD_BACKGROUND,
51 		B_MENU_ITEM_BACKGROUND,
52 		B_HORIZONTAL_SCROLL_BAR_BACKGROUND,
53 		B_VERTICAL_SCROLL_BAR_BACKGROUND,
54 	};
55 
56 	enum {
57 		B_LEFT_BORDER		= 1 << 0,
58 		B_RIGHT_BORDER		= 1 << 1,
59 		B_TOP_BORDER		= 1 << 2,
60 		B_BOTTOM_BORDER		= 1 << 3,
61 
62 		B_ALL_BORDERS		= B_LEFT_BORDER | B_RIGHT_BORDER
63 								| B_TOP_BORDER | B_BOTTOM_BORDER
64 	};
65 
66 	enum {
67 		B_LEFT_ARROW		= 0,
68 		B_RIGHT_ARROW		= 1,
69 		B_UP_ARROW			= 2,
70 		B_DOWN_ARROW		= 3,
71 		B_LEFT_UP_ARROW		= 4,
72 		B_RIGHT_UP_ARROW	= 5,
73 		B_RIGHT_DOWN_ARROW	= 6,
74 		B_LEFT_DOWN_ARROW	= 7
75 	};
76 
77 	enum {
78 		B_FOCUSED				= 1 << 0,
79 		B_CLICKED				= 1 << 1, // some controls activate on mouse up
80 		B_ACTIVATED				= 1 << 2,
81 		B_HOVER					= 1 << 3,
82 		B_DISABLED				= 1 << 4,
83 		B_DEFAULT_BUTTON		= 1 << 5,
84 		B_IGNORE_OUTLINE		= 1 << 6,
85 		B_PARTIALLY_ACTIVATED	= 1 << 7, // like B_ACTIVATED, but for tri-state
86 		B_FLAT					= 1 << 8, // flat look (e.g. button background)
87 		B_INVALID				= 1 << 9, // invalid value, use B_FAILURE_COLOR
88 		B_IS_CONTROL			= 1 << 10, // use control colors
89 
90 		B_BLEND_FRAME			= 1 << 16,
91 	};
92 
93 	virtual BAlignment			DefaultLabelAlignment() const;
94 	virtual float				DefaultLabelSpacing() const;
95 
96 	// TODO: Make methods virtual before R1 release
97 	/*virtual*/	float			DefaultItemSpacing() const;
98 
99 	static	float				ComposeSpacing(float spacing);
100 
101 	/*virtual*/ uint32			Flags(BControl* control) const;
102 
103 	virtual	void				DrawButtonFrame(BView* view, BRect& rect,
104 									const BRect& updateRect,
105 									const rgb_color& base,
106 									const rgb_color& background,
107 									uint32 flags = 0,
108 									uint32 borders = B_ALL_BORDERS);
109 	/*virtual*/	void			DrawButtonFrame(BView* view, BRect& rect,
110 									const BRect& updateRect,
111 									float radius,
112 									const rgb_color& base,
113 									const rgb_color& background,
114 									uint32 flags = 0,
115 									uint32 borders = B_ALL_BORDERS);
116 	/*virtual*/	void			DrawButtonFrame(BView* view, BRect& rect,
117 									const BRect& updateRect,
118 									float leftTopRadius,
119 									float rightTopRadius,
120 									float leftBottomRadius,
121 									float rightBottomRadius,
122 									const rgb_color& base,
123 									const rgb_color& background,
124 									uint32 flags = 0,
125 									uint32 borders = B_ALL_BORDERS);
126 
127 	virtual	void				DrawButtonBackground(BView* view, BRect& rect,
128 									const BRect& updateRect,
129 									const rgb_color& base,
130 									uint32 flags = 0,
131 									uint32 borders = B_ALL_BORDERS,
132 									orientation orientation = B_HORIZONTAL);
133 	/*virtual*/	void			DrawButtonBackground(BView* view, BRect& rect,
134 									const BRect& updateRect,
135 									float radius,
136 									const rgb_color& base,
137 									uint32 flags = 0,
138 									uint32 borders = B_ALL_BORDERS,
139 									orientation orientation = B_HORIZONTAL);
140 	/*virtual*/	void			DrawButtonBackground(BView* view, BRect& rect,
141 									const BRect& updateRect,
142 									float leftTopRadius,
143 									float rightTopRadius,
144 									float leftBottomRadius,
145 									float rightBottomRadius,
146 									const rgb_color& base,
147 									uint32 flags = 0,
148 									uint32 borders = B_ALL_BORDERS,
149 									orientation orientation = B_HORIZONTAL);
150 
151 	virtual	void				DrawMenuBarBackground(BView* view, BRect& rect,
152 									const BRect& updateRect,
153 									const rgb_color& base,
154 									uint32 flags = 0,
155 									uint32 borders = B_ALL_BORDERS);
156 
157 	virtual	void				DrawMenuFieldFrame(BView* view, BRect& rect,
158 									const BRect& updateRect,
159 									const rgb_color& base,
160 									const rgb_color& background,
161 									uint32 flags = 0,
162 									uint32 borders = B_ALL_BORDERS);
163 	/*virtual*/	void			DrawMenuFieldFrame(BView* view, BRect& rect,
164 									const BRect& updateRect,
165 									float radius,
166 									const rgb_color& base,
167 									const rgb_color& background,
168 									uint32 flags = 0,
169 									uint32 borders = B_ALL_BORDERS);
170 	/*virtual*/	void			DrawMenuFieldFrame(BView* view, BRect& rect,
171 									const BRect& updateRect,
172 									float leftTopRadius,
173 									float rightTopRadius,
174 									float leftBottomRadius,
175 									float rightBottomRadius,
176 									const rgb_color& base,
177 									const rgb_color& background,
178 									uint32 flags = 0,
179 									uint32 borders = B_ALL_BORDERS);
180 
181 	virtual	void				DrawMenuFieldBackground(BView* view,
182 									BRect& rect, const BRect& updateRect,
183 									const rgb_color& base, bool popupIndicator,
184 									uint32 flags = 0);
185 	/*virtual*/	void			DrawMenuFieldBackground(BView* view,
186 									BRect& rect, const BRect& updateRect,
187 									float radius, const rgb_color& base,
188 									bool popupIndicator, uint32 flags = 0);
189 	/*virtual*/	void			DrawMenuFieldBackground(BView* view,
190 									BRect& rect, const BRect& updateRect,
191 									float leftTopRadius,
192 									float rightTopRadius,
193 									float leftBottomRadius,
194 									float rightBottomRadius,
195 									const rgb_color& base,
196 									bool popupIndicator, uint32 flags = 0);
197 	virtual	void				DrawMenuFieldBackground(BView* view,
198 									BRect& rect, const BRect& updateRect,
199 									const rgb_color& base, uint32 flags = 0,
200 									uint32 borders = B_ALL_BORDERS);
201 
202 	virtual	void				DrawMenuBackground(BView* view,
203 									BRect& rect, const BRect& updateRect,
204 									const rgb_color& base, uint32 flags = 0,
205 									uint32 borders = B_ALL_BORDERS);
206 
207 	virtual	void				DrawMenuItemBackground(BView* view,
208 									BRect& rect, const BRect& updateRect,
209 									const rgb_color& base, uint32 flags = 0,
210 									uint32 borders = B_ALL_BORDERS);
211 
212 	virtual	void				DrawStatusBar(BView* view, BRect& rect,
213 									const BRect& updateRect,
214 									const rgb_color& base,
215 									const rgb_color& barColor,
216 									float progressPosition);
217 
218 	virtual	void				DrawCheckBox(BView* view, BRect& rect,
219 									const BRect& updateRect,
220 									const rgb_color& base,
221 									uint32 flags = 0);
222 
223 	virtual	void				DrawRadioButton(BView* view, BRect& rect,
224 									const BRect& updateRect,
225 									const rgb_color& base,
226 									uint32 flags = 0);
227 
228 	virtual	void				DrawScrollBarBackground(BView* view,
229 									BRect& rect1, BRect& rect2,
230 									const BRect& updateRect,
231 									const rgb_color& base, uint32 flags,
232 									orientation orientation);
233 	virtual	void				DrawScrollBarBackground(BView* view,
234 									BRect& rect, const BRect& updateRect,
235 									const rgb_color& base, uint32 flags,
236 									orientation orientation);
237 
238 	/*virtual*/	void			DrawScrollViewFrame(BView* view,
239 									BRect& rect, const BRect& updateRect,
240 									BRect verticalScrollBarFrame,
241 									BRect horizontalScrollBarFrame,
242 									const rgb_color& base,
243 									border_style borderStyle,
244 									uint32 flags = 0,
245 									uint32 borders = B_ALL_BORDERS);
246 
247 	/*virtual*/	void			DrawArrowShape(BView* view,
248 									BRect& rect, const BRect& updateRect,
249 									const rgb_color& base, uint32 direction,
250 									uint32 flags = 0,
251 									float tint = B_DARKEN_MAX_TINT);
252 
253 	virtual	rgb_color			SliderBarColor(const rgb_color& base);
254 
255 	virtual	void				DrawSliderBar(BView* view, BRect rect,
256 									const BRect& updateRect,
257 									const rgb_color& base,
258 									rgb_color leftFillColor,
259 									rgb_color rightFillColor,
260 									float sliderScale, uint32 flags,
261 									orientation orientation);
262 	virtual	void				DrawSliderBar(BView* view, BRect rect,
263 									const BRect& updateRect,
264 									const rgb_color& base, rgb_color fillColor,
265 									uint32 flags, orientation orientation);
266 
267 	virtual	void				DrawSliderThumb(BView* view, BRect& rect,
268 									const BRect& updateRect,
269 									const rgb_color& base, uint32 flags,
270 									orientation orientation);
271 
272 	/*virtual*/	void			DrawSliderTriangle(BView* view, BRect& rect,
273 									const BRect& updateRect,
274 									const rgb_color& base, uint32 flags,
275 									orientation orientation);
276 	virtual	void				DrawSliderTriangle(BView* view, BRect& rect,
277 									const BRect& updateRect,
278 									const rgb_color& base,
279 									const rgb_color& fill, uint32 flags,
280 									orientation orientation);
281 
282 	virtual	void				DrawSliderHashMarks(BView* view, BRect& rect,
283 									const BRect& updateRect,
284 									const rgb_color& base, int32 count,
285 									hash_mark_location location,
286 									uint32 flags, orientation orientation);
287 
288 	virtual	void				DrawActiveTab(BView* view, BRect& rect,
289 									const BRect& updateRect,
290 									const rgb_color& base, uint32 flags = 0,
291 									uint32 borders = B_ALL_BORDERS,
292 									uint32 side = B_TOP_BORDER);
293 
294 	virtual	void				DrawInactiveTab(BView* view, BRect& rect,
295 									const BRect& updateRect,
296 									const rgb_color& base, uint32 flags = 0,
297 									uint32 borders = B_ALL_BORDERS,
298 									uint32 side = B_TOP_BORDER);
299 
300 	/*virtual*/	void			DrawSplitter(BView* view, BRect& rect,
301 									const BRect& updateRect,
302 									const rgb_color& base,
303 									orientation orientation,
304 									uint32 flags = 0,
305 									uint32 borders = B_ALL_BORDERS);
306 
307 	// various borders
308 
309 	virtual	void				DrawBorder(BView* view, BRect& rect,
310 									const BRect& updateRect,
311 									const rgb_color& base,
312 									border_style borderStyle, uint32 flags = 0,
313 									uint32 borders = B_ALL_BORDERS);
314 
315 	virtual	void				DrawRaisedBorder(BView* view, BRect& rect,
316 									const BRect& updateRect,
317 									const rgb_color& base, uint32 flags = 0,
318 									uint32 borders = B_ALL_BORDERS);
319 
320 	virtual	void				DrawGroupFrame(BView* view, BRect& rect,
321 									const BRect& updateRect,
322 									const rgb_color& base,
323 									uint32 borders = B_ALL_BORDERS);
324 
325 	virtual	void				DrawTextControlBorder(BView* view, BRect& rect,
326 									const BRect& updateRect,
327 									const rgb_color& base, uint32 flags = 0,
328 									uint32 borders = B_ALL_BORDERS);
329 
330 	// aligned labels
331 
332 	/*virtual*/	void			DrawLabel(BView* view, const char* label,
333 									BRect rect, const BRect& updateRect,
334 									const rgb_color& base, uint32 flags,
335 									const rgb_color* textColor = NULL);
336 	virtual	void				DrawLabel(BView* view, const char* label,
337 									BRect rect, const BRect& updateRect,
338 									const rgb_color& base, uint32 flags,
339 									const BAlignment& alignment,
340 									const rgb_color* textColor = NULL);
341 	// TODO: Would be nice to have a (non-virtual) version of this method
342 	// which takes an array of labels and locations. That would save some
343 	// setup with the view graphics state.
344 	/*virtual*/	void			DrawLabel(BView* view, const char* label,
345 									const rgb_color& base, uint32 flags,
346 									const BPoint& where,
347 									const rgb_color* textColor = NULL);
348 
349 			void				DrawLabel(BView* view, const char* label,
350 									const BBitmap* icon, BRect rect,
351 									const BRect& updateRect,
352 									const rgb_color& base, uint32 flags,
353 									const rgb_color* textColor = NULL);
354 	virtual	void				DrawLabel(BView* view, const char* label,
355 									const BBitmap* icon, BRect rect,
356 									const BRect& updateRect,
357 									const rgb_color& base, uint32 flags,
358 									const BAlignment& alignment,
359 									const rgb_color* textColor = NULL);
360 
361 	virtual	void				GetFrameInsets(frame_type frameType,
362 									uint32 flags, float& _left, float& _top,
363 									float& _right, float& _bottom);
364 	virtual	void				GetBackgroundInsets(
365 									background_type backgroundType,
366 									uint32 flags, float& _left, float& _top,
367 									float& _right, float& _bottom);
368 			void				GetInsets(frame_type frameType,
369 									background_type backgroundType,
370 									uint32 flags, float& _left, float& _top,
371 									float& _right, float& _bottom);
372 
373 	virtual	void				DrawButtonWithPopUpBackground(BView* view,
374 									BRect& rect, const BRect& updateRect,
375 									const rgb_color& base,
376 									uint32 flags = 0,
377 									uint32 borders = B_ALL_BORDERS,
378 									orientation orientation = B_HORIZONTAL);
379 	virtual	void				DrawButtonWithPopUpBackground(BView* view,
380 									BRect& rect, const BRect& updateRect,
381 									float radius,
382 									const rgb_color& base,
383 									uint32 flags = 0,
384 									uint32 borders = B_ALL_BORDERS,
385 									orientation orientation = B_HORIZONTAL);
386 	virtual	void				DrawButtonWithPopUpBackground(BView* view,
387 									BRect& rect, const BRect& updateRect,
388 									float leftTopRadius,
389 									float rightTopRadius,
390 									float leftBottomRadius,
391 									float rightBottomRadius,
392 									const rgb_color& base,
393 									uint32 flags = 0,
394 									uint32 borders = B_ALL_BORDERS,
395 									orientation orientation = B_HORIZONTAL);
396 
397 			void				SetBackgroundInfo(
398 									const BMessage& backgroundInfo);
399 
400 protected:
401 			void				_DrawButtonFrame(BView* view, BRect& rect,
402 									const BRect& updateRect,
403 									float leftTopRadius,
404 									float rightTopRadius,
405 									float leftBottomRadius,
406 									float rightBottomRadius,
407 									const rgb_color& base,
408 									const rgb_color& background,
409 									float contrast, float brightness = 1.0,
410 									uint32 flags = 0,
411 									uint32 borders = B_ALL_BORDERS);
412 
413 			void				_DrawOuterResessedFrame(BView* view,
414 									BRect& rect, const rgb_color& base,
415 									float contrast = 1.0f,
416 									float brightness = 1.0f,
417 									uint32 flags = 0,
418 									uint32 borders = B_ALL_BORDERS);
419 
420 			void				_DrawFrame(BView* view, BRect& rect,
421 									const rgb_color& left,
422 									const rgb_color& top,
423 									const rgb_color& right,
424 									const rgb_color& bottom,
425 									uint32 borders = B_ALL_BORDERS);
426 			void				_DrawFrame(BView* view, BRect& rect,
427 									const rgb_color& left,
428 									const rgb_color& top,
429 									const rgb_color& right,
430 									const rgb_color& bottom,
431 									const rgb_color& rightTop,
432 									const rgb_color& leftBottom,
433 									uint32 borders = B_ALL_BORDERS);
434 
435 			void				_DrawButtonBackground(BView* view, BRect& rect,
436 									const BRect& updateRect,
437 									float leftTopRadius,
438 									float rightTopRadius,
439 									float leftBottomRadius,
440 									float rightBottomRadius,
441 									const rgb_color& base,
442 									bool popupIndicator = false,
443 									uint32 flags = 0,
444 									uint32 borders = B_ALL_BORDERS,
445 									orientation orientation = B_HORIZONTAL);
446 			void				_DrawFlatButtonBackground(BView* view,
447 									BRect& rect, const BRect& updateRect,
448 									const rgb_color& base,
449 									bool popupIndicator = false,
450 									uint32 flags = 0,
451 									uint32 borders = B_ALL_BORDERS,
452 									orientation orientation = B_HORIZONTAL);
453 			void				_DrawNonFlatButtonBackground(BView* view,
454 									BRect& rect, const BRect& updateRect,
455 									BRegion& clipping,
456 									float leftTopRadius,
457 									float rightTopRadius,
458 									float leftBottomRadius,
459 									float rightBottomRadius,
460 									const rgb_color& base,
461 									bool popupIndicator = false,
462 									uint32 flags = 0,
463 									uint32 borders = B_ALL_BORDERS,
464 									orientation orientation = B_HORIZONTAL);
465 
466 			void				_DrawPopUpMarker(BView* view, const BRect& rect,
467 									const rgb_color& base, uint32 flags);
468 
469 			void				_DrawMenuFieldBackgroundOutside(BView* view,
470 									BRect& rect, const BRect& updateRect,
471 									float leftTopRadius,
472 									float rightTopRadius,
473 									float leftBottomRadius,
474 									float rightBottomRadius,
475 									const rgb_color& base,
476 									bool popupIndicator = false,
477 									uint32 flags = 0);
478 
479 			void				_DrawMenuFieldBackgroundInside(BView* view,
480 									BRect& rect, const BRect& updateRect,
481 									float leftTopRadius,
482 									float rightTopRadius,
483 									float leftBottomRadius,
484 									float rightBottomRadius,
485 									const rgb_color& base, uint32 flags = 0,
486 									uint32 borders = B_ALL_BORDERS);
487 
488 	// Rounded corner methods
489 			void				_DrawRoundCornerLeftTop(BView* view,
490 									BRect& cornerRect, const BRect& updateRect,
491 									const rgb_color& background,
492 									const rgb_color& edgeColor,
493 									const rgb_color& frameColor,
494 									const rgb_color& bevelColor,
495 									const BGradientLinear& fillGradient);
496 
497 			void				_DrawRoundCornerFrameLeftTop(BView* view,
498 									BRect& cornerRect, const BRect& updateRect,
499 									const rgb_color& background,
500 									const rgb_color& edgeColor,
501 									const rgb_color& frameColor);
502 
503 			void				_DrawRoundCornerBackgroundLeftTop(BView* view,
504 									BRect& cornerRect, const BRect& updateRect,
505 									const rgb_color& bevelColor,
506 									const BGradientLinear& fillGradient);
507 
508 			void				_DrawRoundCornerRightTop(BView* view,
509 									BRect& cornerRect, const BRect& updateRect,
510 									const rgb_color& background,
511 									const rgb_color& edgeTopColor,
512 									const rgb_color& edgeRightColor,
513 									const rgb_color& frameTopColor,
514 									const rgb_color& frameRightColor,
515 									const rgb_color& bevelTopColor,
516 									const rgb_color& bevelRightColor,
517 									const BGradientLinear& fillGradient);
518 
519 			void				_DrawRoundCornerFrameRightTop(BView* view,
520 									BRect& cornerRect, const BRect& updateRect,
521 									const rgb_color& background,
522 									const rgb_color& edgeTopColor,
523 									const rgb_color& edgeRightColor,
524 									const rgb_color& frameTopColor,
525 									const rgb_color& frameRightColor);
526 
527 			void				_DrawRoundCornerBackgroundRightTop(BView* view,
528 									BRect& cornerRect, const BRect& updateRect,
529 									const rgb_color& bevelTopColor,
530 									const rgb_color& bevelRightColor,
531 									const BGradientLinear& fillGradient);
532 
533 			void				_DrawRoundCornerLeftBottom(BView* view,
534 									BRect& cornerRect, const BRect& updateRect,
535 									const rgb_color& background,
536 									const rgb_color& edgeLeftColor,
537 									const rgb_color& edgeBottomColor,
538 									const rgb_color& frameLeftColor,
539 									const rgb_color& frameBottomColor,
540 									const rgb_color& bevelLeftColor,
541 									const rgb_color& bevelBottomColor,
542 									const BGradientLinear& fillGradient);
543 
544 			void				_DrawRoundCornerFrameLeftBottom(BView* view,
545 									BRect& cornerRect, const BRect& updateRect,
546 									const rgb_color& background,
547 									const rgb_color& edgeLeftColor,
548 									const rgb_color& edgeBottomColor,
549 									const rgb_color& frameLeftColor,
550 									const rgb_color& frameBottomColor);
551 
552 			void				_DrawRoundCornerBackgroundLeftBottom(BView* view,
553 									BRect& cornerRect, const BRect& updateRect,
554 									const rgb_color& bevelLeftColor,
555 									const rgb_color& bevelBottomColor,
556 									const BGradientLinear& fillGradient);
557 
558 			void				_DrawRoundCornerRightBottom(BView* view,
559 									BRect& cornerRect, const BRect& updateRect,
560 									const rgb_color& background,
561 									const rgb_color& edgeColor,
562 									const rgb_color& frameColor,
563 									const rgb_color& bevelColor,
564 									const BGradientLinear& fillGradient);
565 
566 			void				_DrawRoundCornerFrameRightBottom(BView* view,
567 									BRect& cornerRect, const BRect& updateRect,
568 									const rgb_color& background,
569 									const rgb_color& edgeColor,
570 									const rgb_color& frameColor);
571 
572 			void				_DrawRoundCornerBackgroundRightBottom(
573 									BView* view,
574 									BRect& cornerRect, const BRect& updateRect,
575 									const rgb_color& bevelColor,
576 									const BGradientLinear& fillGradient);
577 
578 			void				_DrawRoundBarCorner(BView* view, BRect& rect,
579 									const BRect& updateRect,
580 									const rgb_color& edgeLightColor,
581 									const rgb_color& edgeShadowColor,
582 									const rgb_color& frameLightColor,
583 									const rgb_color& frameShadowColor,
584 									const rgb_color& fillLightColor,
585 									const rgb_color& fillShadowColor,
586 									float leftInset, float topInset,
587 									float rightInset, float bottomInset,
588 									orientation orientation);
589 
590 	// Border color methods
591 			rgb_color			_EdgeLightColor(const rgb_color& base,
592 									float contrast, float brightness,
593 									uint32 flags);
594 
595 			rgb_color			_EdgeShadowColor(const rgb_color& base,
596 									float contrast, float brightness,
597 									uint32 flags);
598 
599 			rgb_color			_FrameLightColor(const rgb_color& base,
600 									uint32 flags);
601 
602 			rgb_color			_FrameShadowColor(const rgb_color& base,
603 									uint32 flags);
604 
605 			rgb_color			_BevelLightColor(const rgb_color& base,
606 									uint32 flags);
607 
608 			rgb_color			_BevelShadowColor(const rgb_color& base,
609 									uint32 flags);
610 
611 	// Background gradient methods
612 			void				_FillGradient(BView* view, const BRect& rect,
613 									const rgb_color& base, float topTint,
614 									float bottomTint,
615 									orientation orientation = B_HORIZONTAL);
616 
617 			void				_FillGlossyGradient(BView* view,
618 									const BRect& rect, const rgb_color& base,
619 									float topTint, float middle1Tint,
620 									float middle2Tint, float bottomTint,
621 									orientation orientation = B_HORIZONTAL);
622 
623 			void				_MakeGradient(BGradientLinear& gradient,
624 									const BRect& rect, const rgb_color& base,
625 									float topTint, float bottomTint,
626 									orientation orientation = B_HORIZONTAL) const;
627 
628 			void				_MakeGlossyGradient(BGradientLinear& gradient,
629 									const BRect& rect, const rgb_color& base,
630 									float topTint, float middle1Tint,
631 									float middle2Tint, float bottomTint,
632 									orientation orientation = B_HORIZONTAL) const;
633 
634 			void				_MakeButtonGradient(BGradientLinear& gradient,
635 									BRect& rect, const rgb_color& base,
636 									uint32 flags, orientation orientation = B_HORIZONTAL) const;
637 
638 			bool				_RadioButtonAndCheckBoxMarkColor(
639 									const rgb_color& base, rgb_color& color,
640 									uint32 flags) const;
641 
642 private:
643 			bool				fCachedOutline;
644 			int32				fCachedWorkspace;
645 			BMessage			fBackgroundInfo;
646 
647 			uint32				_reserved[20];
648 };
649 
650 extern BControlLook* be_control_look;
651 
652 
653 } // namespace BPrivate
654 
655 using BPrivate::BControlLook;
656 using BPrivate::be_control_look;
657 
658 
659 #endif // _CONTROL_LOOK_H
660