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