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