More ribbon compilation fixes for OS X.
[wxWidgets.git] / include / wx / ribbon / art.h
1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/ribbon/art.h
3 // Purpose: Art providers for ribbon-bar-style interface
4 // Author: Peter Cawley
5 // Modified by:
6 // Created: 2009-05-25
7 // RCS-ID: $Id$
8 // Copyright: (C) Peter Cawley
9 // Licence: wxWindows licence
10 ///////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_RIBBON_ART_H_
13 #define _WX_RIBBON_ART_H_
14
15 #include "wx/defs.h"
16
17 #if wxUSE_RIBBON
18
19 #include <wx/brush.h>
20 #include <wx/colour.h>
21 #include <wx/font.h>
22 #include <wx/pen.h>
23
24 class WXDLLIMPEXP_FWD_CORE wxDC;
25 class WXDLLIMPEXP_FWD_CORE wxWindow;
26
27 enum wxRibbonArtSetting
28 {
29 wxRIBBON_ART_TAB_SEPARATION_SIZE,
30 wxRIBBON_ART_PAGE_BORDER_LEFT_SIZE,
31 wxRIBBON_ART_PAGE_BORDER_TOP_SIZE,
32 wxRIBBON_ART_PAGE_BORDER_RIGHT_SIZE,
33 wxRIBBON_ART_PAGE_BORDER_BOTTOM_SIZE,
34 wxRIBBON_ART_PANEL_X_SEPARATION_SIZE,
35 wxRIBBON_ART_PANEL_Y_SEPARATION_SIZE,
36 wxRIBBON_ART_TOOL_GROUP_SEPARATION_SIZE,
37 wxRIBBON_ART_GALLERY_BITMAP_PADDING_LEFT_SIZE,
38 wxRIBBON_ART_GALLERY_BITMAP_PADDING_RIGHT_SIZE,
39 wxRIBBON_ART_GALLERY_BITMAP_PADDING_TOP_SIZE,
40 wxRIBBON_ART_GALLERY_BITMAP_PADDING_BOTTOM_SIZE,
41 wxRIBBON_ART_PANEL_LABEL_FONT,
42 wxRIBBON_ART_BUTTON_BAR_LABEL_FONT,
43 wxRIBBON_ART_TAB_LABEL_FONT,
44 wxRIBBON_ART_BUTTON_BAR_LABEL_COLOUR,
45 wxRIBBON_ART_BUTTON_BAR_HOVER_BORDER_COLOUR,
46 wxRIBBON_ART_BUTTON_BAR_HOVER_BACKGROUND_TOP_COLOUR,
47 wxRIBBON_ART_BUTTON_BAR_HOVER_BACKGROUND_TOP_GRADIENT_COLOUR,
48 wxRIBBON_ART_BUTTON_BAR_HOVER_BACKGROUND_COLOUR,
49 wxRIBBON_ART_BUTTON_BAR_HOVER_BACKGROUND_GRADIENT_COLOUR,
50 wxRIBBON_ART_BUTTON_BAR_ACTIVE_BORDER_COLOUR,
51 wxRIBBON_ART_BUTTON_BAR_ACTIVE_BACKGROUND_TOP_COLOUR,
52 wxRIBBON_ART_BUTTON_BAR_ACTIVE_BACKGROUND_TOP_GRADIENT_COLOUR,
53 wxRIBBON_ART_BUTTON_BAR_ACTIVE_BACKGROUND_COLOUR,
54 wxRIBBON_ART_BUTTON_BAR_ACTIVE_BACKGROUND_GRADIENT_COLOUR,
55 wxRIBBON_ART_GALLERY_BORDER_COLOUR,
56 wxRIBBON_ART_GALLERY_HOVER_BACKGROUND_COLOUR,
57 wxRIBBON_ART_GALLERY_BUTTON_BACKGROUND_COLOUR,
58 wxRIBBON_ART_GALLERY_BUTTON_BACKGROUND_GRADIENT_COLOUR,
59 wxRIBBON_ART_GALLERY_BUTTON_BACKGROUND_TOP_COLOUR,
60 wxRIBBON_ART_GALLERY_BUTTON_FACE_COLOUR,
61 wxRIBBON_ART_GALLERY_BUTTON_HOVER_BACKGROUND_COLOUR,
62 wxRIBBON_ART_GALLERY_BUTTON_HOVER_BACKGROUND_GRADIENT_COLOUR,
63 wxRIBBON_ART_GALLERY_BUTTON_HOVER_BACKGROUND_TOP_COLOUR,
64 wxRIBBON_ART_GALLERY_BUTTON_HOVER_FACE_COLOUR,
65 wxRIBBON_ART_GALLERY_BUTTON_ACTIVE_BACKGROUND_COLOUR,
66 wxRIBBON_ART_GALLERY_BUTTON_ACTIVE_BACKGROUND_GRADIENT_COLOUR,
67 wxRIBBON_ART_GALLERY_BUTTON_ACTIVE_BACKGROUND_TOP_COLOUR,
68 wxRIBBON_ART_GALLERY_BUTTON_ACTIVE_FACE_COLOUR,
69 wxRIBBON_ART_GALLERY_BUTTON_DISABLED_BACKGROUND_COLOUR,
70 wxRIBBON_ART_GALLERY_BUTTON_DISABLED_BACKGROUND_GRADIENT_COLOUR,
71 wxRIBBON_ART_GALLERY_BUTTON_DISABLED_BACKGROUND_TOP_COLOUR,
72 wxRIBBON_ART_GALLERY_BUTTON_DISABLED_FACE_COLOUR,
73 wxRIBBON_ART_GALLERY_ITEM_BORDER_COLOUR,
74 wxRIBBON_ART_TAB_LABEL_COLOUR,
75 wxRIBBON_ART_TAB_SEPARATOR_COLOUR,
76 wxRIBBON_ART_TAB_SEPARATOR_GRADIENT_COLOUR,
77 wxRIBBON_ART_TAB_CTRL_BACKGROUND_COLOUR,
78 wxRIBBON_ART_TAB_CTRL_BACKGROUND_GRADIENT_COLOUR,
79 wxRIBBON_ART_TAB_HOVER_BACKGROUND_TOP_COLOUR,
80 wxRIBBON_ART_TAB_HOVER_BACKGROUND_TOP_GRADIENT_COLOUR,
81 wxRIBBON_ART_TAB_HOVER_BACKGROUND_COLOUR,
82 wxRIBBON_ART_TAB_HOVER_BACKGROUND_GRADIENT_COLOUR,
83 wxRIBBON_ART_TAB_ACTIVE_BACKGROUND_TOP_COLOUR,
84 wxRIBBON_ART_TAB_ACTIVE_BACKGROUND_TOP_GRADIENT_COLOUR,
85 wxRIBBON_ART_TAB_ACTIVE_BACKGROUND_COLOUR,
86 wxRIBBON_ART_TAB_ACTIVE_BACKGROUND_GRADIENT_COLOUR,
87 wxRIBBON_ART_TAB_BORDER_COLOUR,
88 wxRIBBON_ART_PANEL_BORDER_COLOUR,
89 wxRIBBON_ART_PANEL_BORDER_GRADIENT_COLOUR,
90 wxRIBBON_ART_PANEL_MINIMISED_BORDER_COLOUR,
91 wxRIBBON_ART_PANEL_MINIMISED_BORDER_GRADIENT_COLOUR,
92 wxRIBBON_ART_PANEL_LABEL_BACKGROUND_COLOUR,
93 wxRIBBON_ART_PANEL_LABEL_BACKGROUND_GRADIENT_COLOUR,
94 wxRIBBON_ART_PANEL_LABEL_COLOUR,
95 wxRIBBON_ART_PANEL_HOVER_LABEL_BACKGROUND_COLOUR,
96 wxRIBBON_ART_PANEL_HOVER_LABEL_BACKGROUND_GRADIENT_COLOUR,
97 wxRIBBON_ART_PANEL_HOVER_LABEL_COLOUR,
98 wxRIBBON_ART_PANEL_MINIMISED_LABEL_COLOUR,
99 wxRIBBON_ART_PANEL_ACTIVE_BACKGROUND_TOP_COLOUR,
100 wxRIBBON_ART_PANEL_ACTIVE_BACKGROUND_TOP_GRADIENT_COLOUR,
101 wxRIBBON_ART_PANEL_ACTIVE_BACKGROUND_COLOUR,
102 wxRIBBON_ART_PANEL_ACTIVE_BACKGROUND_GRADIENT_COLOUR,
103 wxRIBBON_ART_PAGE_BORDER_COLOUR,
104 wxRIBBON_ART_PAGE_BACKGROUND_TOP_COLOUR,
105 wxRIBBON_ART_PAGE_BACKGROUND_TOP_GRADIENT_COLOUR,
106 wxRIBBON_ART_PAGE_BACKGROUND_COLOUR,
107 wxRIBBON_ART_PAGE_BACKGROUND_GRADIENT_COLOUR,
108 wxRIBBON_ART_PAGE_HOVER_BACKGROUND_TOP_COLOUR,
109 wxRIBBON_ART_PAGE_HOVER_BACKGROUND_TOP_GRADIENT_COLOUR,
110 wxRIBBON_ART_PAGE_HOVER_BACKGROUND_COLOUR,
111 wxRIBBON_ART_PAGE_HOVER_BACKGROUND_GRADIENT_COLOUR,
112 wxRIBBON_ART_TOOLBAR_BORDER_COLOUR,
113 wxRIBBON_ART_TOOLBAR_HOVER_BORDER_COLOUR,
114 wxRIBBON_ART_TOOLBAR_FACE_COLOUR,
115 wxRIBBON_ART_TOOL_BACKGROUND_TOP_COLOUR,
116 wxRIBBON_ART_TOOL_BACKGROUND_TOP_GRADIENT_COLOUR,
117 wxRIBBON_ART_TOOL_BACKGROUND_COLOUR,
118 wxRIBBON_ART_TOOL_BACKGROUND_GRADIENT_COLOUR,
119 wxRIBBON_ART_TOOL_HOVER_BACKGROUND_TOP_COLOUR,
120 wxRIBBON_ART_TOOL_HOVER_BACKGROUND_TOP_GRADIENT_COLOUR,
121 wxRIBBON_ART_TOOL_HOVER_BACKGROUND_COLOUR,
122 wxRIBBON_ART_TOOL_HOVER_BACKGROUND_GRADIENT_COLOUR,
123 wxRIBBON_ART_TOOL_ACTIVE_BACKGROUND_TOP_COLOUR,
124 wxRIBBON_ART_TOOL_ACTIVE_BACKGROUND_TOP_GRADIENT_COLOUR,
125 wxRIBBON_ART_TOOL_ACTIVE_BACKGROUND_COLOUR,
126 wxRIBBON_ART_TOOL_ACTIVE_BACKGROUND_GRADIENT_COLOUR,
127 };
128
129 enum wxRibbonScrollButtonStyle
130 {
131 wxRIBBON_SCROLL_BTN_LEFT = 0,
132 wxRIBBON_SCROLL_BTN_RIGHT = 1,
133 wxRIBBON_SCROLL_BTN_UP = 2,
134 wxRIBBON_SCROLL_BTN_DOWN = 3,
135
136 wxRIBBON_SCROLL_BTN_DIRECTION_MASK = 3,
137
138 wxRIBBON_SCROLL_BTN_NORMAL = 0,
139 wxRIBBON_SCROLL_BTN_HOVERED = 4,
140 wxRIBBON_SCROLL_BTN_ACTIVE = 8,
141
142 wxRIBBON_SCROLL_BTN_STATE_MASK = 12,
143
144 wxRIBBON_SCROLL_BTN_FOR_OTHER = 0,
145 wxRIBBON_SCROLL_BTN_FOR_TABS = 16,
146 wxRIBBON_SCROLL_BTN_FOR_PAGE = 32,
147
148 wxRIBBON_SCROLL_BTN_FOR_MASK = 48,
149 };
150
151 enum wxRibbonButtonKind
152 {
153 wxRIBBON_BUTTON_NORMAL = 1 << 0,
154 wxRIBBON_BUTTON_DROPDOWN = 1 << 1,
155 wxRIBBON_BUTTON_HYBRID = wxRIBBON_BUTTON_NORMAL | wxRIBBON_BUTTON_DROPDOWN,
156 };
157
158 enum wxRibbonButtonBarButtonState
159 {
160 wxRIBBON_BUTTONBAR_BUTTON_SMALL = 0 << 0,
161 wxRIBBON_BUTTONBAR_BUTTON_MEDIUM = 1 << 0,
162 wxRIBBON_BUTTONBAR_BUTTON_LARGE = 2 << 0,
163 wxRIBBON_BUTTONBAR_BUTTON_SIZE_MASK = 3 << 0,
164
165 wxRIBBON_BUTTONBAR_BUTTON_NORMAL_HOVERED = 1 << 3,
166 wxRIBBON_BUTTONBAR_BUTTON_DROPDOWN_HOVERED = 1 << 4,
167 wxRIBBON_BUTTONBAR_BUTTON_HOVER_MASK = wxRIBBON_BUTTONBAR_BUTTON_NORMAL_HOVERED | wxRIBBON_BUTTONBAR_BUTTON_DROPDOWN_HOVERED,
168 wxRIBBON_BUTTONBAR_BUTTON_NORMAL_ACTIVE = 1 << 5,
169 wxRIBBON_BUTTONBAR_BUTTON_DROPDOWN_ACTIVE = 1 << 6,
170 wxRIBBON_BUTTONBAR_BUTTON_ACTIVE_MASK = wxRIBBON_BUTTONBAR_BUTTON_NORMAL_ACTIVE | wxRIBBON_BUTTONBAR_BUTTON_DROPDOWN_ACTIVE,
171 wxRIBBON_BUTTONBAR_BUTTON_DISABLED = 1 << 7,
172 wxRIBBON_BUTTONBAR_BUTTON_STATE_MASK = 0xF8,
173 };
174
175 enum wxRibbonGalleryButtonState
176 {
177 wxRIBBON_GALLERY_BUTTON_NORMAL,
178 wxRIBBON_GALLERY_BUTTON_HOVERED,
179 wxRIBBON_GALLERY_BUTTON_ACTIVE,
180 wxRIBBON_GALLERY_BUTTON_DISABLED,
181 };
182
183 class wxRibbonPage;
184 class wxRibbonPanel;
185 class wxRibbonGallery;
186 class wxRibbonGalleryItem;
187 class wxRibbonPageTabInfo;
188 class wxRibbonPageTabInfoArray;
189
190 class WXDLLIMPEXP_RIBBON wxRibbonArtProvider
191 {
192 public:
193 wxRibbonArtProvider();
194 virtual ~wxRibbonArtProvider();
195
196 virtual wxRibbonArtProvider* Clone() const = 0;
197 virtual void SetFlags(long flags) = 0;
198 virtual long GetFlags() const = 0;
199
200 virtual int GetMetric(int id) const = 0;
201 virtual void SetMetric(int id, int new_val) = 0;
202 virtual void SetFont(int id, const wxFont& font) = 0;
203 virtual wxFont GetFont(int id) const = 0;
204 virtual wxColour GetColour(int id) const = 0;
205 virtual void SetColour(int id, const wxColor& colour) = 0;
206 wxColour GetColor(int id) const { return GetColour(id); }
207 void SetColor(int id, const wxColour& color) { SetColour(id, color); }
208 virtual void GetColourScheme(wxColour* primary,
209 wxColour* secondary,
210 wxColour* tertiary) const = 0;
211 virtual void SetColourScheme(const wxColour& primary,
212 const wxColour& secondary,
213 const wxColour& tertiary) = 0;
214
215 virtual void DrawTabCtrlBackground(
216 wxDC& dc,
217 wxWindow* wnd,
218 const wxRect& rect) = 0;
219
220 virtual void DrawTab(wxDC& dc,
221 wxWindow* wnd,
222 const wxRibbonPageTabInfo& tab) = 0;
223
224 virtual void DrawTabSeparator(wxDC& dc,
225 wxWindow* wnd,
226 const wxRect& rect,
227 double visibility) = 0;
228
229 virtual void DrawPageBackground(
230 wxDC& dc,
231 wxWindow* wnd,
232 const wxRect& rect) = 0;
233
234 virtual void DrawScrollButton(
235 wxDC& dc,
236 wxWindow* wnd,
237 const wxRect& rect,
238 long style) = 0;
239
240 virtual void DrawPanelBackground(
241 wxDC& dc,
242 wxRibbonPanel* wnd,
243 const wxRect& rect) = 0;
244
245 virtual void DrawGalleryBackground(
246 wxDC& dc,
247 wxRibbonGallery* wnd,
248 const wxRect& rect) = 0;
249
250 virtual void DrawGalleryItemBackground(
251 wxDC& dc,
252 wxRibbonGallery* wnd,
253 const wxRect& rect,
254 wxRibbonGalleryItem* item) = 0;
255
256 virtual void DrawMinimisedPanel(
257 wxDC& dc,
258 wxRibbonPanel* wnd,
259 const wxRect& rect,
260 wxBitmap& bitmap) = 0;
261
262 virtual void DrawButtonBarBackground(
263 wxDC& dc,
264 wxWindow* wnd,
265 const wxRect& rect) = 0;
266
267 virtual void DrawButtonBarButton(
268 wxDC& dc,
269 wxWindow* wnd,
270 const wxRect& rect,
271 wxRibbonButtonKind kind,
272 long state,
273 const wxString& label,
274 const wxBitmap& bitmap_large,
275 const wxBitmap& bitmap_small) = 0;
276
277 virtual void DrawToolBarBackground(
278 wxDC& dc,
279 wxWindow* wnd,
280 const wxRect& rect) = 0;
281
282 virtual void DrawToolGroupBackground(
283 wxDC& dc,
284 wxWindow* wnd,
285 const wxRect& rect) = 0;
286
287 virtual void DrawTool(
288 wxDC& dc,
289 wxWindow* wnd,
290 const wxRect& rect,
291 const wxBitmap& bitmap,
292 wxRibbonButtonKind kind,
293 long state) = 0;
294
295 virtual void GetBarTabWidth(
296 wxDC& dc,
297 wxWindow* wnd,
298 const wxString& label,
299 const wxBitmap& bitmap,
300 int* ideal,
301 int* small_begin_need_separator,
302 int* small_must_have_separator,
303 int* minimum) = 0;
304
305 virtual int GetTabCtrlHeight(
306 wxDC& dc,
307 wxWindow* wnd,
308 const wxRibbonPageTabInfoArray& pages) = 0;
309
310 virtual wxSize GetScrollButtonMinimumSize(
311 wxDC& dc,
312 wxWindow* wnd,
313 long style) = 0;
314
315 virtual wxSize GetPanelSize(
316 wxDC& dc,
317 const wxRibbonPanel* wnd,
318 wxSize client_size,
319 wxPoint* client_offset) = 0;
320
321 virtual wxSize GetPanelClientSize(
322 wxDC& dc,
323 const wxRibbonPanel* wnd,
324 wxSize size,
325 wxPoint* client_offset) = 0;
326
327 virtual wxSize GetGallerySize(
328 wxDC& dc,
329 const wxRibbonGallery* wnd,
330 wxSize client_size) = 0;
331
332 virtual wxSize GetGalleryClientSize(
333 wxDC& dc,
334 const wxRibbonGallery* wnd,
335 wxSize size,
336 wxPoint* client_offset,
337 wxRect* scroll_up_button,
338 wxRect* scroll_down_button,
339 wxRect* extension_button) = 0;
340
341 virtual wxRect GetPageBackgroundRedrawArea(
342 wxDC& dc,
343 const wxRibbonPage* wnd,
344 wxSize page_old_size,
345 wxSize page_new_size) = 0;
346
347 virtual bool GetButtonBarButtonSize(
348 wxDC& dc,
349 wxWindow* wnd,
350 wxRibbonButtonKind kind,
351 wxRibbonButtonBarButtonState size,
352 const wxString& label,
353 wxSize bitmap_size_large,
354 wxSize bitmap_size_small,
355 wxSize* button_size,
356 wxRect* normal_region,
357 wxRect* dropdown_region) = 0;
358
359 virtual wxSize GetMinimisedPanelMinimumSize(
360 wxDC& dc,
361 const wxRibbonPanel* wnd,
362 wxSize* desired_bitmap_size,
363 wxDirection* expanded_panel_direction) = 0;
364
365 virtual wxSize GetToolSize(
366 wxDC& dc,
367 wxWindow* wnd,
368 wxSize bitmap_size,
369 wxRibbonButtonKind kind,
370 bool is_first,
371 bool is_last,
372 wxRect* dropdown_region) = 0;
373 };
374
375 class WXDLLIMPEXP_RIBBON wxRibbonMSWArtProvider : public wxRibbonArtProvider
376 {
377 public:
378 wxRibbonMSWArtProvider(bool set_colour_scheme = true);
379 virtual ~wxRibbonMSWArtProvider();
380
381 wxRibbonArtProvider* Clone() const;
382 void SetFlags(long flags);
383 long GetFlags() const;
384
385 int GetMetric(int id) const;
386 void SetMetric(int id, int new_val);
387 void SetFont(int id, const wxFont& font);
388 wxFont GetFont(int id) const;
389 wxColour GetColour(int id) const;
390 void SetColour(int id, const wxColor& colour);
391 void GetColourScheme(wxColour* primary,
392 wxColour* secondary,
393 wxColour* tertiary) const;
394 void SetColourScheme(const wxColour& primary,
395 const wxColour& secondary,
396 const wxColour& tertiary);
397
398 int GetTabCtrlHeight(
399 wxDC& dc,
400 wxWindow* wnd,
401 const wxRibbonPageTabInfoArray& pages);
402
403 void DrawTabCtrlBackground(
404 wxDC& dc,
405 wxWindow* wnd,
406 const wxRect& rect);
407
408 void DrawTab(wxDC& dc,
409 wxWindow* wnd,
410 const wxRibbonPageTabInfo& tab);
411
412 void DrawTabSeparator(
413 wxDC& dc,
414 wxWindow* wnd,
415 const wxRect& rect,
416 double visibility);
417
418 void DrawPageBackground(
419 wxDC& dc,
420 wxWindow* wnd,
421 const wxRect& rect);
422
423 void DrawScrollButton(
424 wxDC& dc,
425 wxWindow* wnd,
426 const wxRect& rect,
427 long style);
428
429 void DrawPanelBackground(
430 wxDC& dc,
431 wxRibbonPanel* wnd,
432 const wxRect& rect);
433
434 void DrawGalleryBackground(
435 wxDC& dc,
436 wxRibbonGallery* wnd,
437 const wxRect& rect);
438
439 void DrawGalleryItemBackground(
440 wxDC& dc,
441 wxRibbonGallery* wnd,
442 const wxRect& rect,
443 wxRibbonGalleryItem* item);
444
445 void DrawMinimisedPanel(
446 wxDC& dc,
447 wxRibbonPanel* wnd,
448 const wxRect& rect,
449 wxBitmap& bitmap);
450
451 void DrawButtonBarBackground(
452 wxDC& dc,
453 wxWindow* wnd,
454 const wxRect& rect);
455
456 void DrawButtonBarButton(
457 wxDC& dc,
458 wxWindow* wnd,
459 const wxRect& rect,
460 wxRibbonButtonKind kind,
461 long state,
462 const wxString& label,
463 const wxBitmap& bitmap_large,
464 const wxBitmap& bitmap_small);
465
466 void DrawToolBarBackground(
467 wxDC& dc,
468 wxWindow* wnd,
469 const wxRect& rect);
470
471 void DrawToolGroupBackground(
472 wxDC& dc,
473 wxWindow* wnd,
474 const wxRect& rect);
475
476 void DrawTool(
477 wxDC& dc,
478 wxWindow* wnd,
479 const wxRect& rect,
480 const wxBitmap& bitmap,
481 wxRibbonButtonKind kind,
482 long state);
483
484 void GetBarTabWidth(
485 wxDC& dc,
486 wxWindow* wnd,
487 const wxString& label,
488 const wxBitmap& bitmap,
489 int* ideal,
490 int* small_begin_need_separator,
491 int* small_must_have_separator,
492 int* minimum);
493
494 wxSize GetScrollButtonMinimumSize(
495 wxDC& dc,
496 wxWindow* wnd,
497 long style);
498
499 wxSize GetPanelSize(
500 wxDC& dc,
501 const wxRibbonPanel* wnd,
502 wxSize client_size,
503 wxPoint* client_offset);
504
505 wxSize GetPanelClientSize(
506 wxDC& dc,
507 const wxRibbonPanel* wnd,
508 wxSize size,
509 wxPoint* client_offset);
510
511 wxSize GetGallerySize(
512 wxDC& dc,
513 const wxRibbonGallery* wnd,
514 wxSize client_size);
515
516 wxSize GetGalleryClientSize(
517 wxDC& dc,
518 const wxRibbonGallery* wnd,
519 wxSize size,
520 wxPoint* client_offset,
521 wxRect* scroll_up_button,
522 wxRect* scroll_down_button,
523 wxRect* extension_button);
524
525 wxRect GetPageBackgroundRedrawArea(
526 wxDC& dc,
527 const wxRibbonPage* wnd,
528 wxSize page_old_size,
529 wxSize page_new_size);
530
531 bool GetButtonBarButtonSize(
532 wxDC& dc,
533 wxWindow* wnd,
534 wxRibbonButtonKind kind,
535 wxRibbonButtonBarButtonState size,
536 const wxString& label,
537 wxSize bitmap_size_large,
538 wxSize bitmap_size_small,
539 wxSize* button_size,
540 wxRect* normal_region,
541 wxRect* dropdown_region);
542
543 wxSize GetMinimisedPanelMinimumSize(
544 wxDC& dc,
545 const wxRibbonPanel* wnd,
546 wxSize* desired_bitmap_size,
547 wxDirection* expanded_panel_direction);
548
549 wxSize GetToolSize(
550 wxDC& dc,
551 wxWindow* wnd,
552 wxSize bitmap_size,
553 wxRibbonButtonKind kind,
554 bool is_first,
555 bool is_last,
556 wxRect* dropdown_region);
557
558 protected:
559 void ReallyDrawTabSeparator(wxWindow* wnd, const wxRect& rect, double visibility);
560 void DrawPartialPageBackground(wxDC& dc, wxWindow* wnd, const wxRect& rect,
561 bool allow_hovered = true);
562 void DrawPartialPageBackground(wxDC& dc, wxWindow* wnd, const wxRect& rect,
563 wxRibbonPage* page, wxPoint offset, bool hovered = false);
564 void DrawPanelBorder(wxDC& dc, const wxRect& rect, wxPen& primary_colour,
565 wxPen& secondary_colour);
566 void RemovePanelPadding(wxRect* rect);
567 void DrawDropdownArrow(wxDC& dc, int x, int y, const wxColour& colour);
568 void DrawGalleryBackgroundCommon(wxDC& dc, wxRibbonGallery* wnd,
569 const wxRect& rect);
570 virtual void DrawGalleryButton(wxDC& dc, wxRect rect,
571 wxRibbonGalleryButtonState state, wxBitmap* bitmaps);
572 void DrawButtonBarButtonForeground(
573 wxDC& dc,
574 const wxRect& rect,
575 wxRibbonButtonKind kind,
576 long state,
577 const wxString& label,
578 const wxBitmap& bitmap_large,
579 const wxBitmap& bitmap_small);
580 void DrawMinimisedPanelCommon(
581 wxDC& dc,
582 wxRibbonPanel* wnd,
583 const wxRect& rect,
584 wxRect* preview_rect);
585 void CloneTo(wxRibbonMSWArtProvider* copy) const;
586
587 wxBitmap m_cached_tab_separator;
588 wxBitmap m_gallery_up_bitmap[4];
589 wxBitmap m_gallery_down_bitmap[4];
590 wxBitmap m_gallery_extension_bitmap[4];
591 wxBitmap m_toolbar_drop_bitmap;
592
593 wxColour m_primary_scheme_colour;
594 wxColour m_secondary_scheme_colour;
595 wxColour m_tertiary_scheme_colour;
596
597 wxColour m_button_bar_label_colour;
598 wxColour m_tab_label_colour;
599 wxColour m_tab_separator_colour;
600 wxColour m_tab_separator_gradient_colour;
601 wxColour m_tab_active_background_colour;
602 wxColour m_tab_active_background_gradient_colour;
603 wxColour m_tab_hover_background_colour;
604 wxColour m_tab_hover_background_gradient_colour;
605 wxColour m_tab_hover_background_top_colour;
606 wxColour m_tab_hover_background_top_gradient_colour;
607 wxColour m_panel_label_colour;
608 wxColour m_panel_minimised_label_colour;
609 wxColour m_panel_hover_label_colour;
610 wxColour m_panel_active_background_colour;
611 wxColour m_panel_active_background_gradient_colour;
612 wxColour m_panel_active_background_top_colour;
613 wxColour m_panel_active_background_top_gradient_colour;
614 wxColour m_page_background_colour;
615 wxColour m_page_background_gradient_colour;
616 wxColour m_page_background_top_colour;
617 wxColour m_page_background_top_gradient_colour;
618 wxColour m_page_hover_background_colour;
619 wxColour m_page_hover_background_gradient_colour;
620 wxColour m_page_hover_background_top_colour;
621 wxColour m_page_hover_background_top_gradient_colour;
622 wxColour m_button_bar_hover_background_colour;
623 wxColour m_button_bar_hover_background_gradient_colour;
624 wxColour m_button_bar_hover_background_top_colour;
625 wxColour m_button_bar_hover_background_top_gradient_colour;
626 wxColour m_button_bar_active_background_colour;
627 wxColour m_button_bar_active_background_gradient_colour;
628 wxColour m_button_bar_active_background_top_colour;
629 wxColour m_button_bar_active_background_top_gradient_colour;
630 wxColour m_gallery_button_background_colour;
631 wxColour m_gallery_button_background_gradient_colour;
632 wxColour m_gallery_button_hover_background_colour;
633 wxColour m_gallery_button_hover_background_gradient_colour;
634 wxColour m_gallery_button_active_background_colour;
635 wxColour m_gallery_button_active_background_gradient_colour;
636 wxColour m_gallery_button_disabled_background_colour;
637 wxColour m_gallery_button_disabled_background_gradient_colour;
638 wxColour m_gallery_button_face_colour;
639 wxColour m_gallery_button_hover_face_colour;
640 wxColour m_gallery_button_active_face_colour;
641 wxColour m_gallery_button_disabled_face_colour;
642
643 wxColour m_tool_face_colour;
644 wxColour m_tool_background_top_colour;
645 wxColour m_tool_background_top_gradient_colour;
646 wxColour m_tool_background_colour;
647 wxColour m_tool_background_gradient_colour;
648 wxColour m_tool_hover_background_top_colour;
649 wxColour m_tool_hover_background_top_gradient_colour;
650 wxColour m_tool_hover_background_colour;
651 wxColour m_tool_hover_background_gradient_colour;
652 wxColour m_tool_active_background_top_colour;
653 wxColour m_tool_active_background_top_gradient_colour;
654 wxColour m_tool_active_background_colour;
655 wxColour m_tool_active_background_gradient_colour;
656
657 wxBrush m_tab_ctrl_background_brush;
658 wxBrush m_panel_label_background_brush;
659 wxBrush m_panel_hover_label_background_brush;
660 wxBrush m_gallery_hover_background_brush;
661 wxBrush m_gallery_button_background_top_brush;
662 wxBrush m_gallery_button_hover_background_top_brush;
663 wxBrush m_gallery_button_active_background_top_brush;
664 wxBrush m_gallery_button_disabled_background_top_brush;
665
666 wxFont m_tab_label_font;
667 wxFont m_panel_label_font;
668 wxFont m_button_bar_label_font;
669
670 wxPen m_page_border_pen;
671 wxPen m_panel_border_pen;
672 wxPen m_panel_border_gradient_pen;
673 wxPen m_panel_minimised_border_pen;
674 wxPen m_panel_minimised_border_gradient_pen;
675 wxPen m_tab_border_pen;
676 wxPen m_button_bar_hover_border_pen;
677 wxPen m_button_bar_active_border_pen;
678 wxPen m_gallery_border_pen;
679 wxPen m_gallery_item_border_pen;
680 wxPen m_toolbar_border_pen;
681
682 double m_cached_tab_separator_visibility;
683 long m_flags;
684
685 int m_tab_separation_size;
686 int m_page_border_left;
687 int m_page_border_top;
688 int m_page_border_right;
689 int m_page_border_bottom;
690 int m_panel_x_separation_size;
691 int m_panel_y_separation_size;
692 int m_tool_group_separation_size;
693 int m_gallery_bitmap_padding_left_size;
694 int m_gallery_bitmap_padding_right_size;
695 int m_gallery_bitmap_padding_top_size;
696 int m_gallery_bitmap_padding_bottom_size;
697 };
698
699 class WXDLLIMPEXP_RIBBON wxRibbonAUIArtProvider : public wxRibbonMSWArtProvider
700 {
701 public:
702 wxRibbonAUIArtProvider();
703 virtual ~wxRibbonAUIArtProvider();
704
705 wxRibbonArtProvider* Clone() const;
706
707 wxColour GetColour(int id) const;
708 void SetColour(int id, const wxColor& colour);
709 void SetColourScheme(const wxColour& primary,
710 const wxColour& secondary,
711 const wxColour& tertiary);
712 void SetFont(int id, const wxFont& font);
713
714 wxSize GetScrollButtonMinimumSize(
715 wxDC& dc,
716 wxWindow* wnd,
717 long style);
718
719 void DrawScrollButton(
720 wxDC& dc,
721 wxWindow* wnd,
722 const wxRect& rect,
723 long style);
724
725 wxSize GetPanelSize(
726 wxDC& dc,
727 const wxRibbonPanel* wnd,
728 wxSize client_size,
729 wxPoint* client_offset);
730
731 wxSize GetPanelClientSize(
732 wxDC& dc,
733 const wxRibbonPanel* wnd,
734 wxSize size,
735 wxPoint* client_offset);
736
737 void DrawTabCtrlBackground(
738 wxDC& dc,
739 wxWindow* wnd,
740 const wxRect& rect);
741
742 int GetTabCtrlHeight(
743 wxDC& dc,
744 wxWindow* wnd,
745 const wxRibbonPageTabInfoArray& pages);
746
747 void GetBarTabWidth(
748 wxDC& dc,
749 wxWindow* wnd,
750 const wxString& label,
751 const wxBitmap& bitmap,
752 int* ideal,
753 int* small_begin_need_separator,
754 int* small_must_have_separator,
755 int* minimum);
756
757 void DrawTab(wxDC& dc,
758 wxWindow* wnd,
759 const wxRibbonPageTabInfo& tab);
760
761 void DrawTabSeparator(
762 wxDC& dc,
763 wxWindow* wnd,
764 const wxRect& rect,
765 double visibility);
766
767 void DrawPageBackground(
768 wxDC& dc,
769 wxWindow* wnd,
770 const wxRect& rect);
771
772 void DrawPanelBackground(
773 wxDC& dc,
774 wxRibbonPanel* wnd,
775 const wxRect& rect);
776
777 void DrawMinimisedPanel(
778 wxDC& dc,
779 wxRibbonPanel* wnd,
780 const wxRect& rect,
781 wxBitmap& bitmap);
782
783 void DrawGalleryBackground(
784 wxDC& dc,
785 wxRibbonGallery* wnd,
786 const wxRect& rect);
787
788 void DrawGalleryItemBackground(
789 wxDC& dc,
790 wxRibbonGallery* wnd,
791 const wxRect& rect,
792 wxRibbonGalleryItem* item);
793
794 void DrawButtonBarBackground(
795 wxDC& dc,
796 wxWindow* wnd,
797 const wxRect& rect);
798
799 void DrawButtonBarButton(
800 wxDC& dc,
801 wxWindow* wnd,
802 const wxRect& rect,
803 wxRibbonButtonKind kind,
804 long state,
805 const wxString& label,
806 const wxBitmap& bitmap_large,
807 const wxBitmap& bitmap_small);
808
809 void DrawToolBarBackground(
810 wxDC& dc,
811 wxWindow* wnd,
812 const wxRect& rect);
813
814 void DrawToolGroupBackground(
815 wxDC& dc,
816 wxWindow* wnd,
817 const wxRect& rect);
818
819 void DrawTool(
820 wxDC& dc,
821 wxWindow* wnd,
822 const wxRect& rect,
823 const wxBitmap& bitmap,
824 wxRibbonButtonKind kind,
825 long state);
826
827 protected:
828 void DrawPartialPanelBackground(wxDC& dc, wxWindow* wnd,
829 const wxRect& rect);
830 void DrawGalleryButton(wxDC& dc, wxRect rect,
831 wxRibbonGalleryButtonState state, wxBitmap* bitmaps);
832
833 wxColour m_tab_ctrl_background_colour;
834 wxColour m_tab_ctrl_background_gradient_colour;
835 wxColour m_panel_label_background_colour;
836 wxColour m_panel_label_background_gradient_colour;
837 wxColour m_panel_hover_label_background_colour;
838 wxColour m_panel_hover_label_background_gradient_colour;
839
840 wxBrush m_background_brush;
841 wxBrush m_tab_active_top_background_brush;
842 wxBrush m_tab_hover_background_brush;
843 wxBrush m_button_bar_hover_background_brush;
844 wxBrush m_button_bar_active_background_brush;
845 wxBrush m_gallery_button_active_background_brush;
846 wxBrush m_gallery_button_hover_background_brush;
847 wxBrush m_gallery_button_disabled_background_brush;
848 wxBrush m_tool_hover_background_brush;
849 wxBrush m_tool_active_background_brush;
850
851 wxPen m_toolbar_hover_borden_pen;
852
853 wxFont m_tab_active_label_font;
854 };
855
856 #if defined(__WXMSW__)
857 typedef wxRibbonMSWArtProvider wxRibbonDefaultArtProvider;
858 #elif defined(__WXOSX_CARBON__) || \
859 defined(__WXOSX_COCOA__) || \
860 defined(__WXOSX_IPHONE__) || \
861 defined(__WXCOCOA__)
862 // TODO: Once implemented, change typedef to OSX
863 // typedef wxRibbonOSXArtProvider wxRibbonDefaultArtProvider;
864 typedef wxRibbonAUIArtProvider wxRibbonDefaultArtProvider;
865 #else
866 // TODO: Once implemented, change typedef to AUI
867 typedef wxRibbonAUIArtProvider wxRibbonDefaultArtProvider;
868 #endif
869
870 #endif // wxUSE_RIBBON
871
872 #endif // _WX_RIBBON_ART_H_