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