Qt 4.8
qwindowsmobilestyle.cpp
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the QtGui module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and Digia. For licensing terms and
14 ** conditions see http://qt.digia.com/licensing. For further information
15 ** use the contact form at http://qt.digia.com/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 **
25 ** In addition, as a special exception, Digia gives you certain additional
26 ** rights. These rights are described in the Digia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 **
29 ** GNU General Public License Usage
30 ** Alternatively, this file may be used under the terms of the GNU
31 ** General Public License version 3.0 as published by the Free Software
32 ** Foundation and appearing in the file LICENSE.GPL included in the
33 ** packaging of this file. Please review the following information to
34 ** ensure the GNU General Public License version 3.0 requirements will be
35 ** met: http://www.gnu.org/copyleft/gpl.html.
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41 
42 #include "qwindowsmobilestyle.h"
43 #include "qwindowsmobilestyle_p.h"
44 
45 #if !defined(QT_NO_STYLE_WINDOWSMOBILE) || defined(QT_PLUGIN)
46 
47 #include "qpainterpath.h"
48 #include "qapplication.h"
49 #include "qdesktopwidget.h"
50 #include "qwidget.h"
51 #include "qdockwidget.h"
52 #include "qframe.h"
53 #include "qmenu.h"
54 #include "qpaintengine.h"
55 #include "qpainter.h"
56 #include "qgroupbox.h"
57 #include "qstyleoption.h"
58 #include "qlistview.h"
59 #include "qdrawutil.h"
60 #include "qtoolbar.h"
61 #include "qabstractscrollarea.h"
62 #include "qabstractbutton.h"
63 #include "qcombobox.h"
64 #include "qabstractscrollarea.h"
65 #include "qframe.h"
66 #include "qscrollbar.h"
67 #include "qabstractitemview.h"
68 #include "qmenubar.h"
69 #include "qtoolbutton.h"
70 #include "qtextedit.h"
71 #include "qdialog.h"
72 #include "qdebug.h"
73 #include "qtabwidget.h"
74 
75 #ifdef Q_WS_WINCE
76 #include "qt_windows.h"
77 #include "qguifunctions_wince.h"
78 extern bool qt_wince_is_high_dpi(); //defined in qguifunctions_wince.cpp
79 extern bool qt_wince_is_smartphone(); //defined in qguifunctions_wince.cpp
80 extern bool qt_wince_is_windows_mobile_65(); //defined in qguifunctions_wince.cpp
81 #endif // Q_WS_WINCE
82 
83 #include "qstylehelper_p.h"
84 
86 
87 static const int windowsItemFrame = 1; // menu item frame width
88 
89 static const int windowsMobileitemViewCheckBoxSize = 13;
90 static const int windowsMobileFrameGroupBoxOffset = 9;
91 static const int windowsMobileIndicatorSize = 14;
93 static const int windowsMobileSliderThickness = 6;
94 static const int windowsMobileIconSize = 16;
95 static const int PE_IndicatorArrowUpBig = 0xf000101;
96 static const int PE_IndicatorArrowDownBig = 0xf000102;
97 static const int PE_IndicatorArrowLeftBig = 0xf000103;
98 static const int PE_IndicatorArrowRightBig = 0xf000104;
99 
100 /* XPM */
101 static const char *const radiobutton_xpm[] = {
102  "30 30 2 1",
103  " c None",
104  ". c #000000",
105  " ........ ",
106  " .............. ",
107  " .... .... ",
108  " .... .... ",
109  " ... ... ",
110  " ... ... ",
111  " .. .. ",
112  " .. .. ",
113  " ... ... ",
114  " .. .. ",
115  " .. .. ",
116  ".. ..",
117  ".. ..",
118  ".. ..",
119  ".. ..",
120  ".. ..",
121  ".. ..",
122  ".. ..",
123  ".. ..",
124  " .. .. ",
125  " .. .. ",
126  " ... ... ",
127  " .. .. ",
128  " .. .. ",
129  " ... ... ",
130  " ... ... ",
131  " .... .... ",
132  " .... .... ",
133  " .............. ",
134  " ........ "};
135 
136 /* XPM */
137 static const char * const radiobutton_low_xpm[] = {
138  "15 15 2 1",
139  " c None",
140  ". c #000000",
141  " ..... ",
142  " .. .. ",
143  " . . ",
144  " . . ",
145  " . . ",
146  ". .",
147  ". .",
148  ". .",
149  ". .",
150  ". .",
151  " . . ",
152  " . . ",
153  " . . ",
154  " .. .. ",
155  " ..... "};
156 
157 /* XPM */
158  static const char * const arrowleft_big_xpm[] = {
159  "9 17 2 1",
160  " c None",
161  ". c #000000",
162  " .",
163  " ..",
164  " ...",
165  " ....",
166  " .....",
167  " ......",
168  " .......",
169  " ........",
170  ".........",
171  " ........",
172  " .......",
173  " ......",
174  " .....",
175  " ....",
176  " ...",
177  " ..",
178  " ."};
179 
180 /* XPM */
181  static const char * const arrowleft_xpm[] = {
182  "8 15 2 1",
183  " c None",
184  ". c #000000",
185  " .",
186  " ..",
187  " ...",
188  " ....",
189  " .....",
190  " ......",
191  " .......",
192  "........",
193  " .......",
194  " ......",
195  " .....",
196  " ....",
197  " ...",
198  " ..",
199  " ."};
200 
201 
202 
203 /* XPM */
204 static const char *const horlines_xpm[] = {
205  "2 2 2 1",
206  " c None",
207  ". c #000000",
208  " ",
209  ".."};
210 
211 /* XPM */
212 static const char *const vertlines_xpm[] = {
213  "2 2 2 1",
214  " c None",
215  ". c #000000",
216  ". ",
217  ". "};
218 
219 /* XPM */
220 static const char *const radiochecked_xpm[] = {
221  "18 18 2 1",
222  " c None",
223  ". c #000000",
224  " ...... ",
225  " .......... ",
226  " .............. ",
227  " .............. ",
228  " ................ ",
229  " ................ ",
230  "..................",
231  "..................",
232  "..................",
233  "..................",
234  "..................",
235  "..................",
236  " ................ ",
237  " ................ ",
238  " .............. ",
239  " .............. ",
240  " .......... ",
241  " ...... "};
242 
243 /* XPM */
244 static const char * const radiochecked_low_xpm[] = {
245  "9 9 2 1",
246  " c None",
247  ". c #000000",
248  " ... ",
249  " ....... ",
250  " ....... ",
251  ".........",
252  ".........",
253  ".........",
254  " ....... ",
255  " ....... ",
256  " ... "};
257 
258 static const char *const arrowdown_xpm[] = {
259  "15 8 2 1",
260  " c None",
261  ". c #000000",
262  "...............",
263  " ............. ",
264  " ........... ",
265  " ......... ",
266  " ....... ",
267  " ..... ",
268  " ... ",
269  " . "};
270 
271 
272 static const char *const arrowdown_big_xpm[] = {
273  "17 9 2 1",
274  " c None",
275  ". c #000000",
276  ".................",
277  " ............... ",
278  " ............. ",
279  " ........... ",
280  " ......... ",
281  " ....... ",
282  " ..... ",
283  " ... ",
284  " . "};
285 
286 
287 /* XPM */
288 static const char *const checkedlight_xpm[] = {
289  "24 24 2 1",
290  " c None",
291  ". c #000000",
292  " ",
293  " ",
294  " ",
295  " ",
296  " ",
297  " . ",
298  " .. ",
299  " ... ",
300  " .... ",
301  " ..... ",
302  " ...... ",
303  " . ...... ",
304  " .. ...... ",
305  " ... ...... ",
306  " .... ...... ",
307  " .......... ",
308  " ......... ",
309  " ....... ",
310  " ..... ",
311  " ... ",
312  " . ",
313  " ",
314  " ",
315  " "};
316 
317 
318 /* XPM */
319 static const char *const checkedbold_xpm[] = {
320  "26 26 2 1",
321  " c None",
322  ". c #000000",
323  " ",
324  " ",
325  " ",
326  " ",
327  " ",
328  " ",
329  " .. ",
330  " ... ",
331  " .... ",
332  " ..... ",
333  " .. ...... ",
334  " ... ....... ",
335  " .... ....... ",
336  " ..... ....... ",
337  " ...... ....... ",
338  " .............. ",
339  " ............ ",
340  " .......... ",
341  " ........ ",
342  " ...... ",
343  " .... ",
344  " .. ",
345  " ",
346  " ",
347  " ",
348  " "};
349 
350 /* XPM */
351 static const char * const checkedbold_low_xpm[] = {
352  "9 8 2 1",
353  " c None",
354  ". c #000000",
355  " .",
356  " ..",
357  ". ...",
358  ".. ... ",
359  "... ... ",
360  " ..... ",
361  " ... ",
362  " . "};
363 
364 /* XPM */
365 static const char * const checkedlight_low_xpm[] = {
366  "8 8 2 1",
367  " c None",
368  ". c #000000",
369  " .",
370  " ..",
371  " ...",
372  ". ... ",
373  ".. ... ",
374  "..... ",
375  " ... ",
376  " . "};
377 
378 /* XPM */
379 static const char * const highlightedradiobutton_xpm[] = {
380  "30 30 3 1",
381  " c None",
382  ". c #000000",
383  "+ c #0078CC",
384  " ........ ",
385  " .............. ",
386  " ....++++++++.... ",
387  " ....++++++++++++.... ",
388  " ...++++ ++++... ",
389  " ...+++ +++... ",
390  " ..++ ++.. ",
391  " ..++ ++.. ",
392  " ...++ ++... ",
393  " ..++ ++.. ",
394  " ..++ ++.. ",
395  "..++ ++..",
396  "..++ ++..",
397  "..++ ++..",
398  "..++ ++..",
399  "..++ ++..",
400  "..++ ++..",
401  "..++ ++..",
402  "..++ ++..",
403  " ..++ ++.. ",
404  " ..++ ++.. ",
405  " ...++ ++... ",
406  " ..++ ++.. ",
407  " ..++ ++.. ",
408  " ...+++ +++... ",
409  " ...++++ ++++... ",
410  " ....++++++++++++.... ",
411  " ....++++++++.... ",
412  " .............. ",
413  " ........ "};
414 
415 /* XPM */
416 static const char * const highlightedradiobutton_low_xpm[] = {
417  "15 15 3 1",
418  " c None",
419  ". c #000000",
420  "+ c #3192D6",
421  " ..... ",
422  " ..+++++.. ",
423  " .++ ++. ",
424  " .+ +. ",
425  " .+ +. ",
426  ".+ +.",
427  ".+ +.",
428  ".+ +.",
429  ".+ +.",
430  ".+ +.",
431  " .+ +. ",
432  " .+ +. ",
433  " .++ ++. ",
434  " ..+++++.. ",
435  " ..... "};
436 
437 /* XPM */
438 static const char * const cross_big_xpm[] = {
439 "28 28 4 1",
440 " c #09454A",
441 ". c #218C98",
442 "+ c #47D8E5",
443 "@ c #FDFFFC",
444 " ",
445 " ",
446 " ++++++++++++++++++++++++ ",
447 " ++++++++++++++++++++++++ ",
448 " ++....................++ ",
449 " ++....................++ ",
450 " ++..@@@..........@@@..++ ",
451 " ++..@@@@........@@@@..++ ",
452 " ++..@@@@@......@@@@@..++ ",
453 " ++...@@@@@....@@@@@...++ ",
454 " ++....@@@@@..@@@@@....++ ",
455 " ++.....@@@@@@@@@@.....++ ",
456 " ++......@@@@@@@@......++ ",
457 " ++.......@@@@@@.......++ ",
458 " ++.......@@@@@@.......++ ",
459 " ++......@@@@@@@@......++ ",
460 " ++.....@@@@@@@@@@.....++ ",
461 " ++....@@@@@..@@@@@....++ ",
462 " ++...@@@@@....@@@@@...++ ",
463 " ++..@@@@@......@@@@@..++ ",
464 " ++..@@@@........@@@@..++ ",
465 " ++..@@@..........@@@..++ ",
466 " ++....................++ ",
467 " ++....................++ ",
468 " ++++++++++++++++++++++++ ",
469 " ++++++++++++++++++++++++ ",
470 " ",
471 " "};
472 
473 /* XPM */
474 static const char * const cross_small_xpm[] = {
475 "14 14 4 1",
476 " c #09454A",
477 ". c #218C98",
478 "+ c #47D8E5",
479 "@ c #FCFFFC",
480 " ",
481 " ++++++++++++ ",
482 " +..........+ ",
483 " +.@@....@@.+ ",
484 " +.@@@..@@@.+ ",
485 " +..@@@@@@..+ ",
486 " +...@@@@...+ ",
487 " +...@@@@...+ ",
488 " +..@@@@@@..+ ",
489 " +.@@@..@@@.+ ",
490 " +.@@....@@.+ ",
491 " +..........+ ",
492 " ++++++++++++ ",
493 " "};
494 
495 /* XPM */
496 static const char * const max_big_xpm[] = {
497 "28 28 4 1",
498 " c #09454A",
499 ". c #218C98",
500 "+ c #47D8E5",
501 "@ c #FDFFFC",
502 " ",
503 " ",
504 " ++++++++++++++++++++++++ ",
505 " ++++++++++++++++++++++++ ",
506 " ++....................++ ",
507 " ++....................++ ",
508 " ++....................++ ",
509 " ++....................++ ",
510 " ++..@@@@@@@@@@@@@@@@..++ ",
511 " ++..@@@@@@@@@@@@@@@@..++ ",
512 " ++..@@@@@@@@@@@@@@@@..++ ",
513 " ++..@@@@@@@@@@@@@@@@..++ ",
514 " ++..@@............@@..++ ",
515 " ++..@@............@@..++ ",
516 " ++..@@............@@..++ ",
517 " ++..@@............@@..++ ",
518 " ++..@@............@@..++ ",
519 " ++..@@............@@..++ ",
520 " ++..@@@@@@@@@@@@@@@@..++ ",
521 " ++..@@@@@@@@@@@@@@@@..++ ",
522 " ++....................++ ",
523 " ++....................++ ",
524 " ++....................++ ",
525 " ++....................++ ",
526 " ++++++++++++++++++++++++ ",
527 " ++++++++++++++++++++++++ ",
528 " ",
529 " "};
530 
531 /* XPM */
532 static const char * const max_small_xpm[] = {
533 "14 14 4 1",
534 " c #09454A",
535 ". c #218C98",
536 "+ c #47D8E5",
537 "@ c #FCFFFC",
538 " ",
539 " ++++++++++++ ",
540 " +..........+ ",
541 " +..........+ ",
542 " +.@@@@@@@@.+ ",
543 " +.@@@@@@@@.+ ",
544 " +.@......@.+ ",
545 " +.@......@.+ ",
546 " +.@......@.+ ",
547 " +.@@@@@@@@.+ ",
548 " +..........+ ",
549 " +..........+ ",
550 " ++++++++++++ ",
551 " "};
552 
553 /* XPM */
554 static const char * const normal_big_xpm[] = {
555 "28 28 4 1",
556 " c #09454A",
557 ". c #218C98",
558 "+ c #47D8E5",
559 "@ c #FDFFFC",
560 " ",
561 " ",
562 " ++++++++++++++++++++++++ ",
563 " ++++++++++++++++++++++++ ",
564 " ++....................++ ",
565 " ++....................++ ",
566 " ++..@@@@@@@@@@@@@@@@..++ ",
567 " ++..@@@@@@@@@@@@@@@@..++ ",
568 " ++..@@............@@..++ ",
569 " ++..@@............@@..++ ",
570 " ++..@@............@@..++ ",
571 " ++..@@............@@..++ ",
572 " ++..@@............@@..++ ",
573 " ++..@@............@@..++ ",
574 " ++..@@............@@..++ ",
575 " ++..@@............@@..++ ",
576 " ++..@@............@@..++ ",
577 " ++..@@............@@..++ ",
578 " ++..@@............@@..++ ",
579 " ++..@@............@@..++ ",
580 " ++..@@@@@@@@@@@@@@@@..++ ",
581 " ++..@@@@@@@@@@@@@@@@..++ ",
582 " ++....................++ ",
583 " ++....................++ ",
584 " ++++++++++++++++++++++++ ",
585 " ++++++++++++++++++++++++ ",
586 " ",
587 " "};
588 
589 /* XPM */
590 static const char * const normal_small_xpm[] = {
591 "14 14 4 1",
592 " c #09454A",
593 ". c #218C98",
594 "+ c #47D8E5",
595 "@ c #FCFFFC",
596 " ",
597 " ++++++++++++ ",
598 " +..........+ ",
599 " +.@@@@@@@@.+ ",
600 " +.@......@.+ ",
601 " +.@......@.+ ",
602 " +.@......@.+ ",
603 " +.@......@.+ ",
604 " +.@......@.+ ",
605 " +.@......@.+ ",
606 " +.@@@@@@@@.+ ",
607 " +..........+ ",
608 " ++++++++++++ ",
609 " "};
610 
611 
612 /* XPM */
613 static const char * const min_big_xpm[] = {
614 "28 28 4 1",
615 " c #09454A",
616 ". c #218C98",
617 "+ c #47D8E5",
618 "@ c #FDFFFC",
619 " ",
620 " ",
621 " ++++++++++++++++++++++++ ",
622 " ++++++++++++++++++++++++ ",
623 " ++....................++ ",
624 " ++....................++ ",
625 " ++....................++ ",
626 " ++....................++ ",
627 " ++....................++ ",
628 " ++....................++ ",
629 " ++....................++ ",
630 " ++....................++ ",
631 " ++....................++ ",
632 " ++....................++ ",
633 " ++....................++ ",
634 " ++....................++ ",
635 " ++....................++ ",
636 " ++....................++ ",
637 " ++..@@@@@@@@@@@@@@@@..++ ",
638 " ++..@@@@@@@@@@@@@@@@..++ ",
639 " ++....................++ ",
640 " ++....................++ ",
641 " ++....................++ ",
642 " ++....................++ ",
643 " ++++++++++++++++++++++++ ",
644 " ++++++++++++++++++++++++ ",
645 " ",
646 " "};
647 
648 /* XPM */
649 static const char * const min_small_xpm[] = {
650 "14 14 4 1",
651 " c #09454A",
652 ". c #218C98",
653 "+ c #47D8E5",
654 "@ c #FCFFFC",
655 " ",
656 " ++++++++++++ ",
657 " +..........+ ",
658 " +..........+ ",
659 " +..........+ ",
660 " +..........+ ",
661 " +..........+ ",
662 " +..........+ ",
663 " +..........+ ",
664 " +.@@@@@@@@.+ ",
665 " +..........+ ",
666 " +..........+ ",
667 " ++++++++++++ ",
668 " "};
669 
670 #ifdef Q_WS_WINCE_WM
671 
672 static char * sbhandleup_xpm[] = {
673 "26 41 45 1",
674 " c None",
675 ". c #000000",
676 "+ c #E7E7E7",
677 "@ c #D6D7D6",
678 "# c #949294",
679 "$ c #737573",
680 "% c #636563",
681 "& c #636163",
682 "* c #5A5D5A",
683 "= c #5A595A",
684 "- c #525552",
685 "; c #525152",
686 "> c #4A4D4A",
687 ", c #7B797B",
688 "' c #CECFCE",
689 ") c #CED3CE",
690 "! c #6B6D6B",
691 "~ c #6B696B",
692 "{ c #737173",
693 "] c #7B7D7B",
694 "^ c #848684",
695 "/ c #848284",
696 "( c #8C8A8C",
697 "_ c #8C8E8C",
698 ": c #B5B2B5",
699 "< c #FFFFFF",
700 "[ c #949694",
701 "} c #B5B6B5",
702 "| c #9C9A9C",
703 "1 c #ADAEAD",
704 "2 c #9C9E9C",
705 "3 c #BDBABD",
706 "4 c #BDBEBD",
707 "5 c #F7F3F7",
708 "6 c #C6C3C6",
709 "7 c #C6C7C6",
710 "8 c #A5A2A5",
711 "9 c #CECBCE",
712 "0 c #FFFBFF",
713 "a c #ADAAAD",
714 "b c #A5A6A5",
715 "c c #D6D3D6",
716 "d c #B5BAB5",
717 "e c #DEDFDE",
718 "f c #DEDBDE",
719 "..........................",
720 "+@#$%%&&&**===---;;;;>=,'+",
721 "+@#$%%&&&**===---;;;;>=$'+",
722 ")$!!~~%%&&&**===---;;;;>;'",
723 "#{$]],,$${{{!!~~%%%&&&*-;]",
724 "#{$]],,$${{{!!~~%%%&&&*-;]",
725 ",$^//]],,$${{{!!~~%%%&&*;*",
726 ",,(^^//]],$${!!!!!~~%%%&-*",
727 ",,(^^//]],$${!!!!!~~%%%&-*",
728 "]]_((^^//]$!%%~!{{!!~~%%-*",
729 "//#__((^^]{:<<:~!{{{!!~~=*",
730 "//#__((^^]{:<<:~!{{{!!~~=&",
731 "//###__(/$:<<<<:~{${{!!~*&",
732 "^^[[##_^]:<<<<<<}!{$${{!*%",
733 "^^[[##_^]:<<<<<<}!{$${{!*%",
734 "((|[[#_/:<<<<<<<<}!$$${{&~",
735 "((||[#^1<<<<1:<<<<}!$$$$&~",
736 "((||[#^1<<<<1:<<<<}!$$$$&~",
737 "__2|#(1<<<<}],}<<<<}{$,$%~",
738 "##2|_1<<<<}^((]3<<<<}{$,~!",
739 "##2|_1<<<<}^((]3<<<<}{$,~!",
740 "##2#1<<<<3^###(/4<<<<}{,~{",
741 "##2#1<<<<3^###(/4<<<<}{,~!",
742 "[[2_5<<<4(#|[[#_/6<<<<,,!{",
743 "[|2_5<<4_[||||[[_/7<<<,]{$",
744 "[|2_5<<4_[||||[[_/7<<<,]{$",
745 "||8_5<6#|2222|||[_/9<<,]{$",
746 "228#06[28888222||[_/'<,/$,",
747 "228#06[28888222||[_/'<,/$,",
748 "22a|6[8bbbb88822||[(/c](,]",
749 "881b8baaabbbb88222|[(^(_,]",
750 "881b8baaabbbb88222|[(^(_,]",
751 "88111111aaabbb88822|[###]/",
752 "bb:::11111aaabbb8822||[[/^",
753 "bb:::11111aaabbb8822||[[//",
754 "bb:::::1111aaabbb8822||[/(",
755 "3a1::::::1111aaabb8822|_^8",
756 "da1::::::1111aaabb8822|_^8",
757 "e1aaabbbb888822||[[##__((@",
758 "+e4:aaabbbb88822||[[[#[b@+",
759 "+e4:aaabbbb88822||[[[#[bf+"};
760 
761 static char * sbhandledown_xpm[] = {
762 "26 40 46 1",
763 " c None",
764 ". c #E7E7E7",
765 "+ c #DEDFDE",
766 "@ c #BDBEBD",
767 "# c #B5B2B5",
768 "$ c #ADAAAD",
769 "% c #A5A6A5",
770 "& c #A5A2A5",
771 "* c #9C9E9C",
772 "= c #9C9A9C",
773 "- c #949694",
774 "; c #949294",
775 "> c #D6D7D6",
776 ", c #DEDBDE",
777 "' c #D6DBD6",
778 ") c #ADAEAD",
779 "! c #8C8E8C",
780 "~ c #8C8A8C",
781 "{ c #BDBABD",
782 "] c #848684",
783 "^ c #B5BAB5",
784 "/ c #848284",
785 "( c #848A84",
786 "_ c #7B7D7B",
787 ": c #7B797B",
788 "< c #C6C3C6",
789 "[ c #D6D3D6",
790 "} c #FFFBFF",
791 "| c #CECFCE",
792 "1 c #FFFFFF",
793 "2 c #737573",
794 "3 c #F7F3F7",
795 "4 c #CECBCE",
796 "5 c #737173",
797 "6 c #C6C7C6",
798 "7 c #6B6D6B",
799 "8 c #B5B6B5",
800 "9 c #6B696B",
801 "0 c #636563",
802 "a c #636163",
803 "b c #5A5D5A",
804 "c c #5A595A",
805 "d c #525552",
806 "e c #525152",
807 "f c #4A4D4A",
808 "g c #C6CBC6",
809 ".+@#$$$%%%%&&&**==---;-%>.",
810 ".+@#$$$%%%%&&&**==---;-%,.",
811 "')$$$%%%%&&&&**==--;;!!~~>",
812 "{$)######))))$$$%%&&**=!]&",
813 "^$)######))))$$$%%&&**=!]&",
814 "%%#####))))$$$%%%&&**==-/(",
815 "%%###)))))$$$%%%&&**==--/]",
816 "%%###)))))$$$%%%&&**==--//",
817 "&&))))))$$$%%%&&&**=-;;;_/",
818 "&&)%&%$$$%%%%&&***=-~]~!:_",
819 "&&)%&%$$$%%%%&&***=-~]~!:_",
820 "**$=<-&%%%%&&&**==-~/[_~:_",
821 "**&;}<-*&&&&***==-!/|1:/2:",
822 "**&;}<-*&&&&***==-!/|1:/2:",
823 "==&!31<;=****===-!/411:_5:",
824 "-=*!311@!-====--!/6111:_52",
825 "-=*!311@!-====--!/6111:_52",
826 "--*!3111@~;=--;!/<1111::75",
827 ";;*;)1111{];;;~/@111185:95",
828 ";;*;)1111{];;;~/@111185:97",
829 ";;*=!)11118]~~_{1111852:97",
830 ";;*=!)11118]~~_{1111852:97",
831 "!!*=;~)11118_:81111852:207",
832 "~~==-;])1111)#1111872222a9",
833 "~~==-;])1111)#1111872222a9",
834 "~~=--;!/#111111118722255a0",
835 "]]--;;!]_#11111187522557b0",
836 "]]--;;!]_#11111187522557b0",
837 "//;;;!!~/2#1111#95255779ba",
838 "//;!!~~]]_5#11#975557799cb",
839 "//;!!~~]]_5#11#975557799ca",
840 "__!~~]]//_27009755779900db",
841 "::~]]//__:2257777799000adb",
842 "::~]]//__:2257777799000adb",
843 ":2]//__::225557799000aabeb",
844 ";52__::225557799000aaabde_",
845 ";52__::225557799000aaabde_",
846 "[2779900aaabbcccdddeeeefeg",
847 ".>;200aaabbcccdddeeeefc:|.",
848 ".>;200aaabbcccdddeeeefc2|."};
849 
850 static char * sbgripdown_xpm[] = {
851 "26 34 39 1",
852 " c None",
853 ". c #949294",
854 "+ c #9C9E9C",
855 "@ c #9C9A9C",
856 "# c #949694",
857 "$ c #8C8E8C",
858 "% c #8C8A8C",
859 "& c #848684",
860 "* c #848284",
861 "= c #7B7D7B",
862 "- c #7B797B",
863 "; c #6B696B",
864 "> c #636563",
865 ", c #737573",
866 "' c #636163",
867 ") c #737173",
868 "! c #5A5D5A",
869 "~ c #6B6D6B",
870 "{ c #5A595A",
871 "] c #B5B6B5",
872 "^ c #BDBEBD",
873 "/ c #ADAEAD",
874 "( c #BDBABD",
875 "_ c #525552",
876 ": c #313031",
877 "< c #525152",
878 "[ c #ADAAAD",
879 "} c #BDBAB5",
880 "| c #4A4D4A",
881 "1 c #4A494A",
882 "2 c #C6C3C6",
883 "3 c #C6CBC6",
884 "4 c #E7E7E7",
885 "5 c #DEDFDE",
886 "6 c #E7E3E7",
887 "7 c #DEE3DE",
888 "8 c #CECBCE",
889 "9 c #8C928C",
890 "0 c #CECFCE",
891 "..+++@@@###...$$%&&**==-;>",
892 "$.++@@@@##...$$%%&**==-->>",
893 "$$+@@@@###..$$%%&&*==--,>>",
894 "$$@@@@###..$$%%&&**==-,,>'",
895 "%%@@@###..$$$%&&**==--,,''",
896 "%%@@###..$$$%&&**==--,,)''",
897 "%%@###...$$%%&&*==--,,))'!",
898 "&&###...$$%%&&**==--,)))!!",
899 "&&##...$$%%&&**==--,,))~!!",
900 "&&#...$$%%&&**==--,,))~~!{",
901 "**...$$%%&&**==--,,))~~;!{",
902 "**..$$%%&&**===--,)))~~;{{",
903 "**.$$%%&]^&===//,,))~~;;{{",
904 "==$$%%&&]^*==-((,))~~;;>{_",
905 "==$%%&&***::--,,::~~;;;>__",
906 "==%%&&&**=::-,,)::~~;;>>__",
907 "--%&&&**==--,,)))~~;;>>>__",
908 "--&&&**==--,,)))~~;;>>>'_<",
909 ",-&&**==]^-,))[[~;;>>>''<<",
910 ",,&**==-]^-)))}};;>>>'''<<",
911 ",,**==--,,::)~~;::>>'''!<<",
912 "))*==--,,)::~~;;::>'''!!<|",
913 "))==--,,)))~~;;;>>'''!!!||",
914 "))=--,,)))~~;;;>>'''!!!{||",
915 "~~--,,)))~~;;;>>'''!!!{{||",
916 "~~-,,)))~~;;>>>'''!!!{{{|1",
917 ";;,,)))~~;;>>>'''!!!{{{_1<",
918 "~;,)))~~;;>>>'''!!!{{{__1'",
919 "%>~))~~;;>>>'''!!!{{{__|1$",
920 "2>>~~~;;>>>''!!!{{{{__<113",
921 "4%'';;;>>>''!!!{{{{__<11%4",
922 "45-!!'>>>''!!!{{{{_<|11)64",
923 "447+!{{___<<<||||1111|+444",
924 "444489~__<<<||||111>$04444"};
925 
926 static char * sbgripup_xpm[] = {
927 "26 34 38 1",
928 " c None",
929 ". c #E7E7E7",
930 "+ c #D6DBD6",
931 "@ c #C6C7C6",
932 "# c #B5B6B5",
933 "$ c #ADAEAD",
934 "% c #ADAAAD",
935 "& c #A5A6A5",
936 "* c #A5A2A5",
937 "= c #BDBEBD",
938 "- c #DEDFDE",
939 "; c #C6CBC6",
940 "> c #9C9E9C",
941 ", c #E7E3E7",
942 "' c #BDBABD",
943 ") c #B5B2B5",
944 "! c #9C9A9C",
945 "~ c #DEE3DE",
946 "{ c #949694",
947 "] c #D6D7D6",
948 "^ c #949294",
949 "/ c #DEDBDE",
950 "( c #8C8E8C",
951 "_ c #8C8A8C",
952 ": c #848684",
953 "< c #D6D3CE",
954 "[ c #CECBCE",
955 "} c #D6D3D6",
956 "| c #848284",
957 "1 c #313031",
958 "2 c #7B7D7B",
959 "3 c #CECFCE",
960 "4 c #CECBC6",
961 "5 c #7B797B",
962 "6 c #737573",
963 "7 c #737173",
964 "8 c #6B6D6B",
965 "9 c #6B696B",
966 "....+@#$$%%%%&&&***$=-....",
967 "...;$$$$$%%%&&&&**>>>>@...",
968 ".,'$$)#'#####)))$$$%*!!$~.",
969 ".=$)#'''####))))$$$%%*!{'.",
970 "]$$''''#####)))$$$%%%&*{^/",
971 "=$#'''#####)))$$$$%%&&&!^#",
972 "$$'''#####))))$$$%%%&&*>(!",
973 "$$''#####))))$$$%%%&&&*>(^",
974 "$$######))))$$$$%%&&&**>(_",
975 "%$#####))))$$$$%%%&&***>__",
976 "%$####))))$$$$%%%&&&**>>__",
977 "%%###)))))$$$%%%&&&**>>>_:",
978 "%%##))))<])$$%[[&&***>>!::",
979 "%%#)))))<]$$%%}<&&**>>!!:|",
980 "&%)))))$$$11%%&&11*>>>!!:|",
981 "&&))))$$$$11%&&&11*>>!!{||",
982 "&&)))$$$$$%%%&&&**>>!!!{|2",
983 "&&))$$$$$%%%&&&**>>>!!{{|2",
984 "*&)$$$$$3]%&&&4@*>>!!{{{22",
985 "**$$$$$%3]%&&&<<>>!!!{{^25",
986 "**$$$$%%%%11&**>11!!{{^^25",
987 "**$$$%%%%&11***>11!!{{^^55",
988 "**$$%%%%&&&***>>!!!{{^^(55",
989 ">>$%%%%&&&***>>>!!{{^^((56",
990 ">>%%%%&&&&***>>!!!{{^^((66",
991 ">>%%%&&&&***>>!!!{{^^((_67",
992 "!>%%&&&&***>>>!!{{{^^(__67",
993 "!!%&&&&***>>>!!!{{^^((_:77",
994 "!!&&&&***>>>!!!{{^^((__:77",
995 "!!&&&****>>!!!{{^^^(__::78",
996 "{!&&****>>>!!{{{^^((_::|88",
997 "{{&****>>>!!!{{^^((__:||88",
998 "{{****>>>!!!{{^^^(__::|289",
999 "{{***>>>!!!{{{^^((_::||289"};
1000 
1001 static char * sbgripmiddle_xpm[] = {
1002 "26 2 12 1",
1003 " c None",
1004 ". c #949294",
1005 "+ c #A5A2A5",
1006 "@ c #9C9E9C",
1007 "# c #9C9A9C",
1008 "$ c #949694",
1009 "% c #8C8E8C",
1010 "& c #8C8A8C",
1011 "* c #848684",
1012 "= c #848284",
1013 "- c #7B7D7B",
1014 "; c #6B696B",
1015 "..++@@@###$$$..%%&&*==--;;",
1016 "..++@@@###$$$..%%&&*==--;;"};
1017 
1018 
1019 static char * listviewhighmiddle_xpm[] = {
1020 "8 46 197 2",
1021 " c None",
1022 ". c #66759E",
1023 "+ c #6C789D",
1024 "@ c #6A789E",
1025 "# c #6B789E",
1026 "$ c #6A779D",
1027 "% c #6C789C",
1028 "& c #6F7D9B",
1029 "* c #6F7D9A",
1030 "= c #9DB6EE",
1031 "- c #9DB6ED",
1032 "; c #9CB6ED",
1033 "> c #A1B6EF",
1034 ", c #A2B6F0",
1035 "' c #93AAE9",
1036 ") c #95ABEA",
1037 "! c #94ABEA",
1038 "~ c #94A9E8",
1039 "{ c #8BA8EA",
1040 "] c #8BA7EA",
1041 "^ c #8AA7EA",
1042 "/ c #8EAAE8",
1043 "( c #8FAAE8",
1044 "_ c #88A2E7",
1045 ": c #8CA3E8",
1046 "< c #8BA3E7",
1047 "[ c #8BA3E8",
1048 "} c #8BA2E7",
1049 "| c #8CA2E7",
1050 "1 c #8DA2E7",
1051 "2 c #87A1E8",
1052 "3 c #87A1E9",
1053 "4 c #86A0E8",
1054 "5 c #86A1E7",
1055 "6 c #87A2E7",
1056 "7 c #859EE9",
1057 "8 c #849DE9",
1058 "9 c #869EE9",
1059 "0 c #869FE9",
1060 "a c #7C9BEA",
1061 "b c #7C9CEA",
1062 "c c #7B9CEA",
1063 "d c #7C9BE9",
1064 "e c #7E9CE9",
1065 "f c #7B9AEA",
1066 "g c #7C99E9",
1067 "h c #7C9AEA",
1068 "i c #7B9AE8",
1069 "j c #7A9AEA",
1070 "k c #7996E1",
1071 "l c #7C96E4",
1072 "m c #7B96E3",
1073 "n c #7B95E3",
1074 "o c #7E95E5",
1075 "p c #7E95E6",
1076 "q c #7292E1",
1077 "r c #7490DF",
1078 "s c #7591E0",
1079 "t c #7590DF",
1080 "u c #7392E1",
1081 "v c #6D8CDE",
1082 "w c #6F8EDD",
1083 "x c #6E8DDD",
1084 "y c #6E8DDE",
1085 "z c #6F8EDE",
1086 "A c #6E8EDE",
1087 "B c #718EDD",
1088 "C c #728EDD",
1089 "D c #6B89E0",
1090 "E c #6C89DF",
1091 "F c #6D89E0",
1092 "G c #6D89DF",
1093 "H c #6C88DF",
1094 "I c #6D88DF",
1095 "J c #6D86DD",
1096 "K c #6086E0",
1097 "L c #6686E0",
1098 "M c #6586E0",
1099 "N c #6486E0",
1100 "O c #6485E0",
1101 "P c #6786DF",
1102 "Q c #5F85E0",
1103 "R c #6583DE",
1104 "S c #6683DE",
1105 "T c #6682DD",
1106 "U c #6086DF",
1107 "V c #5F86E0",
1108 "W c #567ED7",
1109 "X c #567ED8",
1110 "Y c #557DD7",
1111 "Z c #5A7FD8",
1112 "` c #6281DA",
1113 " . c #5379D9",
1114 ".. c #5278D9",
1115 "+. c #547BD8",
1116 "@. c #4C73D7",
1117 "#. c #4B72D2",
1118 "$. c #4C73D4",
1119 "%. c #4C73D3",
1120 "&. c #4B72D4",
1121 "*. c #4F75D3",
1122 "=. c #5074D2",
1123 "-. c #4971D0",
1124 ";. c #4871D0",
1125 ">. c #335ECF",
1126 ",. c #325ECB",
1127 "'. c #335ECD",
1128 "). c #335ECE",
1129 "!. c #325DCD",
1130 "~. c #2E59C9",
1131 "{. c #3059C9",
1132 "]. c #2F59C9",
1133 "^. c #2F59C8",
1134 "/. c #2B59CA",
1135 "(. c #3355C6",
1136 "_. c #3354C5",
1137 ":. c #3156C7",
1138 "<. c #3056C7",
1139 "[. c #3355C7",
1140 "}. c #3355C5",
1141 "|. c #254EBF",
1142 "1. c #1F51C1",
1143 "2. c #234FC0",
1144 "3. c #234FBF",
1145 "4. c #2350C0",
1146 "5. c #1E50BE",
1147 "6. c #1D50C0",
1148 "7. c #264DBE",
1149 "8. c #264CBD",
1150 "9. c #254DBE",
1151 "0. c #244EBF",
1152 "a. c #254DBF",
1153 "b. c #234CBF",
1154 "c. c #244CC0",
1155 "d. c #244BC0",
1156 "e. c #234BC0",
1157 "f. c #234BBF",
1158 "g. c #234CBE",
1159 "h. c #2049B7",
1160 "i. c #2A49B5",
1161 "j. c #2749B5",
1162 "k. c #2749B6",
1163 "l. c #2D49B4",
1164 "m. c #2649B6",
1165 "n. c #2946B5",
1166 "o. c #2A48B6",
1167 "p. c #2947B5",
1168 "q. c #2946B6",
1169 "r. c #2848B6",
1170 "s. c #2549B5",
1171 "t. c #2648B6",
1172 "u. c #2744B5",
1173 "v. c #2744B4",
1174 "w. c #2744AF",
1175 "x. c #2543B4",
1176 "y. c #2543B2",
1177 "z. c #2442B2",
1178 "A. c #2442B3",
1179 "B. c #2442B5",
1180 "C. c #2543B3",
1181 "D. c #1F40B1",
1182 "E. c #1E40B1",
1183 "F. c #243EAE",
1184 "G. c #273BAC",
1185 "H. c #263DAC",
1186 "I. c #253CAB",
1187 "J. c #273CAB",
1188 "K. c #273CAC",
1189 "L. c #263BAA",
1190 "M. c #253CAE",
1191 "N. c #263BA6",
1192 "O. c #253BA5",
1193 "P. c #253AA5",
1194 "Q. c #253BA6",
1195 "R. c #253CA7",
1196 "S. c #263AA6",
1197 "T. c #243CA6",
1198 "U. c #253CA5",
1199 "V. c #273BA8",
1200 "W. c #2F4DA4",
1201 "X. c #2F4DA3",
1202 "Y. c #1B2F85",
1203 "Z. c #B5B5B6",
1204 "`. c #B5B5B5",
1205 " + c #B5B6B6",
1206 ".+ c #B5B4B6",
1207 "++ c #C2C3C5",
1208 "@+ c #C0C3C3",
1209 "#+ c #C1C3C4",
1210 "$+ c #E3E3E3",
1211 "%+ c #E3E3E4",
1212 "&+ c #E4E3E4",
1213 "*+ c #E2E3E4",
1214 "=+ c #ECEEEB",
1215 "-+ c #EBEDEA",
1216 ";+ c #EEF0ED",
1217 ">+ c #EFF0EE",
1218 ". + @ @ # # $ % ",
1219 "& & * & & & & & ",
1220 "= = - = = ; > , ",
1221 "' ) ! ! ! ) ' ~ ",
1222 "{ ] { { { ^ / ( ",
1223 "_ : < [ : } | 1 ",
1224 "2 2 2 3 2 4 5 6 ",
1225 "7 7 7 7 7 8 9 0 ",
1226 "a b a a a c d e ",
1227 "f g h h h h i j ",
1228 "k l m m m n o p ",
1229 "q q q q q q q q ",
1230 "r r s s s t q u ",
1231 "v w x y z A B C ",
1232 "D E F F G F H I ",
1233 "J K L M N O P Q ",
1234 "R R S S S T U V ",
1235 "W W X X X Y Z ` ",
1236 " . . . . ...+.W ",
1237 " . . . . ..... .",
1238 "@.#.$.$.%.&.*.=.",
1239 "-.-.;.-.-.-.-.-.",
1240 ">.,.'.).).!.!.>.",
1241 "~.{.].^.].^././.",
1242 "(.(.(.(.(._.:.<.",
1243 "(.(.[.[.[.[.(.}.",
1244 "|.1.2.3.3.4.5.6.",
1245 "7.7.7.7.7.8.9.0.",
1246 "a.b.c.d.c.e.f.g.",
1247 "h.i.j.k.j.k.l.m.",
1248 "n.o.p.q.r.p.s.t.",
1249 "u.u.v.u.u.u.u.u.",
1250 "w.x.y.z.A.y.B.C.",
1251 "D.D.E.D.D.D.D.D.",
1252 "D.D.E.D.D.D.D.D.",
1253 "F.G.H.I.J.K.L.M.",
1254 "N.N.O.N.N.P.Q.R.",
1255 "N.N.S.N.N.N.N.N.",
1256 "T.N.T.T.T.U.N.V.",
1257 "W.W.X.W.W.W.W.W.",
1258 "W.W.W.W.W.W.W.W.",
1259 "Y.Y.Y.Y.Y.Y.Y.Y.",
1260 "Z.`. + +.+Z.`.`.",
1261 "++@+#+#+#+#+@+@+",
1262 "$+%+&+&+*+%+%+%+",
1263 "=+-+;+-+-+>+-+-+"};
1264 
1265 
1266 
1267 static char * listviewhighcornerleft_xpm[] = {
1268 "100 46 1475 2",
1269 " c None",
1270 ". c #FBFBFC",
1271 "+ c #E8EAE7",
1272 "@ c #758DC3",
1273 "# c #42599E",
1274 "$ c #28418A",
1275 "% c #19418F",
1276 "& c #3F5695",
1277 "* c #415896",
1278 "= c #435A98",
1279 "- c #445C99",
1280 "; c #465E9B",
1281 "> c #48609B",
1282 ", c #49629C",
1283 "' c #4A639D",
1284 ") c #49639D",
1285 "! c #4A629D",
1286 "~ c #4B639D",
1287 "{ c #4B649D",
1288 "] c #4C659D",
1289 "^ c #4D669D",
1290 "/ c #4E689D",
1291 "( c #506A9D",
1292 "_ c #516A9D",
1293 ": c #536B9C",
1294 "< c #546C9C",
1295 "[ c #566D9B",
1296 "} c #576D9B",
1297 "| c #586E9C",
1298 "1 c #5B6F9D",
1299 "2 c #61739D",
1300 "3 c #63749E",
1301 "4 c #64749E",
1302 "5 c #68769E",
1303 "6 c #6A779E",
1304 "7 c #6B789E",
1305 "8 c #66759E",
1306 "9 c #6C789D",
1307 "0 c #EEF0ED",
1308 "a c #D0D3DC",
1309 "b c #3E51A3",
1310 "c c #28428B",
1311 "d c #29428C",
1312 "e c #425996",
1313 "f c #455C99",
1314 "g c #485F9C",
1315 "h c #49619E",
1316 "i c #4A63A0",
1317 "j c #4B64A1",
1318 "k c #4B65A1",
1319 "l c #4C66A2",
1320 "m c #4D67A2",
1321 "n c #4F69A1",
1322 "o c #516AA1",
1323 "p c #536CA0",
1324 "q c #556DA1",
1325 "r c #576EA0",
1326 "s c #586F9F",
1327 "t c #586E9F",
1328 "u c #596F9E",
1329 "v c #5A6F9E",
1330 "w c #5C709E",
1331 "x c #5E719E",
1332 "y c #5F729F",
1333 "z c #62739F",
1334 "A c #63739E",
1335 "B c #64749D",
1336 "C c #65749E",
1337 "D c #69769D",
1338 "E c #6C799E",
1339 "F c #6D799F",
1340 "G c #707D9F",
1341 "H c #717F9E",
1342 "I c #6E7AA1",
1343 "J c #6C789E",
1344 "K c #6F7C9C",
1345 "L c #6F7D9B",
1346 "M c #2A4AA0",
1347 "N c #4971D0",
1348 "O c #4C72D8",
1349 "P c #5472C0",
1350 "Q c #5573BF",
1351 "R c #5774BF",
1352 "S c #5875BF",
1353 "T c #5976C1",
1354 "U c #5A76C1",
1355 "V c #5C78C2",
1356 "W c #5E7AC2",
1357 "X c #607CC3",
1358 "Y c #627EC3",
1359 "Z c #637FC4",
1360 "` c #6581C5",
1361 " . c #6682C6",
1362 ".. c #6783C7",
1363 "+. c #6984C8",
1364 "@. c #6B85C9",
1365 "#. c #6D87CA",
1366 "$. c #6F89CB",
1367 "%. c #718CCD",
1368 "&. c #748ECF",
1369 "*. c #7690D0",
1370 "=. c #7992D2",
1371 "-. c #7A93D3",
1372 ";. c #7C95D5",
1373 ">. c #7F98D7",
1374 ",. c #8099D8",
1375 "'. c #859CDB",
1376 "). c #8AA0DD",
1377 "!. c #8DA3DF",
1378 "~. c #8FA5E0",
1379 "{. c #90A5E0",
1380 "]. c #91A6E1",
1381 "^. c #91A5E1",
1382 "/. c #90A4E0",
1383 "(. c #8EA3DE",
1384 "_. c #92A6E2",
1385 ":. c #8FA4DF",
1386 "<. c #90A5DE",
1387 "[. c #90A5DC",
1388 "}. c #90A6DB",
1389 "|. c #91A6E0",
1390 "1. c #93A7E2",
1391 "2. c #95AAE6",
1392 "3. c #99AEEA",
1393 "4. c #9AB2EA",
1394 "5. c #99B1E9",
1395 "6. c #99B1E7",
1396 "7. c #98AFE6",
1397 "8. c #93A8E2",
1398 "9. c #97ACE7",
1399 "0. c #9AB3EB",
1400 "a. c #9DB5ED",
1401 "b. c #9DB6EE",
1402 "c. c #375095",
1403 "d. c #4056AD",
1404 "e. c #506DCD",
1405 "f. c #4360CC",
1406 "g. c #345ED6",
1407 "h. c #335ECF",
1408 "i. c #355ED6",
1409 "j. c #355FD6",
1410 "k. c #365FD6",
1411 "l. c #355FD0",
1412 "m. c #3760D5",
1413 "n. c #3A63D4",
1414 "o. c #3C63D1",
1415 "p. c #3B63CD",
1416 "q. c #3B63C9",
1417 "r. c #3B62C9",
1418 "s. c #3D63C8",
1419 "t. c #4065C5",
1420 "u. c #4567C5",
1421 "v. c #496BC5",
1422 "w. c #4F70C7",
1423 "x. c #5273C8",
1424 "y. c #5475CA",
1425 "z. c #5777CB",
1426 "A. c #5879CD",
1427 "B. c #5A7BCE",
1428 "C. c #5D7DCF",
1429 "D. c #5F7ECF",
1430 "E. c #617FD0",
1431 "F. c #6381D1",
1432 "G. c #6583D2",
1433 "H. c #6785D2",
1434 "I. c #6886D3",
1435 "J. c #6A88D4",
1436 "K. c #6C89D5",
1437 "L. c #6E8BD6",
1438 "M. c #708CD7",
1439 "N. c #718DD8",
1440 "O. c #738EDA",
1441 "P. c #748FDB",
1442 "Q. c #7691DC",
1443 "R. c #7893DD",
1444 "S. c #7994DD",
1445 "T. c #7A96DE",
1446 "U. c #7B97DF",
1447 "V. c #7C98E0",
1448 "W. c #7E9AE2",
1449 "X. c #7F9BE3",
1450 "Y. c #829DE4",
1451 "Z. c #849FE5",
1452 "`. c #87A0E6",
1453 " + c #88A1E7",
1454 ".+ c #89A2E6",
1455 "++ c #8CA3E7",
1456 "@+ c #8EA5E9",
1457 "#+ c #8EA6E9",
1458 "$+ c #8FA7E9",
1459 "%+ c #8FA8E8",
1460 "&+ c #8FA9E8",
1461 "*+ c #91A9E8",
1462 "=+ c #90A7E8",
1463 "-+ c #8FA8EA",
1464 ";+ c #90AAEA",
1465 ">+ c #93ABEA",
1466 ",+ c #95ABEA",
1467 "'+ c #93ABE9",
1468 ")+ c #94ABEA",
1469 "!+ c #90A9EA",
1470 "~+ c #93AAE9",
1471 "{+ c #273E7E",
1472 "]+ c #345ED5",
1473 "^+ c #3D60CE",
1474 "/+ c #3D60CF",
1475 "(+ c #345ECF",
1476 "_+ c #335ED0",
1477 ":+ c #355FD3",
1478 "<+ c #3A60CE",
1479 "[+ c #3A5FCB",
1480 "}+ c #385FC9",
1481 "|+ c #3B60C8",
1482 "1+ c #3C63CB",
1483 "2+ c #3E64CB",
1484 "3+ c #4166CA",
1485 "4+ c #4568C9",
1486 "5+ c #4A6CC7",
1487 "6+ c #4F71C8",
1488 "7+ c #5172CA",
1489 "8+ c #5475CE",
1490 "9+ c #5678D3",
1491 "0+ c #597CD6",
1492 "a+ c #5C7ED7",
1493 "b+ c #5E7FD8",
1494 "c+ c #6181D9",
1495 "d+ c #6383DA",
1496 "e+ c #6585DA",
1497 "f+ c #6786DB",
1498 "g+ c #6988DC",
1499 "h+ c #6B8ADD",
1500 "i+ c #6D8BDE",
1501 "j+ c #6F8DDE",
1502 "k+ c #718EDF",
1503 "l+ c #728FE0",
1504 "m+ c #7390E1",
1505 "n+ c #7390E2",
1506 "o+ c #7491E3",
1507 "p+ c #7592E4",
1508 "q+ c #7693E4",
1509 "r+ c #7794E5",
1510 "s+ c #7894E5",
1511 "t+ c #7995E6",
1512 "u+ c #7B96E6",
1513 "v+ c #7C97E7",
1514 "w+ c #7D9AE8",
1515 "x+ c #7F9CE9",
1516 "y+ c #829DE9",
1517 "z+ c #849EE9",
1518 "A+ c #859EE9",
1519 "B+ c #87A0E7",
1520 "C+ c #8AA2E7",
1521 "D+ c #8BA3E8",
1522 "E+ c #89A2E7",
1523 "F+ c #8CA6EA",
1524 "G+ c #8BA6EA",
1525 "H+ c #8BA7EA",
1526 "I+ c #8CA3E8",
1527 "J+ c #8BA8EA",
1528 "K+ c #8CA7EA",
1529 "L+ c #8CA8EA",
1530 "M+ c #4659C7",
1531 "N+ c #355ECF",
1532 "O+ c #3660CF",
1533 "P+ c #3860CE",
1534 "Q+ c #3961CD",
1535 "R+ c #3B61CB",
1536 "S+ c #3B61CA",
1537 "T+ c #3D62CA",
1538 "U+ c #3D63CA",
1539 "V+ c #4165CB",
1540 "W+ c #456ACB",
1541 "X+ c #4B6FCD",
1542 "Y+ c #5174CE",
1543 "Z+ c #5275D1",
1544 "`+ c #5477D4",
1545 " @ c #5678D9",
1546 ".@ c #587ADB",
1547 "+@ c #597BDB",
1548 "@@ c #5B7DDC",
1549 "#@ c #5E7FDC",
1550 "$@ c #6081DD",
1551 "%@ c #6283DE",
1552 "&@ c #6484DF",
1553 "*@ c #6787E0",
1554 "=@ c #6989E1",
1555 "-@ c #6B8BE1",
1556 ";@ c #6D8DE2",
1557 ">@ c #6F8EE3",
1558 ",@ c #718FE4",
1559 "'@ c #7290E4",
1560 ")@ c #7491E5",
1561 "!@ c #7692E6",
1562 "~@ c #7793E5",
1563 "{@ c #7894E6",
1564 "]@ c #7895E7",
1565 "^@ c #7996E8",
1566 "/@ c #7A97E8",
1567 "(@ c #7B98E9",
1568 "_@ c #7D99E8",
1569 ":@ c #7F9AE8",
1570 "<@ c #7F9BE9",
1571 "[@ c #7F9CEA",
1572 "}@ c #859EE8",
1573 "|@ c #859FE8",
1574 "1@ c #85A0E9",
1575 "2@ c #869FE9",
1576 "3@ c #86A1E7",
1577 "4@ c #86A0E9",
1578 "5@ c #87A1E7",
1579 "6@ c #88A2E7",
1580 "7@ c #87A1E9",
1581 "8@ c #5A6FCA",
1582 "9@ c #365FCF",
1583 "0@ c #345ED0",
1584 "a@ c #385FCC",
1585 "b@ c #385FCE",
1586 "c@ c #3A61CC",
1587 "d@ c #3B62CD",
1588 "e@ c #3E64CD",
1589 "f@ c #4167CF",
1590 "g@ c #4469CF",
1591 "h@ c #486CD1",
1592 "i@ c #4D71D2",
1593 "j@ c #5175D4",
1594 "k@ c #5376D6",
1595 "l@ c #5578DA",
1596 "m@ c #5679DC",
1597 "n@ c #587BDD",
1598 "o@ c #5A7DDE",
1599 "p@ c #5D80DE",
1600 "q@ c #5F82DF",
1601 "r@ c #6284DF",
1602 "s@ c #6585E0",
1603 "t@ c #6787E1",
1604 "u@ c #6988E2",
1605 "v@ c #6B8AE2",
1606 "w@ c #6D8CE3",
1607 "x@ c #6E8DE3",
1608 "y@ c #708EE4",
1609 "z@ c #718FE3",
1610 "A@ c #7391E4",
1611 "B@ c #7592E5",
1612 "C@ c #7895E5",
1613 "D@ c #7996E6",
1614 "E@ c #7A97E6",
1615 "F@ c #7B98E7",
1616 "G@ c #7A98E8",
1617 "H@ c #7B99E9",
1618 "I@ c #7E9AE9",
1619 "J@ c #7D9AE9",
1620 "K@ c #7E9AEA",
1621 "L@ c #809CE9",
1622 "M@ c #819DE8",
1623 "N@ c #7F9BEA",
1624 "O@ c #819DE9",
1625 "P@ c #819CE9",
1626 "Q@ c #839EE9",
1627 "R@ c #839EE8",
1628 "S@ c #839DEA",
1629 "T@ c #859FE9",
1630 "U@ c #87A0E8",
1631 "V@ c #86A0E8",
1632 "W@ c #87A1E8",
1633 "X@ c #3760CF",
1634 "Y@ c #3A61CE",
1635 "Z@ c #3A62CD",
1636 "`@ c #3F66CE",
1637 " # c #4368D0",
1638 ".# c #466CD2",
1639 "+# c #496DD5",
1640 "@# c #4E72D6",
1641 "## c #5175D8",
1642 "$# c #5276DA",
1643 "%# c #5578DC",
1644 "&# c #577ADC",
1645 "*# c #597CDD",
1646 "=# c #5B7DDD",
1647 "-# c #5D7FDE",
1648 ";# c #5E81DE",
1649 "># c #6183DF",
1650 ",# c #6386DF",
1651 "'# c #6687E0",
1652 ")# c #6888E0",
1653 "!# c #6A89E1",
1654 "~# c #6C8AE1",
1655 "{# c #6E8CE2",
1656 "]# c #6F8DE2",
1657 "^# c #7390E4",
1658 "/# c #7390E3",
1659 "(# c #7491E4",
1660 "_# c #7693E5",
1661 ":# c #7895E6",
1662 "<# c #7896E6",
1663 "[# c #7997E7",
1664 "}# c #7B97E7",
1665 "|# c #7B98E8",
1666 "1# c #7C98E8",
1667 "2# c #7E9BE9",
1668 "3# c #809CEA",
1669 "4# c #819CEA",
1670 "5# c #839DE9",
1671 "6# c #365FD0",
1672 "7# c #3660D0",
1673 "8# c #3961CF",
1674 "9# c #3B63CF",
1675 "0# c #3D64D0",
1676 "a# c #4067D0",
1677 "b# c #4469D2",
1678 "c# c #466BD3",
1679 "d# c #496ED5",
1680 "e# c #4C71D6",
1681 "f# c #4E72D8",
1682 "g# c #5074D9",
1683 "h# c #5376DB",
1684 "i# c #5578DB",
1685 "j# c #587ADC",
1686 "k# c #5B7CDC",
1687 "l# c #5D7EDD",
1688 "m# c #5F80DD",
1689 "n# c #6081DE",
1690 "o# c #6383DE",
1691 "p# c #6686DF",
1692 "q# c #6887E0",
1693 "r# c #6988E0",
1694 "s# c #6B89E1",
1695 "t# c #6C8AE0",
1696 "u# c #6E8CE1",
1697 "v# c #708EE2",
1698 "w# c #718FE2",
1699 "x# c #7290E3",
1700 "y# c #7391E2",
1701 "z# c #7492E1",
1702 "A# c #7592E2",
1703 "B# c #7691E3",
1704 "C# c #7591E3",
1705 "D# c #7692E3",
1706 "E# c #7693E3",
1707 "F# c #7793E4",
1708 "G# c #7893E4",
1709 "H# c #7994E5",
1710 "I# c #7D97E8",
1711 "J# c #7E98E8",
1712 "K# c #7D98E8",
1713 "L# c #7D99E9",
1714 "M# c #7D9BEA",
1715 "N# c #7D9CEA",
1716 "O# c #7E99E8",
1717 "P# c #7D9AEA",
1718 "Q# c #7C9BEA",
1719 "R# c #7C9CEA",
1720 "S# c #355FCF",
1721 "T# c #3860D0",
1722 "U# c #3A62D0",
1723 "V# c #3C64D1",
1724 "W# c #4167D1",
1725 "X# c #4369D3",
1726 "Y# c #466BD4",
1727 "Z# c #486DD5",
1728 "`# c #4A6ED7",
1729 " $ c #4C70D8",
1730 ".$ c #5478D9",
1731 "+$ c #577BDA",
1732 "@$ c #597DDB",
1733 "#$ c #5B7EDB",
1734 "$$ c #5D7FDC",
1735 "%$ c #6182DE",
1736 "&$ c #6284DE",
1737 "*$ c #6485DF",
1738 "=$ c #6586DF",
1739 "-$ c #6787DF",
1740 ";$ c #6888DF",
1741 ">$ c #6A8ADF",
1742 ",$ c #6C8BE0",
1743 "'$ c #6D8CE0",
1744 ")$ c #6E8DE1",
1745 "!$ c #6F8DE1",
1746 "~$ c #708EE1",
1747 "{$ c #718FE0",
1748 "]$ c #728FE1",
1749 "^$ c #7390E0",
1750 "/$ c #738FE0",
1751 "($ c #7490E1",
1752 "_$ c #7590E1",
1753 ":$ c #7591E1",
1754 "<$ c #7592E1",
1755 "[$ c #7692E2",
1756 "}$ c #7794E2",
1757 "|$ c #7894E3",
1758 "1$ c #7996E3",
1759 "2$ c #7A96E5",
1760 "3$ c #7B98E6",
1761 "4$ c #7B9AE8",
1762 "5$ c #7C99E8",
1763 "6$ c #7C96E5",
1764 "7$ c #7D97E7",
1765 "8$ c #7C99E9",
1766 "9$ c #7B9AE9",
1767 "0$ c #7B9AEA",
1768 "a$ c #5B6DCF",
1769 "b$ c #305EC8",
1770 "c$ c #335ECE",
1771 "d$ c #305ECA",
1772 "e$ c #345FCF",
1773 "f$ c #3761D0",
1774 "g$ c #3A62D1",
1775 "h$ c #3C64D2",
1776 "i$ c #4066D3",
1777 "j$ c #466BD5",
1778 "k$ c #486ED6",
1779 "l$ c #4A6ED6",
1780 "m$ c #4D71D8",
1781 "n$ c #4F72D9",
1782 "o$ c #5073D9",
1783 "p$ c #4F72D8",
1784 "q$ c #5074D8",
1785 "r$ c #5276D9",
1786 "s$ c #587ADA",
1787 "t$ c #5B7CDB",
1788 "u$ c #5D7EDC",
1789 "v$ c #5F7FDD",
1790 "w$ c #6081DC",
1791 "x$ c #6182DD",
1792 "y$ c #6283DD",
1793 "z$ c #6484DE",
1794 "A$ c #6585DD",
1795 "B$ c #6787DE",
1796 "C$ c #6988DF",
1797 "D$ c #6A89DE",
1798 "E$ c #6C8ADF",
1799 "F$ c #6D8BDF",
1800 "G$ c #6E8CE0",
1801 "H$ c #6F8DE0",
1802 "I$ c #718EE0",
1803 "J$ c #728FDF",
1804 "K$ c #728FDE",
1805 "L$ c #7290E0",
1806 "M$ c #7190E0",
1807 "N$ c #7291E0",
1808 "O$ c #7191E0",
1809 "P$ c #7392E1",
1810 "Q$ c #7493E1",
1811 "R$ c #7594E1",
1812 "S$ c #7594E2",
1813 "T$ c #7694E2",
1814 "U$ c #7695E2",
1815 "V$ c #7A96E4",
1816 "W$ c #7895E2",
1817 "X$ c #7A96E2",
1818 "Y$ c #7A96E3",
1819 "Z$ c #7B96E3",
1820 "`$ c #7996E1",
1821 " % c #7C96E4",
1822 ".% c #305EC9",
1823 "+% c #315ECC",
1824 "@% c #325ECE",
1825 "#% c #3760D0",
1826 "$% c #3962D1",
1827 "%% c #3E66D3",
1828 "&% c #4268D4",
1829 "*% c #446BD5",
1830 "=% c #476CD6",
1831 "-% c #496ED7",
1832 ";% c #4B6FD7",
1833 ">% c #4C70D7",
1834 ",% c #4E71D7",
1835 "'% c #5074D7",
1836 ")% c #5276D8",
1837 "!% c #5376D8",
1838 "~% c #5779DA",
1839 "{% c #597ADA",
1840 "]% c #5A7BDB",
1841 "^% c #5B7CDA",
1842 "/% c #5D7EDB",
1843 "(% c #5E7FDB",
1844 "_% c #6182DB",
1845 ":% c #6384DC",
1846 "<% c #6586DD",
1847 "[% c #6686DC",
1848 "}% c #6887DD",
1849 "|% c #6988DD",
1850 "1% c #6A8ADE",
1851 "2% c #6B8BDE",
1852 "3% c #6C8CDE",
1853 "4% c #6E8DDF",
1854 "5% c #6E8CDF",
1855 "6% c #6D8DDF",
1856 "7% c #6C8BDF",
1857 "8% c #6F8DDF",
1858 "9% c #718FDF",
1859 "0% c #7290DF",
1860 "a% c #7391E0",
1861 "b% c #7491E0",
1862 "c% c #7292E1",
1863 "d% c #3959C5",
1864 "e% c #345BC5",
1865 "f% c #315EC8",
1866 "g% c #355BC5",
1867 "h% c #325EC8",
1868 "i% c #315ECB",
1869 "j% c #345DCC",
1870 "k% c #335ECD",
1871 "l% c #345ECD",
1872 "m% c #355FCE",
1873 "n% c #3862D0",
1874 "o% c #3E66D2",
1875 "p% c #456BD5",
1876 "q% c #476CD5",
1877 "r% c #4B6ED7",
1878 "s% c #4B6FD6",
1879 "t% c #4B6FD5",
1880 "u% c #4D71D6",
1881 "v% c #5073D7",
1882 "w% c #5174D7",
1883 "x% c #5275D8",
1884 "y% c #5577D8",
1885 "z% c #5678D8",
1886 "A% c #5779D9",
1887 "B% c #587AD8",
1888 "C% c #597CD9",
1889 "D% c #5B7DD9",
1890 "E% c #5D7FDA",
1891 "F% c #5F80DB",
1892 "G% c #6182DC",
1893 "H% c #6484DC",
1894 "I% c #6585DC",
1895 "J% c #6787DD",
1896 "K% c #6988DE",
1897 "L% c #6B8ADE",
1898 "M% c #6B8ADF",
1899 "N% c #6989DE",
1900 "O% c #6B89DE",
1901 "P% c #6E8BDF",
1902 "Q% c #708CDE",
1903 "R% c #708DDF",
1904 "S% c #708FDF",
1905 "T% c #728EDF",
1906 "U% c #6F8EDD",
1907 "V% c #728EDD",
1908 "W% c #7390DF",
1909 "X% c #7490DF",
1910 "Y% c #335DC8",
1911 "Z% c #3759C5",
1912 "`% c #3859C5",
1913 " & c #335EC8",
1914 ".& c #325DCA",
1915 "+& c #345CCB",
1916 "@& c #335DCC",
1917 "#& c #345DCD",
1918 "$& c #355FCD",
1919 "%& c #3861D0",
1920 "&& c #3B64D1",
1921 "*& c #3E65D2",
1922 "=& c #4168D3",
1923 "-& c #456AD5",
1924 ";& c #4B6ED5",
1925 ">& c #4C6FD4",
1926 ",& c #4D70D5",
1927 "'& c #4F72D6",
1928 ")& c #5173D6",
1929 "!& c #5375D7",
1930 "~& c #5476D8",
1931 "{& c #5577D7",
1932 "]& c #5477D8",
1933 "^& c #5677D8",
1934 "/& c #5879D9",
1935 "(& c #597AD9",
1936 "_& c #5C7DDA",
1937 ":& c #6080DC",
1938 "<& c #6080DB",
1939 "[& c #6181DC",
1940 "}& c #6282DC",
1941 "|& c #6383DD",
1942 "1& c #6484DD",
1943 "2& c #6686DE",
1944 "3& c #6685DE",
1945 "4& c #6786DE",
1946 "5& c #6687DE",
1947 "6& c #6887DE",
1948 "7& c #6987DE",
1949 "8& c #6788DF",
1950 "9& c #6785DF",
1951 "0& c #6B89DF",
1952 "a& c #6C89DF",
1953 "b& c #6F8DDD",
1954 "c& c #6D8CDE",
1955 "d& c #445BBB",
1956 "e& c #3759BE",
1957 "f& c #375AC6",
1958 "g& c #355CC8",
1959 "h& c #345CCA",
1960 "i& c #355ECC",
1961 "j& c #365FCD",
1962 "k& c #3761CE",
1963 "l& c #3A63D0",
1964 "m& c #3D65D1",
1965 "n& c #466AD4",
1966 "o& c #476BD4",
1967 "p& c #486CD3",
1968 "q& c #4A6ED4",
1969 "r& c #4B6ED4",
1970 "s& c #4E71D6",
1971 "t& c #4F71D5",
1972 "u& c #5072D6",
1973 "v& c #5274D7",
1974 "w& c #5273D7",
1975 "x& c #5274D6",
1976 "y& c #5476D7",
1977 "z& c #5779D8",
1978 "A& c #587AD9",
1979 "B& c #5A7CDA",
1980 "C& c #5C7DDB",
1981 "D& c #5D7EDA",
1982 "E& c #6081DA",
1983 "F& c #6181DB",
1984 "G& c #6283DC",
1985 "H& c #6483DD",
1986 "I& c #6483DE",
1987 "J& c #6585DE",
1988 "K& c #6786DF",
1989 "L& c #6886DE",
1990 "M& c #6887DF",
1991 "N& c #6987DF",
1992 "O& c #6A88DF",
1993 "P& c #6786E0",
1994 "Q& c #6A86DE",
1995 "R& c #6B89E0",
1996 "S& c #365BC8",
1997 "T& c #365CC8",
1998 "U& c #375DCA",
1999 "V& c #375FCB",
2000 "W& c #3860CD",
2001 "X& c #3C63D0",
2002 "Y& c #4167D2",
2003 "Z& c #4268D2",
2004 "`& c #4368D2",
2005 " * c #4367D2",
2006 ".* c #4568D2",
2007 "+* c #466AD2",
2008 "@* c #496CD3",
2009 "#* c #4A6DD3",
2010 "$* c #4A6DD4",
2011 "%* c #4D70D4",
2012 "&* c #4F72D5",
2013 "** c #4C70D4",
2014 "=* c #4E72D5",
2015 "-* c #5173D5",
2016 ";* c #5375D6",
2017 ">* c #597BDA",
2018 ",* c #5B7DDA",
2019 "'* c #5C7EDB",
2020 ")* c #5D7FDB",
2021 "!* c #5E80DB",
2022 "~* c #5E81DA",
2023 "{* c #5F81DB",
2024 "]* c #5F82DB",
2025 "^* c #6384DD",
2026 "/* c #6384DE",
2027 "(* c #6585DF",
2028 "_* c #6486E0",
2029 ":* c #6583DD",
2030 "<* c #6386E0",
2031 "[* c #6686E0",
2032 "}* c #6B86DD",
2033 "|* c #6D86DD",
2034 "1* c #6086E0",
2035 "2* c #5573CD",
2036 "3* c #3959C3",
2037 "4* c #3959C4",
2038 "5* c #3759C0",
2039 "6* c #375BC7",
2040 "7* c #365CC7",
2041 "8* c #395FCC",
2042 "9* c #3B62CE",
2043 "0* c #3E64D0",
2044 "a* c #4066D1",
2045 "b* c #4166D1",
2046 "c* c #4064CF",
2047 "d* c #4065CF",
2048 "e* c #4266D0",
2049 "f* c #4468D1",
2050 "g* c #4569D1",
2051 "h* c #476BD2",
2052 "i* c #466AD1",
2053 "j* c #476AD2",
2054 "k* c #456AD1",
2055 "l* c #496DD2",
2056 "m* c #4A6FD3",
2057 "n* c #496ED2",
2058 "o* c #4B70D4",
2059 "p* c #4D71D4",
2060 "q* c #4E72D4",
2061 "r* c #5073D4",
2062 "s* c #5174D5",
2063 "t* c #5175D5",
2064 "u* c #5276D6",
2065 "v* c #5377D6",
2066 "w* c #5478D7",
2067 "x* c #5579D7",
2068 "y* c #567AD8",
2069 "z* c #577BD9",
2070 "A* c #597CD8",
2071 "B* c #5A7DD9",
2072 "C* c #5A7ED9",
2073 "D* c #5B7FDA",
2074 "E* c #5C80DA",
2075 "F* c #5D80DA",
2076 "G* c #5E81DB",
2077 "H* c #5D80DB",
2078 "I* c #6082DC",
2079 "J* c #6183DD",
2080 "K* c #6183DE",
2081 "L* c #6082DB",
2082 "M* c #6282DE",
2083 "N* c #6682DE",
2084 "O* c #6583DE",
2085 "P* c #3759BF",
2086 "Q* c #375AC2",
2087 "R* c #375AC1",
2088 "S* c #375AC4",
2089 "T* c #395DCA",
2090 "U* c #3A5ECA",
2091 "V* c #3C60CC",
2092 "W* c #3D61CD",
2093 "X* c #3D61CC",
2094 "Y* c #3C61CD",
2095 "Z* c #3E62CD",
2096 "`* c #3F64CE",
2097 " = c #4266CF",
2098 ".= c #4468D0",
2099 "+= c #4267CF",
2100 "@= c #4166CE",
2101 "#= c #4065CE",
2102 "$= c #4166CD",
2103 "%= c #4267CE",
2104 "&= c #456AD0",
2105 "*= c #4368CE",
2106 "== c #4468CF",
2107 "-= c #4569D0",
2108 ";= c #486BD1",
2109 ">= c #4B6FD3",
2110 ",= c #4C70D3",
2111 "'= c #4F73D4",
2112 ")= c #5275D5",
2113 "!= c #5477D6",
2114 "~= c #577BD7",
2115 "{= c #587CD8",
2116 "]= c #577CD8",
2117 "^= c #597DD9",
2118 "/= c #5A7DDA",
2119 "(= c #597DDA",
2120 "_= c #587CDA",
2121 ":= c #5A7EDA",
2122 "<= c #567BD8",
2123 "[= c #557AD9",
2124 "}= c #567BD9",
2125 "|= c #577CD9",
2126 "1= c #587DD9",
2127 "2= c #587ED9",
2128 "3= c #577ED8",
2129 "4= c #587DD8",
2130 "5= c #587ED8",
2131 "6= c #567ED7",
2132 "7= c #526ABD",
2133 "8= c #3759C1",
2134 "9= c #385BC7",
2135 "0= c #395CC8",
2136 "a= c #3B5DC9",
2137 "b= c #3B5ECA",
2138 "c= c #3A5FCA",
2139 "d= c #3B60CC",
2140 "e= c #3C61CC",
2141 "f= c #3D62CD",
2142 "g= c #3E63CD",
2143 "h= c #3C61CB",
2144 "i= c #3C61CA",
2145 "j= c #3D62CB",
2146 "k= c #3F64CC",
2147 "l= c #4065CD",
2148 "m= c #4669D0",
2149 "n= c #476AD0",
2150 "o= c #496BD1",
2151 "p= c #4A6DD2",
2152 "q= c #4B6ED2",
2153 "r= c #4D71D3",
2154 "s= c #4E73D4",
2155 "t= c #4F74D4",
2156 "u= c #5075D5",
2157 "v= c #5276D5",
2158 "w= c #5377D7",
2159 "x= c #5278D7",
2160 "y= c #5277D6",
2161 "z= c #5378D7",
2162 "A= c #5379D8",
2163 "B= c #5379D9",
2164 "C= c #5278D8",
2165 "D= c #5178D7",
2166 "E= c #3355C0",
2167 "F= c #3556C1",
2168 "G= c #395AC6",
2169 "H= c #385AC7",
2170 "I= c #395BC7",
2171 "J= c #395EC9",
2172 "K= c #395FCA",
2173 "L= c #3B60CA",
2174 "M= c #3B60CB",
2175 "N= c #375DC7",
2176 "O= c #385EC8",
2177 "P= c #395FC9",
2178 "Q= c #3A60CA",
2179 "R= c #3D63CC",
2180 "S= c #4367CF",
2181 "T= c #476BD1",
2182 "U= c #4A6ED2",
2183 "V= c #4B6FD2",
2184 "W= c #4C6FD2",
2185 "X= c #4D70D1",
2186 "Y= c #4E71D2",
2187 "Z= c #4E72D2",
2188 "`= c #4E74D4",
2189 " - c #4E75D5",
2190 ".- c #4E75D4",
2191 "+- c #4F75D3",
2192 "@- c #5075D2",
2193 "#- c #5075D3",
2194 "$- c #5177D7",
2195 "%- c #5178D8",
2196 "&- c #4F75D5",
2197 "*- c #5076D5",
2198 "=- c #4F76D6",
2199 "-- c #5279D9",
2200 ";- c #3C52B1",
2201 ">- c #3656C3",
2202 ",- c #3757C5",
2203 "'- c #3758C6",
2204 ")- c #3759C6",
2205 "!- c #375BC6",
2206 "~- c #385CC7",
2207 "{- c #385DC8",
2208 "]- c #365CC6",
2209 "^- c #355BC6",
2210 "/- c #355CC6",
2211 "(- c #365DC7",
2212 "_- c #375EC8",
2213 ":- c #375CC6",
2214 "<- c #385EC6",
2215 "[- c #3A5FC7",
2216 "}- c #3C60C8",
2217 "|- c #3D61C9",
2218 "1- c #3E62CA",
2219 "2- c #4063CC",
2220 "3- c #4165CE",
2221 "4- c #4268D0",
2222 "5- c #4269D1",
2223 "6- c #436AD2",
2224 "7- c #446AD2",
2225 "8- c #456BD2",
2226 "9- c #496CD1",
2227 "0- c #4C6CD0",
2228 "a- c #4D6CCF",
2229 "b- c #4E6DD0",
2230 "c- c #4F6ECF",
2231 "d- c #4E6FCF",
2232 "e- c #4C70CF",
2233 "f- c #4A71D0",
2234 "g- c #4F6FCF",
2235 "h- c #4B71D0",
2236 "i- c #4A72D1",
2237 "j- c #4B73D4",
2238 "k- c #4F70D0",
2239 "l- c #4C73D3",
2240 "m- c #4C73D6",
2241 "n- c #4B72D2",
2242 "o- c #4B71D1",
2243 "p- c #4C73D7",
2244 "q- c #3354C0",
2245 "r- c #3152BE",
2246 "s- c #3052BE",
2247 "t- c #3051BF",
2248 "u- c #2E4FBF",
2249 "v- c #2E4FBE",
2250 "w- c #2E50BF",
2251 "x- c #2F50BF",
2252 "y- c #3156C4",
2253 "z- c #2F56C5",
2254 "A- c #2E57C5",
2255 "B- c #2F57C5",
2256 "C- c #3057C6",
2257 "D- c #3258C6",
2258 "E- c #3459C7",
2259 "F- c #365AC7",
2260 "G- c #385BC8",
2261 "H- c #3B5DCA",
2262 "I- c #3B5DCB",
2263 "J- c #3C5ECC",
2264 "K- c #3C60CD",
2265 "L- c #3C62CE",
2266 "M- c #3D65D0",
2267 "N- c #3D66D1",
2268 "O- c #4166D2",
2269 "P- c #4667D2",
2270 "Q- c #4A67D1",
2271 "R- c #4C68D0",
2272 "S- c #4C69CF",
2273 "T- c #4D6BCE",
2274 "U- c #4E6DCD",
2275 "V- c #4E6ECE",
2276 "W- c #4E6DCE",
2277 "X- c #4970D0",
2278 "Y- c #4770D0",
2279 "Z- c #4B6BCE",
2280 "`- c #4A6CCE",
2281 " ; c #496DCF",
2282 ".; c #476FD0",
2283 "+; c #4870D0",
2284 "@; c #486DCF",
2285 "#; c #242F79",
2286 "$; c #2F41AC",
2287 "%; c #2040B8",
2288 "&; c #2041B8",
2289 "*; c #2243B3",
2290 "=; c #2243B8",
2291 "-; c #2343B8",
2292 ";; c #2444B8",
2293 ">; c #2445B8",
2294 ",; c #2445B6",
2295 "'; c #2445B7",
2296 "); c #2444B9",
2297 "!; c #2949BE",
2298 "~; c #2649BF",
2299 "{; c #234BBF",
2300 "]; c #224CBF",
2301 "^; c #224AC0",
2302 "/; c #244CC0",
2303 "(; c #254DC0",
2304 "_; c #254DC1",
2305 ":; c #264DC2",
2306 "<; c #274EC3",
2307 "[; c #274CC3",
2308 "}; c #274DC4",
2309 "|; c #254DC5",
2310 "1; c #214EC5",
2311 "2; c #204FC6",
2312 "3; c #1F50C8",
2313 "4; c #2151C9",
2314 "5; c #2B53C8",
2315 "6; c #3154C7",
2316 "7; c #3255C6",
2317 "8; c #2F57C7",
2318 "9; c #2C58C9",
2319 "0; c #2D59CA",
2320 "a; c #2D58C9",
2321 "b; c #2E5BCC",
2322 "c; c #325ECC",
2323 "d; c #325ECB",
2324 "e; c #1F40B1",
2325 "f; c #1F40B2",
2326 "g; c #1F40B3",
2327 "h; c #2A44BD",
2328 "i; c #2845BE",
2329 "j; c #2745BE",
2330 "k; c #2646BF",
2331 "l; c #2546BE",
2332 "m; c #2347BF",
2333 "n; c #2147BF",
2334 "o; c #2048C0",
2335 "p; c #1D48C0",
2336 "q; c #1C48C0",
2337 "r; c #1B47C0",
2338 "s; c #1C48BF",
2339 "t; c #1E49BE",
2340 "u; c #214ABD",
2341 "v; c #244CBD",
2342 "w; c #264DBE",
2343 "x; c #254EC0",
2344 "y; c #214FC2",
2345 "z; c #1B51C5",
2346 "A; c #1C51C7",
2347 "B; c #2250C8",
2348 "C; c #2A52C8",
2349 "D; c #3254C6",
2350 "E; c #3355C5",
2351 "F; c #3154C8",
2352 "G; c #3355C6",
2353 "H; c #2F57C8",
2354 "I; c #2E58C9",
2355 "J; c #2E59C9",
2356 "K; c #3059C9",
2357 "L; c #2040B6",
2358 "M; c #2743BB",
2359 "N; c #2844BC",
2360 "O; c #2743BD",
2361 "P; c #2844BE",
2362 "Q; c #2844BD",
2363 "R; c #2346BE",
2364 "S; c #2047BF",
2365 "T; c #1E48C0",
2366 "U; c #1D47C0",
2367 "V; c #1D49BF",
2368 "W; c #1F49BF",
2369 "X; c #204ABE",
2370 "Y; c #254DBF",
2371 "Z; c #234EC0",
2372 "`; c #2050C1",
2373 " > c #1C51C3",
2374 ".> c #1F51C6",
2375 "+> c #2651C8",
2376 "@> c #2D53C7",
2377 "#> c #3155C6",
2378 "$> c #3155C7",
2379 "%> c #3355C7",
2380 "&> c #3254C7",
2381 "*> c #1E40B1",
2382 "=> c #2141B8",
2383 "-> c #2442B9",
2384 ";> c #2744BB",
2385 ">> c #2945BB",
2386 ",> c #2A45BB",
2387 "'> c #2944BA",
2388 ")> c #2745BB",
2389 "!> c #2545BC",
2390 "~> c #2246BD",
2391 "{> c #2047BE",
2392 "]> c #1F47BD",
2393 "^> c #1D48BE",
2394 "/> c #1E49C0",
2395 "(> c #1F4AC0",
2396 "_> c #214BBF",
2397 ":> c #244CBE",
2398 "<> c #254DBE",
2399 "[> c #244DBE",
2400 "}> c #224FBF",
2401 "|> c #2051C1",
2402 "1> c #2151C3",
2403 "2> c #2252C5",
2404 "3> c #2151C1",
2405 "4> c #2851C6",
2406 "5> c #2A50C6",
2407 "6> c #2E54C6",
2408 "7> c #1F51C2",
2409 "8> c #1D52C5",
2410 "9> c #2651C9",
2411 "0> c #2950C7",
2412 "a> c #2D40A5",
2413 "b> c #2040B0",
2414 "c> c #1F40B0",
2415 "d> c #223CAE",
2416 "e> c #233CAE",
2417 "f> c #253BAC",
2418 "g> c #253BAD",
2419 "h> c #233CB0",
2420 "i> c #213EB2",
2421 "j> c #1F3FB4",
2422 "k> c #1E40B6",
2423 "l> c #1F3FB7",
2424 "m> c #1E3EB8",
2425 "n> c #1F3FB8",
2426 "o> c #2040B7",
2427 "p> c #2141B6",
2428 "q> c #2140B7",
2429 "r> c #2241B6",
2430 "s> c #2342B5",
2431 "t> c #2442B6",
2432 "u> c #2543B5",
2433 "v> c #2643B4",
2434 "w> c #2544B6",
2435 "x> c #2346B8",
2436 "y> c #2247B9",
2437 "z> c #2048BC",
2438 "A> c #1F48BF",
2439 "B> c #2049C0",
2440 "C> c #214AC0",
2441 "D> c #224BBF",
2442 "E> c #234CBE",
2443 "F> c #244DBF",
2444 "G> c #234CBF",
2445 "H> c #264DC0",
2446 "I> c #274EBF",
2447 "J> c #264DBF",
2448 "K> c #254EBF",
2449 "L> c #2050C0",
2450 "M> c #1F51C1",
2451 "N> c #1E42A4",
2452 "O> c #263BA6",
2453 "P> c #253BA7",
2454 "Q> c #253CA7",
2455 "R> c #1E41A5",
2456 "S> c #1F40AF",
2457 "T> c #273AAC",
2458 "U> c #1E40B0",
2459 "V> c #1F40B5",
2460 "W> c #1F40B6",
2461 "X> c #1F40B8",
2462 "Y> c #1E40B8",
2463 "Z> c #1F3EB8",
2464 "`> c #203FB7",
2465 " , c #2240B6",
2466 "., c #2341B7",
2467 "+, c #2345B9",
2468 "@, c #2147BB",
2469 "#, c #2148BA",
2470 "$, c #2049BB",
2471 "%, c #2049BD",
2472 "&, c #2049BF",
2473 "*, c #224BBE",
2474 "=, c #244DBD",
2475 "-, c #244CBF",
2476 ";, c #182969",
2477 ">, c #273BAD",
2478 ",, c #2739AB",
2479 "', c #263AAC",
2480 "), c #243CAE",
2481 "!, c #233DAE",
2482 "~, c #213EAF",
2483 "{, c #1F3FB0",
2484 "], c #2040B4",
2485 "^, c #1F3FB6",
2486 "/, c #1E3EB7",
2487 "(, c #2240B7",
2488 "_, c #2341B6",
2489 ":, c #2543B4",
2490 "<, c #2644B3",
2491 "[, c #2544B5",
2492 "}, c #2545B5",
2493 "|, c #2547B6",
2494 "1, c #2548B7",
2495 "2, c #2349BA",
2496 "3, c #1F49BE",
2497 "4, c #2149BD",
2498 "5, c #2049BE",
2499 "6, c #214BBE",
2500 "7, c #2249BE",
2501 "8, c #234CBD",
2502 "9, c #2149BE",
2503 "0, c #1E49BF",
2504 "a, c #253BA9",
2505 "b, c #253BAB",
2506 "c, c #263AAB",
2507 "d, c #213DAF",
2508 "e, c #203EAF",
2509 "f, c #1D40AF",
2510 "g, c #1D40B0",
2511 "h, c #1E40B4",
2512 "i, c #2241B7",
2513 "j, c #2643B6",
2514 "k, c #2744B5",
2515 "l, c #2643B5",
2516 "m, c #2346B6",
2517 "n, c #2147B7",
2518 "o, c #2644B6",
2519 "p, c #2247B7",
2520 "q, c #2248B8",
2521 "r, c #2647B7",
2522 "s, c #2549B7",
2523 "t, c #2645B7",
2524 "u, c #2148B8",
2525 "v, c #2847B6",
2526 "w, c #2549B6",
2527 "x, c #2849B6",
2528 "y, c #2049B7",
2529 "z, c #2A49B5",
2530 "A, c #243BA4",
2531 "B, c #253BA5",
2532 "C, c #253BA6",
2533 "D, c #263AA7",
2534 "E, c #263AA8",
2535 "F, c #2739AA",
2536 "G, c #243CAD",
2537 "H, c #223DAE",
2538 "I, c #1F3EAF",
2539 "J, c #1E3FB0",
2540 "K, c #1D40B1",
2541 "L, c #1E3FB1",
2542 "M, c #1F3FB3",
2543 "N, c #1F3FB5",
2544 "O, c #2140B6",
2545 "P, c #2140B8",
2546 "Q, c #2744B4",
2547 "R, c #2746B6",
2548 "S, c #2947B6",
2549 "T, c #2946B5",
2550 "U, c #2A48B6",
2551 "V, c #3551A8",
2552 "W, c #1F399C",
2553 "X, c #143D9F",
2554 "Y, c #263BA5",
2555 "Z, c #273BA8",
2556 "`, c #273BAA",
2557 " ' c #263AAD",
2558 ".' c #233CAD",
2559 "+' c #213DAE",
2560 "@' c #203FB2",
2561 "#' c #2342B6",
2562 "$' c #2443B6",
2563 "%' c #2543B6",
2564 "&' c #2644B5",
2565 "*' c #133D9E",
2566 "=' c #263BA7",
2567 "-' c #263BA9",
2568 ";' c #273BA9",
2569 ">' c #263AAA",
2570 ",' c #2539AB",
2571 "'' c #2639AB",
2572 ")' c #253AAC",
2573 "!' c #243BAD",
2574 "~' c #223DAF",
2575 "{' c #203FB0",
2576 "]' c #2040B1",
2577 "^' c #2140B3",
2578 "/' c #2543B1",
2579 "(' c #2744AF",
2580 "_' c #1A3CA0",
2581 ":' c #1D3BA2",
2582 "<' c #233BA4",
2583 "[' c #263AA5",
2584 "}' c #253AA5",
2585 "|' c #263AA6",
2586 "1' c #263BA4",
2587 "2' c #243BA5",
2588 "3' c #263BA8",
2589 "4' c #223EAF",
2590 "5' c #3B4CA5",
2591 "6' c #1D379A",
2592 "7' c #1E389C",
2593 "8' c #1E399F",
2594 "9' c #1F3BA2",
2595 "0' c #1F3BA3",
2596 "a' c #213BA4",
2597 "b' c #233AA3",
2598 "c' c #243AA3",
2599 "d' c #2539A4",
2600 "e' c #253AA6",
2601 "f' c #243BA7",
2602 "g' c #253CAA",
2603 "h' c #253CAC",
2604 "i' c #253CAD",
2605 "j' c #253CAE",
2606 "k' c #243DAE",
2607 "l' c #213FAF",
2608 "m' c #223FAF",
2609 "n' c #2040AF",
2610 "o' c #253D93",
2611 "p' c #1D3894",
2612 "q' c #1F379A",
2613 "r' c #1E389B",
2614 "s' c #1D399C",
2615 "t' c #1C3A9D",
2616 "u' c #1B3A9D",
2617 "v' c #183B9E",
2618 "w' c #163C9E",
2619 "x' c #153C9E",
2620 "y' c #163B9D",
2621 "z' c #173B9D",
2622 "A' c #193A9D",
2623 "B' c #1C3A9E",
2624 "C' c #1F3AA1",
2625 "D' c #223AA4",
2626 "E' c #253BA8",
2627 "F' c #273BA7",
2628 "G' c #263CAB",
2629 "H' c #263CAC",
2630 "I' c #243EAE",
2631 "J' c #273BAC",
2632 "K' c #2A3795",
2633 "L' c #1F389B",
2634 "M' c #1D389B",
2635 "N' c #1C399C",
2636 "O' c #1B399C",
2637 "P' c #1A3A9D",
2638 "Q' c #1D399B",
2639 "R' c #1B399B",
2640 "S' c #1A3A9C",
2641 "T' c #1B3A9F",
2642 "U' c #1D3AA0",
2643 "V' c #203BA2",
2644 "W' c #203BA3",
2645 "X' c #2639A6",
2646 "Y' c #1B3692",
2647 "Z' c #1C3794",
2648 "`' c #1D3796",
2649 " ) c #1E3898",
2650 ".) c #1E389A",
2651 "+) c #1F399B",
2652 "@) c #1A399C",
2653 "#) c #193A9E",
2654 "$) c #1A3BA0",
2655 "%) c #1C3BA2",
2656 "&) c #1D3CA3",
2657 "*) c #203CA4",
2658 "=) c #223BA5",
2659 "-) c #3C4699",
2660 ";) c #2B4595",
2661 ">) c #1C3793",
2662 ",) c #1D3895",
2663 "') c #1E3897",
2664 ")) c #1F3998",
2665 "!) c #1F3999",
2666 "~) c #1F399A",
2667 "{) c #1E399C",
2668 "]) c #1C3B9E",
2669 "^) c #1D3BA0",
2670 "/) c #1E3CA2",
2671 "() c #223CA5",
2672 "_) c #243CA6",
2673 ":) c #596FA9",
2674 "<) c #3B4894",
2675 "[) c #314993",
2676 "}) c #29499F",
2677 "|) c #28489E",
2678 "1) c #2B4BA1",
2679 "2) c #2C4BA1",
2680 "3) c #2D4CA2",
2681 "4) c #2E4CA3",
2682 "5) c #2F4CA4",
2683 "6) c #2E4CA4",
2684 "7) c #2F4DA3",
2685 "8) c #2F4DA4",
2686 "9) c #D3D5D2",
2687 "0) c #3B4794",
2688 "a) c #314791",
2689 "b) c #304892",
2690 "c) c #304893",
2691 "d) c #2F4995",
2692 "e) c #2F4997",
2693 "f) c #2D4A9A",
2694 "g) c #2A4A9D",
2695 "h) c #294A9F",
2696 "i) c #284AA0",
2697 "j) c #294AA0",
2698 "k) c #2B4AA1",
2699 "l) c #2D4CA3",
2700 "m) c #C9CAC9",
2701 "n) c #455D9B",
2702 "o) c #242F78",
2703 "p) c #1B2F85",
2704 "q) c #C6C3C8",
2705 "r) c #B5B2B6",
2706 "s) c #B5B7B4",
2707 "t) c #B5B7B3",
2708 "u) c #B5B2B5",
2709 "v) c #B5B3B4",
2710 "w) c #B5B5B4",
2711 "x) c #B5B6B3",
2712 "y) c #B5B4B4",
2713 "z) c #B5B3B5",
2714 "A) c #B5B4B5",
2715 "B) c #B5B5B5",
2716 "C) c #B5B5B3",
2717 "D) c #B5B5B6",
2718 "E) c #BAC3BE",
2719 "F) c #B9C3BD",
2720 "G) c #C1C3C4",
2721 "H) c #BFC3C2",
2722 "I) c #B9C3BE",
2723 "J) c #BBC3BF",
2724 "K) c #BDC3C1",
2725 "L) c #C0C3C3",
2726 "M) c #BEC3C1",
2727 "N) c #C2C3C5",
2728 "O) c #E6E3E8",
2729 "P) c #E0E2DF",
2730 "Q) c #E1E1E1",
2731 "R) c #E2E1E3",
2732 "S) c #E4E1E6",
2733 "T) c #E4E2E7",
2734 "U) c #E4E2E6",
2735 "V) c #E3E3E4",
2736 "W) c #E2E3E3",
2737 "X) c #E1E3E2",
2738 "Y) c #E3E3E3",
2739 "Z) c #E3E3E2",
2740 "`) c #EBEDEA",
2741 " ! c #EAECE9",
2742 ".! c #E9EBE8",
2743 "+! c #ECEEEB",
2744 ". . + @ # $ $ $ $ $ $ $ % $ $ $ $ $ % $ $ $ $ $ $ % $ $ $ $ $ % $ $ $ $ $ $ $ $ $ % $ $ & * = - ; > , , ' ) ! ! ~ { ] ^ / ( _ : < [ } | | 1 2 3 3 4 4 4 4 4 4 4 5 6 4 4 4 5 6 7 8 9 4 5 6 7 8 9 6 7 8 9 ",
2745 "0 a b % $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ c d d d d $ $ $ $ $ c d e f g h i i i i j k l m n o p q r s t u v w x y z 4 A B C D 9 9 E 9 E F G H I F J K L L L L J K L L L L L L L L ",
2746 "@ % M N O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!.~.{.].^./.(._.:.<.[.}.|.1.2.3.4.5.6.7.8.9.0.a.b.b.b.b.b.b.",
2747 "c.$ d.O e.f.g.g.g.h.g.g.g.g.g.h.h.g.g.g.g.g.h.h.g.g.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.`. +.+++@+#+$+@+$+%+&+*+=+$+-+;+>+,+'+)+!+;+>+,+~+,+>+,+~+,+",
2748 "$ {+N N f.f.f.f.h.h.h.g.f.f.h.h.h.h.g.f.f.h.h.h.h.]+^+/+(+h._+:+<+[+}+|+1+2+3+4+5+6+7+8+9+0+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+A+B+.+C+D+E+D+F+G+H+C+I+F+G+J+K+L+H+F+G+J+K+L+H+J+H+J+H+",
2749 "{+{+N N M+M+h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.N+N+h.h.(+O+P+P+Q+R+S+T+U+V+W+X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@^@/@(@_@:@<@[@[@y+}@|@1@A+1@2@3@ +2@4@2@5@C+D+6@D+7@5@C+D+6@I+C+D+6@I+",
2750 "{+{+8@N M+M+h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.9@9@0@N+a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@A@B@q+r+C@D@E@F@G@H@_@I@J@K@<@L@M@N@O@P@Q@R@S@T@A+A+U@V@W@W@A+2@U@V@W@W@U@V@W@W@",
2751 "{+{+8@N f.M+h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.(+(+(+9@9@X@Y@Z@e@`@ #.#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#z@^#/#(#p+_#r+:#s+t+<#[#}#|#|#1#_@|#_@_@2#L@3#4#y+y+5#z+z+z+5#z+z+z+z+A+A+A+A+A+",
2752 "{+{+8@8@f.f.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.(+6#7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#&@p#q#r#s#t#u#v#w#x#x#y#y#z#A#B#C#D#E#E#F#G#H#F#H#H#u+v+I#J#K#L#J@J@M#N#O#P#M#M#M#N#M#Q#Q#R#",
2753 "$ {+8@e.f.f.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.S#l.7#T#U#V#W#X#Y#Z#`# $f#g###.$+$@$#$$$$@%$&$*$=$-$;$>$,$'$)$!$~$~${$]$^$/$($($_$_$:$<$_$<$[$}$|$|$1$2$2$3$}#4$5$6$7$8$8$9$8$8$8$0$8$",
2754 "$ {+a$e.f.f.h.h.h.h.h.h.h.h.h.b$h.c$c$c$c$c$d$c$c$c$c$c$c$c$c$c$c$e$e$7#f$g$h$i$X#j$k$l$m$n$o$p$q$r$l@s$t$u$v$w$x$y$z$A$B$C$D$E$F$G$G$H$I$J$J$K$K$J$L$L$L$L$L$M$N$O$P$Q$R$S$T$U$1$V$T$W$X$Y$1$V$Y$Z$`$ %",
2755 "$ $ a$a$f.f.b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$b$.%b$b$b$.%d$+%+%@%h.e$l.#%$%h$%%&%*%=%-%;%>%,%'%)%!% @ @~%{%]%^%/%(%w$_%:%<%[%}%|%D$1%2%3%4%5%4%4%6%5%5%4%4%4%5%7%5%8%9%L$0%a%a%a%P$b%P$P$z#z#z#P$c%c%c%",
2756 "$ $ 8@e.f.f.d%b$b$b$b$b$d%b$b$b$b$b$b$e%f%b$b$b$b$b$g%h%b$.%i%i%j%k%l%m%X@n%h$o%&%p%q%`#r%s%t%u%v%w%x%y% @z%A%B%C%D%E%F%G%:%H%I%[%J%}%K%|%D$K%D$D$L%M%M%M%M%M%D$N%O%i+P%j+Q%R%S%T%0%U%V%W%W%W%W%X%X%X%X%",
2757 "$ $ 8@8@f.f.d%d%b$b$b$b$d%d%b$b$b$h%Y%Z%Z%h%f%f%h%Y%`%`% &h%h%.&+&@&#&$&X@%&&&*&=&-&j$Z#+#;&>&,&'&)&)&!&~&{&]&^&/&(&^%_&(%:&<&[&}&|&1&A$A$2&3&4&4&5&B$6&7&B$7&8&9&6&7&0&a&a&i+i+i+b&a&a&j+U%c&U%j+U%c&U%",
2758 "$ $ 8@8@d&e&d%d%d%d%d%d%d%d%d%d%d%`%d%d%d%d%`%`%`%d%d%d%d%`%`%f&g&h&j%i&j&k&l&m&=&X#Y#n&o&p&q&r&>&s&t&t&u&v&w&x&y&{&z&A&B&C&D&(%(%F%F%E&F&}&}&|&G&|&H&1&I%I&A$1&}&z$z$J&K&L&M&N&O&0&P&Q&0&a&R&a&a&a&R&a&",
2759 "{+$ 8@8@e&e&d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%`%f&S&T&U&V&W&Y@X&Y&Z&`& *.*+*@*#*@*r&$*#*r&%*&***=*-*;*y&z%A%z&A&A&>*B&,*,*'*)*!*!*~*{*F&}&{*}&{*]*G%G%y$^*/*J&(*2&_*:*<*=$[*}*<*=$<*|*1*",
2760 "{+{+8@2*e&e&d%d%d%d%d%d%d%d%d%e&3*4*4*4*4*4*5*4*4*4*4*4*4*4*4*4*`%f&6*6*7*8*9*0*a*b*c*d*e*f*g*h*i*j*+*k*h*l*m*n*m*o*p*q*r*s*t*u*v*w*x*y*y*z*A*B*C*D*E*F*G*E*G*F*H*G*F*~*]*{*I*x$J*K*L*G%K*M*o#o#I&N*O*O*",
2761 "{+{+8@2*e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&P*e&e&e&e&e&e&P*P*e&e&e&P*P*5*Q*R*S*T*U*V*W*X*Y*Z*`*d* =.=+=@=#=$=%=g@&=*===-=i*;=l*>=,=q*'=s*)=k@!=x*~={=]=^=/=(=_=:=(=<=<=]=[=}=|=]=]=1=2=3=|=4=5=2=2=2=3=6=6=6=",
2762 "{+{+7=e.e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&e&P*P*8=9=0=a=b=U*c=d=e=f=e@#=g=h=i=i=j=k=k=l=%===m=n=o=p=q=,=r=s=t=u=v=v*w=x=x=y=z=z=A=z=A=B=C=B=D=C=B=x=B=B=B=B=B=B=B=B=B=B=B=B=B=B=",
2763 "{+{+7=7=e&e&e&e&E=E=e&e&e&e&E=E=E=e&e&e&e&E=E=E=e&e&e&e&E=E=e&e&e&e&E=E=E=F=d%G=G=H=I=J=K=L=M=R+}+N=O=P=Q=j=i=h=R=e@@=S=-=T=h@l*U=V=W=X=Y=Z=`= - - -.-+-@- -#-$-%-$-&-*-$-=-%-----C=$-%---------B=B=B=B=",
2764 "{+{+7=7=;-;-E=E=E=E=E=E=E=E=E=E=E=E=E=E=E=E=E=E=E=E=E=E=E=E=E=E=E=E=E=E=E=E=>-,-'-)-!-6*~-{-{-]-^-/-/-(-_-:-N=<-[-}-|-1-2-3- =4-5-6-7-8-9-0-0-a-b-c-d-e-f-g-h-h-i-j-k-h-h-i-j-l-m-n-o-i-j-l-m-n-j-l-p-n-",
2765 "{+{+7=7=;-;-E=E=E=E=E=E=E=E=q-r-s-t-t-u-u-v-v-v-u-w-x-u-u-u-u-u-u-u-u-v-v-u-u-u-u-u-v-v-u-u-u-u-v-v-u-y-z-A-B-C-D-E-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-U-V-W-V-e-X-Y-Z-`- ;.;Y-N N +;@;.;Y-N N N N N N N ",
2766 "#;#;d&d&$;$;%;%;%;%;%;%;%;%;&;*;=;-;-;-;;;>;,;>;>;>;;;>;>;>;>;>;>;>;>;>;';);>;>;>;>;>;';>;>;>;>;>;';);!;~;{;];^;/;(;_;_;:;<;[;};};|;1;2;3;4;5;6;7;8;9;9;0;a;0;0;b;h.a;0;0;b;h.c;h.d;0;b;h.c;h.d;h.c;h.d;",
2767 "#;#;;-;-$;$;e;e;e;e;e;e;e;e;e;e;e;f;f;f;f;e;e;e;f;f;f;f;f;f;f;f;f;f;f;f;g;%;f;f;f;f;f;g;f;f;f;f;f;g;%;h;i;j;k;l;m;n;o;p;q;r;r;s;t;u;v;w;x;y;z;A;B;C;6;D;E;F;G;G;H;I;F;G;G;H;I;J;J;K;G;H;I;J;J;K;I;J;J;K;",
2768 "#;#;;-;-$;$;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;L;e;e;e;e;e;e;e;e;e;e;e;e;L;M;N;O;P;Q;i;i;k;R;S;T;U;q;q;V;W;X;{;Y;Z;`; >.>+>@>#>+>$>6;#>#>+>%>&>G;G;G;G;G;&>G;G;G;G;G;G;G;G;G;",
2769 "#;#;d.;-$;$;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;*>e;e;e;e;e;e;e;e;e;e;e;e;*>=>->;>>>,>'>'>)>!>~>{>]>^>^>V;V;/>(>_>:><>[>}>|>1>2>3>2>4>5>6>7>8>9>0>G;G;G;G;9>0>G;G;G;G;G;G;G;G;",
2770 "#;#;d.d.a>a>e;e;e;e;e;e;e;e;e;e;b>b>c>c>c>c>c>b>e;e;e;e;e;e;e;e;e;e;e;e;e;e;d>e>f>g>h>i>j>k>l>l>m>m>n>n>o>o>p>q>r>r>s>t>u>v>v>u>w>';x>y>z>t;A>B>C>D>E>E>F>G>F>H>H>I>F>Y;J>w;K>L>K>M>J>w;K>L>K>M>K>L>K>M>",
2771 "#;#;d.d.a>a>N>e;N>O>O>O>N>e;N>O>O>P>Q>R>S>R>Q>O>O>O>N>e;N>O>O>O>N>e;N>N>O>T>e;e;e;U>U>U>U>f;V>W>o>o>o>o>X>X>Y>Y>n>n>Z>Z>`> ,.,t>t>u>u>w>+,@,#,$,%,A>&,*,=,B>[>-,w;<>C>[>-,w;w;w;w;w;-,w;w;w;w;w;w;w;w;w;",
2772 "#;;,;-;-a>a>N>N>N>O>O>O>N>N>N>O>O>O>O>N>N>N>O>O>O>O>N>N>N>O>O>O>N>N>N>N>O>>,,,,,,,',g>),!,~,{,{,*>U>e;f;],o>%;o>^,^,/,/,l>q>(,_,t>u>:,<,v>[,},|,1,2,%,%,3,4,5,6,7,8,9,5,6,0,G>G>Y;G>6,0,G>G>Y;G>G>G>Y;G>",
2773 ";,;,;-;-O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>P>a,b,',',c,c,f>),e>d,e,{,{,U>U>f,f,U>U>g,g,*>g;h,^,^,`>`>q>i,t>j,k,k,l,w>m,n,o,p,q,r,s,t,p,u,v,w,x,y,z,u,v,w,x,y,z,w,x,y,z,",
2774 ";,;,b b O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>A,A,A,B,C,D,E,F,c,',g>G,!,H,~,e,{,I,J,J,K,K,U>f,f,J,L,M,N,L;O,i,P,.,l,Q,k,k,k,k,k,k,R,v,k,k,k,R,v,S,T,U,k,R,v,S,T,U,v,S,T,U,",
2775 ";,;,b V,W,W,X,X,O>X,X,X,X,X,O>X,X,X,X,X,X,O>X,X,X,X,X,X,O>X,X,X,X,X,O>X,X,O>O>O>O>B,B,B,B,Y,O>O>Z,`,T>T> '',g>.'+'e,{,{,e,+'+'e,e,{,J,K,e;@'N,O,#'$'%'%'j,%'j,&'k,k,%'j,&'k,k,k,k,k,&'k,k,k,k,k,k,k,k,k,",
2776 ";,;,b V,W,W,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,*'O>O>O>O>O>O>O>O>B,B,A,A,B,C,='-'`,;'>'>',''')'!'!'e>e>~'~'~,~,{'{,*>*>e;]']']']']']'^'/']']']'^'/':,(':,]'^'/':,(':,/':,(':,",
2777 ";,;,V,V,W,W,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_':'<'['}'|'|'O>O>O>O>O>O>O>Y,Y,1'1'B,B,2'2'C,3'-'>'c,)')'!'),4'{'e;]'e;*>*>e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;e;",
2778 ";,;,5'5'W,W,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,W,6'6'6'7'8'9'0'a'b'c'd'd'}'}'O>O>O>O>O>O>O>O>Y,1'1'['['e'e'f'g'h'i'j'k'G,),!,l'j'm'n'b>b>),m'b>e;e;e;e;e;b>e;e;e;e;e;e;e;e;e;",
2779 ";,;,b b o'o'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'W,q'q'q'r's't'u'v'w'x'y'z'A'B'C'D'2'2'B,B,O>O>O>O>O>O>O>O>O>O>O>Y,Y,C,C,='='='E'F'3'3'3'G'Z,='F'F'G'H'I'J'F'F'G'H'I'J'G'H'I'J'",
2780 ";,;,b b K'K'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'W,W,W,W,W,L'L'q'r'M'N'O'P'u'N's'Q'R'S'A'T'U'C'V'9'0'W'D'}'X'|'O>O>B,B,O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>",
2781 ";,;,b b K'K'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'p'Y'Y'Y'Z'`' ).)+)+)+)W,W,W,W,L'L'q'q'r'r's'M'N'P'@)A'#)$)%)&)*)=)B,|'|'O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>O>",
2782 "{+;,$ -);)K'p'p'o'p'p'p'p'p'o'p'p'p'p'p'p'o'p'p'p'p'p'p'o'p'p'p'p'p'o'o'p'p'p'p'p'p'p'p'p'p'>)>)Y'Y'>)Z',)')))!)~)+)W,W,W,W,W,W,W,W,W,W,W,L'L'{)s't'])^)/)])/)/)O>()])/)/)O>()O>_)O>/)O>()O>_)O>()O>_)O>",
2783 ":);,;,;)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)[)M M M M M M M M M M M M M M M M M M })})|)|)})M M 1)2)3)4)5)6)6)6)7)7)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)",
2784 "9)#;;,;,$ -)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)0)a)a)a)b)c)d)e)f)g)h)i)i)j)j)M M M M M M M M M M M })})})})M k)k)M M k)l)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)8)",
2785 "+ 9)m)n)$ #;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;o)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)p)",
2786 "+ + 9)a m)q)r)s)r)s)r)s)r)s)r)r)s)r)s)r)s)r)r)s)r)s)r)s)r)s)r)s)r)s)r)s)r)t)u)v)w)x)x)w)y)z)A)A)B)B)B)B)w)w)C)C)w)w)B)B)B)B)B)w)w)w)w)B)B)B)B)B)B)B)B)B)B)B)B)B)B)B)B)B)B)B)B)B)D)B)B)B)B)B)D)B)B)B)D)B)",
2787 ". + + 9)9)9)q)E)q)E)q)E)q)E)q)q)E)q)E)q)E)q)q)E)q)E)q)E)q)E)q)E)q)E)q)E)q)F)G)H)E)I)J)K)H)L)L)L)L)L)L)L)H)H)M)M)H)H)L)L)G)L)L)H)H)H)H)L)L)L)L)L)L)L)L)L)L)L)L)L)L)L)L)L)L)L)L)L)N)L)L)L)L)L)N)L)L)L)N)L)",
2788 ". . 0 . + O)P)O)P)O)P)O)P)O)P)P)O)P)O)P)O)P)P)O)P)O)P)O)P)O)P)O)P)O)P)O)P)O)Q)R)S)T)U)V)W)X)W)W)V)V)V)V)V)V)V)V)Y)Y)Z)Z)Y)Z)Z)Y)Y)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)V)Y)V)V)V)V)V)Y)V)V)V)Y)V)",
2789 ". . . 0 0 0 . 0 0 0 + 0 + 0 + 0 + 0 + 0 + 0 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 0 `) !+ + + .! !`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)+!`)`)`)`)`)+!`)`)`)+!`)"};
2790 
2791 
2792 static char * listviewhighcornerright_xpm[] = {
2793 "100 46 780 2",
2794 " c None",
2795 ". c #6A779D",
2796 "+ c #6C789C",
2797 "@ c #6C789D",
2798 "# c #6B789D",
2799 "$ c #6A779E",
2800 "% c #66759E",
2801 "& c #64749E",
2802 "* c #63749E",
2803 "= c #61739D",
2804 "- c #576D9B",
2805 "; c #556C9C",
2806 "> c #4D679D",
2807 ", c #4A649D",
2808 "' c #49629D",
2809 ") c #465E9C",
2810 "! c #40579C",
2811 "~ c #3B5394",
2812 "{ c #2C4E97",
2813 "] c #314993",
2814 "^ c #2B4595",
2815 "/ c #1B4296",
2816 "( c #253D93",
2817 "_ c #19418F",
2818 ": c #0F3C96",
2819 "< c #42599E",
2820 "[ c #758DC3",
2821 "} c #E8EAE7",
2822 "| c #EEF0ED",
2823 "1 c #FBFBFC",
2824 "2 c #6F7D9B",
2825 "3 c #6F7D9A",
2826 "4 c #6E7B9C",
2827 "5 c #67759E",
2828 "6 c #63739E",
2829 "7 c #62739D",
2830 "8 c #596F9C",
2831 "9 c #4A639D",
2832 "0 c #47609C",
2833 "a c #445B9F",
2834 "b c #3E5697",
2835 "c c #2E509A",
2836 "d c #2D509A",
2837 "e c #2D4F99",
2838 "f c #2D4F98",
2839 "g c #28418A",
2840 "h c #3E51A3",
2841 "i c #D0D3DC",
2842 "j c #A1B6EF",
2843 "k c #A2B6F0",
2844 "l c #A1B6F0",
2845 "m c #A3B6F0",
2846 "n c #A0B6EF",
2847 "o c #9DB6EE",
2848 "p c #9CB5EF",
2849 "q c #9CB2F0",
2850 "r c #9FB5EE",
2851 "s c #9CB4EB",
2852 "t c #9AB3EC",
2853 "u c #9AB0EC",
2854 "v c #9DB3EB",
2855 "w c #9BB4EC",
2856 "x c #9BB4EE",
2857 "y c #9BB1EF",
2858 "z c #9BB0F0",
2859 "A c #90ACF0",
2860 "B c #93ABEE",
2861 "C c #91A8EB",
2862 "D c #8BA3E8",
2863 "E c #88A1E7",
2864 "F c #809DE9",
2865 "G c #7A99E8",
2866 "H c #7491E5",
2867 "I c #698AE4",
2868 "J c #6184E3",
2869 "K c #507EDC",
2870 "L c #4E7CDB",
2871 "M c #4F7DDC",
2872 "N c #5479DA",
2873 "O c #567BDC",
2874 "P c #577CDD",
2875 "Q c #5074DA",
2876 "R c #5174DB",
2877 "S c #5175DC",
2878 "T c #5276DD",
2879 "U c #4D71DE",
2880 "V c #4C72D8",
2881 "W c #3A6CE0",
2882 "X c #2B49A6",
2883 "Y c #E0E2DF",
2884 "Z c #93AAE9",
2885 "` c #94A9E8",
2886 " . c #94AAE9",
2887 ".. c #93A9E9",
2888 "+. c #92AAE9",
2889 "@. c #8DA9E8",
2890 "#. c #8CA7E9",
2891 "$. c #92ABE9",
2892 "%. c #8EAAE9",
2893 "&. c #8EA9E9",
2894 "*. c #8FAAE9",
2895 "=. c #8CA8E9",
2896 "-. c #8CA2E7",
2897 ";. c #86A1E6",
2898 ">. c #839EE9",
2899 ",. c #7F9CE9",
2900 "'. c #7A97E8",
2901 "). c #7693E7",
2902 "!. c #6E8EE8",
2903 "~. c #678AE9",
2904 "{. c #5D84E3",
2905 "]. c #577CDF",
2906 "^. c #4E77DF",
2907 "/. c #4A70DB",
2908 "(. c #4870DB",
2909 "_. c #4870DC",
2910 ":. c #4770E3",
2911 "<. c #496FDC",
2912 "[. c #486EDB",
2913 "}. c #466FE4",
2914 "|. c #466EE3",
2915 "1. c #4167D9",
2916 "2. c #4066D8",
2917 "3. c #3F66D8",
2918 "4. c #3D64D7",
2919 "5. c #3960DA",
2920 "6. c #476DD9",
2921 "7. c #446EE5",
2922 "8. c #305EC8",
2923 "9. c #8EAAE8",
2924 "0. c #8FAAE8",
2925 "a. c #91AAE9",
2926 "b. c #8FA9E8",
2927 "c. c #8BA8E8",
2928 "d. c #8AA7E9",
2929 "e. c #8BA5EA",
2930 "f. c #8AA7E8",
2931 "g. c #87A2E6",
2932 "h. c #859FE8",
2933 "i. c #7F9DE8",
2934 "j. c #7C9AE8",
2935 "k. c #7B95E7",
2936 "l. c #7090E8",
2937 "m. c #6B8BE9",
2938 "n. c #6386E6",
2939 "o. c #5881E1",
2940 "p. c #5479DE",
2941 "q. c #4D74DE",
2942 "r. c #476EDB",
2943 "s. c #446EE1",
2944 "t. c #446EE0",
2945 "u. c #446EDF",
2946 "v. c #446DE0",
2947 "w. c #426ADF",
2948 "x. c #3C64DA",
2949 "y. c #4360CC",
2950 "z. c #D3D5D2",
2951 "A. c #E6E3E8",
2952 "B. c #8DA2E7",
2953 "C. c #8CA6EA",
2954 "D. c #8DA3E9",
2955 "E. c #88A2E7",
2956 "F. c #87A1E7",
2957 "G. c #8AA1E7",
2958 "H. c #849EE9",
2959 "I. c #7D9AE9",
2960 "J. c #7B98E8",
2961 "K. c #7796E5",
2962 "L. c #7191E7",
2963 "M. c #688CE9",
2964 "N. c #6687E5",
2965 "O. c #5C83E1",
2966 "P. c #557BDE",
2967 "Q. c #4F76DE",
2968 "R. c #4C72DE",
2969 "S. c #456EDF",
2970 "T. c #426AD9",
2971 "U. c #4269D9",
2972 "V. c #4269D8",
2973 "W. c #3D64D9",
2974 "X. c #3A61DA",
2975 "Y. c #345ED6",
2976 "Z. c #335ECF",
2977 "`. c #C6C3C8",
2978 " + c #86A1E7",
2979 ".+ c #87A2E7",
2980 "++ c #87A0E7",
2981 "@+ c #859EE8",
2982 "#+ c #849DE9",
2983 "$+ c #7E9BE9",
2984 "%+ c #7A99E9",
2985 "&+ c #7A95E5",
2986 "*+ c #7593E7",
2987 "=+ c #6F8EE9",
2988 "-+ c #668AE5",
2989 ";+ c #6386E0",
2990 ">+ c #5B82DF",
2991 ",+ c #5379DE",
2992 "'+ c #5075DE",
2993 ")+ c #4B6FDC",
2994 "!+ c #446AD7",
2995 "~+ c #4269D6",
2996 "{+ c #4269D5",
2997 "]+ c #3E65D7",
2998 "^+ c #C9CAC9",
2999 "/+ c #869EE9",
3000 "(+ c #859FE9",
3001 "_+ c #849FE9",
3002 ":+ c #829DE8",
3003 "<+ c #819DE8",
3004 "[+ c #7B9AE9",
3005 "}+ c #7A96E6",
3006 "|+ c #7290E8",
3007 "1+ c #698CE6",
3008 "2+ c #6689E0",
3009 "3+ c #5D84E0",
3010 "4+ c #587FDF",
3011 "5+ c #5377DD",
3012 "6+ c #4B74DE",
3013 "7+ c #496BD8",
3014 "8+ c #7C9BE9",
3015 "9+ c #7E9CE9",
3016 "0+ c #7D9AEA",
3017 "a+ c #7D9BEA",
3018 "b+ c #7D98E8",
3019 "c+ c #7C98E8",
3020 "d+ c #7796E4",
3021 "e+ c #7592E6",
3022 "f+ c #7390E1",
3023 "g+ c #698DE0",
3024 "h+ c #6588DE",
3025 "i+ c #5E84E0",
3026 "j+ c #5880DF",
3027 "k+ c #5479DC",
3028 "l+ c #4F75DE",
3029 "m+ c #4A6FDB",
3030 "n+ c #436AD7",
3031 "o+ c #3F65D7",
3032 "p+ c #BAC3BE",
3033 "q+ c #7B9AE8",
3034 "r+ c #7B9AEA",
3035 "s+ c #7A9AEA",
3036 "t+ c #7B99E9",
3037 "u+ c #7D97E7",
3038 "v+ c #7D95E6",
3039 "w+ c #7D95E5",
3040 "x+ c #7C95E6",
3041 "y+ c #7493E3",
3042 "z+ c #7290DF",
3043 "A+ c #6C8DDE",
3044 "B+ c #6B89E1",
3045 "C+ c #6486DF",
3046 "D+ c #5D81DF",
3047 "E+ c #567DDE",
3048 "F+ c #4F73DE",
3049 "G+ c #496EDA",
3050 "H+ c #355ED6",
3051 "I+ c #345ED5",
3052 "J+ c #7E95E5",
3053 "K+ c #7C97E8",
3054 "L+ c #7C97E7",
3055 "M+ c #7B94E6",
3056 "N+ c #7A95E4",
3057 "O+ c #7695E5",
3058 "P+ c #7694E4",
3059 "Q+ c #7994E6",
3060 "R+ c #7995E4",
3061 "S+ c #7594E4",
3062 "T+ c #7391E2",
3063 "U+ c #6E8EDE",
3064 "V+ c #6B8ADE",
3065 "W+ c #6688DF",
3066 "X+ c #5F84E0",
3067 "Y+ c #5980E0",
3068 "Z+ c #4D72DD",
3069 "`+ c #456BD7",
3070 " @ c #4168D6",
3071 ".@ c #3C64D7",
3072 "+@ c #335ED0",
3073 "@@ c #4659C7",
3074 "#@ c #7292E1",
3075 "$@ c #7392E1",
3076 "%@ c #7492E1",
3077 "&@ c #718FDF",
3078 "*@ c #6F8EDE",
3079 "=@ c #6D8BDE",
3080 "-@ c #6B88DF",
3081 ";@ c #597FDF",
3082 ">@ c #557ADD",
3083 ",@ c #5176DC",
3084 "'@ c #4D74DD",
3085 ")@ c #496DDA",
3086 "!@ c #3860D8",
3087 "~@ c #7391E0",
3088 "{@ c #7290DE",
3089 "]@ c #6D8EDD",
3090 "^@ c #6D8DDD",
3091 "/@ c #7190E0",
3092 "(@ c #6C8DDD",
3093 "_@ c #6B89DF",
3094 ":@ c #6487E0",
3095 "<@ c #6085DF",
3096 "[@ c #5F81DE",
3097 "}@ c #567EDE",
3098 "|@ c #4F74D9",
3099 "1@ c #466BD7",
3100 "2@ c #4067D5",
3101 "3@ c #3C63D7",
3102 "4@ c #335ED3",
3103 "5@ c #335ED1",
3104 "6@ c #718EDD",
3105 "7@ c #728EDD",
3106 "8@ c #748EDD",
3107 "9@ c #708EDD",
3108 "0@ c #6F8DDD",
3109 "a@ c #6E8DDD",
3110 "b@ c #6C8ADE",
3111 "c@ c #6C89DF",
3112 "d@ c #6988DF",
3113 "e@ c #6387DF",
3114 "f@ c #6282DE",
3115 "g@ c #5681E0",
3116 "h@ c #577BDD",
3117 "i@ c #5277DB",
3118 "j@ c #4D73D8",
3119 "k@ c #4A70D8",
3120 "l@ c #436AD5",
3121 "m@ c #3F66D6",
3122 "n@ c #3C63D8",
3123 "o@ c #3960D8",
3124 "p@ c #3860D7",
3125 "q@ c #335ED2",
3126 "r@ c #345ED4",
3127 "s@ c #6C88DF",
3128 "t@ c #6D88DF",
3129 "u@ c #6B89DE",
3130 "v@ c #6888DF",
3131 "w@ c #6587E0",
3132 "x@ c #6989DF",
3133 "y@ c #6687E0",
3134 "z@ c #6287E0",
3135 "A@ c #6281DD",
3136 "B@ c #5881E0",
3137 "C@ c #557ADB",
3138 "D@ c #5176D9",
3139 "E@ c #4E75D7",
3140 "F@ c #4A6FD8",
3141 "G@ c #476BD6",
3142 "H@ c #4067D6",
3143 "I@ c #3C62D7",
3144 "J@ c #3C60D4",
3145 "K@ c #365ED1",
3146 "L@ c #345ED3",
3147 "M@ c #6786DF",
3148 "N@ c #5F85E0",
3149 "O@ c #5F86E0",
3150 "P@ c #6186DF",
3151 "Q@ c #6286E0",
3152 "R@ c #6284DF",
3153 "S@ c #6384DF",
3154 "T@ c #5B7FDE",
3155 "U@ c #577DDC",
3156 "V@ c #557BDA",
3157 "W@ c #5278D8",
3158 "X@ c #4E76D6",
3159 "Y@ c #4C72D7",
3160 "Z@ c #486DD8",
3161 "`@ c #4469D6",
3162 " # c #3F62D2",
3163 ".# c #3C60CF",
3164 "+# c #345ECF",
3165 "@# c #6086DF",
3166 "## c #6085E0",
3167 "$# c #6285DF",
3168 "%# c #6383DD",
3169 "&# c #6481DC",
3170 "*# c #6380DD",
3171 "=# c #6183DE",
3172 "-# c #6083DD",
3173 ";# c #6081DC",
3174 "># c #6080DD",
3175 ",# c #6083DE",
3176 "'# c #6181DC",
3177 ")# c #6280DD",
3178 "!# c #577EDB",
3179 "~# c #557CD7",
3180 "{# c #4F76D6",
3181 "]# c #4E74D7",
3182 "^# c #466CD7",
3183 "/# c #3B64D6",
3184 "(# c #4261CD",
3185 "_# c #375FCE",
3186 ":# c #5A7FD8",
3187 "<# c #6281DA",
3188 "[# c #5F81D8",
3189 "}# c #5C80D8",
3190 "|# c #557DD7",
3191 "1# c #577ED8",
3192 "2# c #567ED7",
3193 "3# c #587DD8",
3194 "4# c #577DD8",
3195 "5# c #587ED8",
3196 "6# c #567DD8",
3197 "7# c #5379D9",
3198 "8# c #5177D7",
3199 "9# c #4D74D5",
3200 "0# c #486ED9",
3201 "a# c #4068D4",
3202 "b# c #3D65D2",
3203 "c# c #4361CC",
3204 "d# c #345ECE",
3205 "e# c #325DCF",
3206 "f# c #2C5AD1",
3207 "g# c #3959C5",
3208 "h# c #547BD8",
3209 "i# c #567DD7",
3210 "j# c #557BD8",
3211 "k# c #5279D9",
3212 "l# c #5278D9",
3213 "m# c #4D74D6",
3214 "n# c #4B71D8",
3215 "o# c #496CD8",
3216 "p# c #4669D7",
3217 "q# c #3D66D3",
3218 "r# c #3F62CF",
3219 "s# c #4260CC",
3220 "t# c #5379D8",
3221 "u# c #4E75D4",
3222 "v# c #4C73D7",
3223 "w# c #476CD7",
3224 "x# c #4869D0",
3225 "y# c #4067D2",
3226 "z# c #3D64D1",
3227 "A# c #4261CC",
3228 "B# c #395FCE",
3229 "C# c #4F75D3",
3230 "D# c #5074D2",
3231 "E# c #5174D1",
3232 "F# c #5175D1",
3233 "G# c #4F74D3",
3234 "H# c #4C73D5",
3235 "I# c #4C73D4",
3236 "J# c #4A72D1",
3237 "K# c #4B70CF",
3238 "L# c #506CCC",
3239 "M# c #4D6BCE",
3240 "N# c #4167D0",
3241 "O# c #3D65D1",
3242 "P# c #3F63CF",
3243 "Q# c #3B5FCD",
3244 "R# c #3159CD",
3245 "S# c #4971D0",
3246 "T# c #4870CF",
3247 "U# c #4C6FCF",
3248 "V# c #4E6CCE",
3249 "W# c #4E6BCE",
3250 "X# c #4769CF",
3251 "Y# c #3D66D0",
3252 "Z# c #3C65D1",
3253 "`# c #4062CE",
3254 " $ c #3D5FCD",
3255 ".$ c #365FCF",
3256 "+$ c #325DCD",
3257 "@$ c #2D5AD0",
3258 "#$ c #3859C5",
3259 "$$ c #355FCF",
3260 "%$ c #355ECF",
3261 "&$ c #335ECE",
3262 "*$ c #305CCD",
3263 "=$ c #2B5ACE",
3264 "-$ c #3056C9",
3265 ";$ c #2553C6",
3266 ">$ c #2153C8",
3267 ",$ c #1F4FC7",
3268 "'$ c #274CC5",
3269 ")$ c #214AC7",
3270 "!$ c #1C48C8",
3271 "~$ c #1244C9",
3272 "{$ c #1043C9",
3273 "]$ c #1144C9",
3274 "^$ c #2A45BE",
3275 "/$ c #2744B5",
3276 "($ c #1D49C0",
3277 "_$ c #2B58DE",
3278 ":$ c #002D94",
3279 "<$ c #2B59CA",
3280 "[$ c #2A59CA",
3281 "}$ c #2E57C8",
3282 "|$ c #3255C6",
3283 "1$ c #3355C5",
3284 "2$ c #1C52C8",
3285 "3$ c #1D50C7",
3286 "4$ c #234FC6",
3287 "5$ c #264CC5",
3288 "6$ c #1D48C7",
3289 "7$ c #1245C8",
3290 "8$ c #1F44C2",
3291 "9$ c #2945BE",
3292 "0$ c #2A45BD",
3293 "a$ c #2040BF",
3294 "b$ c #3156C7",
3295 "c$ c #3056C7",
3296 "d$ c #3354C5",
3297 "e$ c #3355C6",
3298 "f$ c #3255C5",
3299 "g$ c #3254C5",
3300 "h$ c #1952C7",
3301 "i$ c #1951C8",
3302 "j$ c #2050C7",
3303 "k$ c #274CC4",
3304 "l$ c #244CC6",
3305 "m$ c #1F49C7",
3306 "n$ c #1E47C5",
3307 "o$ c #2045C3",
3308 "p$ c #1C44BF",
3309 "q$ c #2045BE",
3310 "r$ c #2040B8",
3311 "s$ c #3254C6",
3312 "t$ c #3055C6",
3313 "u$ c #2A54C6",
3314 "v$ c #2353C7",
3315 "w$ c #3054C5",
3316 "x$ c #2F55C5",
3317 "y$ c #2A54C5",
3318 "z$ c #2553C5",
3319 "A$ c #2F54C5",
3320 "B$ c #3155C6",
3321 "C$ c #2A54C7",
3322 "D$ c #1A52C8",
3323 "E$ c #204FC2",
3324 "F$ c #264DC6",
3325 "G$ c #234BC5",
3326 "H$ c #1D48C1",
3327 "I$ c #1E48BF",
3328 "J$ c #2646BE",
3329 "K$ c #2B45BD",
3330 "L$ c #1E43BE",
3331 "M$ c #2643BF",
3332 "N$ c #2243BF",
3333 "O$ c #3049BC",
3334 "P$ c #1E50BE",
3335 "Q$ c #1D50C0",
3336 "R$ c #1D50BF",
3337 "S$ c #1852C1",
3338 "T$ c #1E51C0",
3339 "U$ c #214FBF",
3340 "V$ c #2050C0",
3341 "W$ c #244EBF",
3342 "X$ c #2151C0",
3343 "Y$ c #234FBF",
3344 "Z$ c #2350C0",
3345 "`$ c #2351C0",
3346 " % c #244FBF",
3347 ".% c #2250C0",
3348 "+% c #2051C0",
3349 "@% c #1E50C0",
3350 "#% c #244DBE",
3351 "$% c #274DBF",
3352 "%% c #244CBF",
3353 "&% c #1C48C0",
3354 "*% c #2247BF",
3355 "=% c #2C44BD",
3356 "-% c #1C44BE",
3357 ";% c #1444BF",
3358 ">% c #1841BF",
3359 ",% c #1F40BF",
3360 "'% c #254DBE",
3361 ")% c #224FBE",
3362 "!% c #224FBF",
3363 "~% c #234EBF",
3364 "{% c #254CBD",
3365 "]% c #244DBD",
3366 "^% c #244CBD",
3367 "/% c #264DBE",
3368 "(% c #264DBD",
3369 "_% c #214BC0",
3370 ":% c #1D48C0",
3371 "<% c #2347BF",
3372 "[% c #2B44BD",
3373 "}% c #2444BE",
3374 "|% c #0F42BF",
3375 "1% c #0641BF",
3376 "2% c #0F41BF",
3377 "3% c #1741BE",
3378 "4% c #1F40BD",
3379 "5% c #234BBF",
3380 "6% c #234CBE",
3381 "7% c #214BBE",
3382 "8% c #244CBE",
3383 "9% c #214ABE",
3384 "0% c #214ABF",
3385 "a% c #1F48C0",
3386 "b% c #2746BE",
3387 "c% c #1F43BE",
3388 "d% c #0941BE",
3389 "e% c #0342BA",
3390 "f% c #0242BC",
3391 "g% c #1241B8",
3392 "h% c #1F40B7",
3393 "i% c #2F41AC",
3394 "j% c #2644AE",
3395 "k% c #2D49B4",
3396 "l% c #2649B6",
3397 "m% c #2949B7",
3398 "n% c #2849B5",
3399 "o% c #2149B8",
3400 "p% c #1E49B9",
3401 "q% c #1F48B8",
3402 "r% c #1F49B9",
3403 "s% c #2545B6",
3404 "t% c #2744B7",
3405 "u% c #2844B7",
3406 "v% c #2043B8",
3407 "w% c #1241B7",
3408 "x% c #1340B8",
3409 "y% c #0D41B8",
3410 "z% c #1941B8",
3411 "A% c #1F40B8",
3412 "B% c #203FB8",
3413 "C% c #2549B5",
3414 "D% c #2648B6",
3415 "E% c #2547B7",
3416 "F% c #2248B7",
3417 "G% c #2048B7",
3418 "H% c #2346B6",
3419 "I% c #2146B6",
3420 "J% c #2247B7",
3421 "K% c #2148B7",
3422 "L% c #2743B4",
3423 "M% c #2643B5",
3424 "N% c #2542B6",
3425 "O% c #1D42B7",
3426 "P% c #0E42B8",
3427 "Q% c #0C41B8",
3428 "R% c #1341B8",
3429 "S% c #1740B8",
3430 "T% c #1C41B8",
3431 "U% c #1F40B1",
3432 "V% c #2644B5",
3433 "W% c #2544B5",
3434 "X% c #2544B4",
3435 "Y% c #2444B5",
3436 "Z% c #2444B4",
3437 "`% c #2744B4",
3438 " & c #2241B7",
3439 ".& c #1D41B8",
3440 "+& c #0B42B8",
3441 "@& c #0942B8",
3442 "#& c #0C42B8",
3443 "$& c #0F41B8",
3444 "%& c #1641B8",
3445 "&& c #2442B5",
3446 "*& c #2543B3",
3447 "=& c #2342B2",
3448 "-& c #2341B4",
3449 ";& c #2141B3",
3450 ">& c #2141B5",
3451 ",& c #2140B5",
3452 "'& c #2040B5",
3453 ")& c #1C40B7",
3454 "!& c #1B41B3",
3455 "~& c #0142B6",
3456 "{& c #0E41B7",
3457 "]& c #1141B7",
3458 "^& c #1440B2",
3459 "/& c #113FB0",
3460 "(& c #1440B0",
3461 "_& c #213EAF",
3462 ":& c #233DAE",
3463 "<& c #223EAF",
3464 "[& c #1E40B1",
3465 "}& c #173EAD",
3466 "|& c #1440AF",
3467 "1& c #0D40AF",
3468 "2& c #0941B0",
3469 "3& c #0D3FAE",
3470 "4& c #1B3CAC",
3471 "5& c #233CAD",
3472 "6& c #203FB0",
3473 "7& c #273BAD",
3474 "8& c #1D40B0",
3475 "9& c #2040B1",
3476 "0& c #1E40B0",
3477 "a& c #1C40B0",
3478 "b& c #1B3DAC",
3479 "c& c #143DAC",
3480 "d& c #193DAD",
3481 "e& c #1B3DAD",
3482 "f& c #173DAD",
3483 "g& c #153DAC",
3484 "h& c #1C3CAC",
3485 "i& c #243CAD",
3486 "j& c #213FB0",
3487 "k& c #263BAA",
3488 "l& c #253CAE",
3489 "m& c #273AAC",
3490 "n& c #273AAD",
3491 "o& c #253BAD",
3492 "p& c #1D3CAC",
3493 "q& c #243BAD",
3494 "r& c #1E3CAC",
3495 "s& c #263BAD",
3496 "t& c #1A3DAC",
3497 "u& c #143DAB",
3498 "v& c #163DAC",
3499 "w& c #1A3CAC",
3500 "x& c #1F3CAD",
3501 "y& c #263BAB",
3502 "z& c #263BA6",
3503 "A& c #1E42A4",
3504 "B& c #2D40A5",
3505 "C& c #253BA6",
3506 "D& c #253CA7",
3507 "E& c #263AA5",
3508 "F& c #253BA7",
3509 "G& c #1E3BA6",
3510 "H& c #193DA6",
3511 "I& c #173DA5",
3512 "J& c #143DA6",
3513 "K& c #1A3DA7",
3514 "L& c #133DA6",
3515 "M& c #123DA5",
3516 "N& c #1A3CA7",
3517 "O& c #243BA6",
3518 "P& c #263AA7",
3519 "Q& c #273BA7",
3520 "R& c #263AA6",
3521 "S& c #223BA6",
3522 "T& c #1D3BA6",
3523 "U& c #173CA6",
3524 "V& c #133DA5",
3525 "W& c #1B3DA6",
3526 "X& c #193DA5",
3527 "Y& c #123DA4",
3528 "Z& c #163CA5",
3529 "`& c #213CA6",
3530 " * c #273BA8",
3531 ".* c #263BA7",
3532 "+* c #253BA5",
3533 "@* c #263BA5",
3534 "#* c #1C3BA6",
3535 "$* c #1B3BA9",
3536 "%* c #133BA8",
3537 "&* c #0A3BA7",
3538 "** c #083AA6",
3539 "=* c #123CA5",
3540 "-* c #0839A8",
3541 ";* c #0239A6",
3542 ">* c #123AA8",
3543 ",* c #1F49C8",
3544 "'* c #2F4DA4",
3545 ")* c #2E4DA3",
3546 "!* c #384CA4",
3547 "~* c #3C4DA7",
3548 "{* c #394EA7",
3549 "]* c #3B4CA5",
3550 "^* c #3C52B1",
3551 "/* c #3551A8",
3552 "(* c #3759BE",
3553 "_* c #4161C7",
3554 ":* c #0033A8",
3555 "<* c #596FA9",
3556 "[* c #2F4DA3",
3557 "}* c #2D4BA5",
3558 "|* c #2E4CA4",
3559 "1* c #2C4AA5",
3560 "2* c #2D4BA4",
3561 "3* c #354DA4",
3562 "4* c #3A4BA4",
3563 "5* c #394DA6",
3564 "6* c #4056AD",
3565 "7* c #445BBB",
3566 "8* c #B5B7B4",
3567 "9* c #1B2F85",
3568 "0* c #242F79",
3569 "a* c #B5B5B5",
3570 "b* c #B5B2B6",
3571 "c* c #C0C3C3",
3572 "d* c #E3E3E4",
3573 "e* c #EBEDEA",
3574 ". + @ + # $ % & # $ % & # $ % & # $ % & & * = - ; > , ' ) ! ~ { { { { { { { ] ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / / / ( / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / _ _ / / : / < [ } | | | 1 1 ",
3575 "2 2 2 2 3 2 4 @ 3 2 4 @ 3 2 4 @ 3 2 4 @ # 5 6 7 8 ; > 9 0 a b c d e f { { { ] ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ( ( ( ( ( ( ( ( ( / / / / / / / / / / / / / / / / / _ _ _ _ _ _ _ _ _ _ _ g g _ / / : : : h i } 1 | 1 ",
3576 "j k l m n o p q n o p q r s t u v w x y z A B C D E F G H I J K L M N O P O O Q R S T T T T T T T T T T T T T T T T T T U U U U U U U U U U U U U U U U U U U U U U U U U U U U V V V U U W X : [ Y | | ",
3577 "Z ` . ...+.@.#...+.@.#.Z $.%.&.Z $.*.=.-.;.>.,.'.).!.~.{.].^./.(._.:.<.[.}.|.1.2.3.4.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.6.7.8.: h Y } 1 ",
3578 "9.0.a.b.c.c.d.e.f.c.d.e.f.c.d.e.f.c.d.e.g.h.i.j.k.l.m.n.o.p.q.r.s.s.t.u.u.v.w.x.4.4.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.y.5.7.6.: / z.A.} ",
3579 "-.B.C.D.-.E.g.F.G.E.g.F.G.E.g.F.G.E.g.F.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.V.U.U.W.X.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Z.y.Y.7.7.: : `.z.} ",
3580 " +.+g.;.++F.@+#+++F.@+#+++F.@+#+++F.@+#+$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+{+{+4.4.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.Y.Y.5.5.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Z.Z.Z.y.y.5.7.7.: : ^+z.Y ",
3581 "/+(+_+#+H.H.>.:+H.H.>.:+H.H.>.:+H.H.>.<+[+}+*+|+1+2+3+4+5+6+7+{+{+4.4.4.4.4.4.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.Y.Y.Y.Y.Y.Y.Y.5.Y.Y.Y.Y.Y.Y.Y.Y.5.Y.Y.5.5.5.5.Y.Y.Y.Y.Y.Y.Z.Z.Z.Z.y.y.y.y.y.y.7.7.: : ^+i } ",
3582 "8+9+0+0+a+0+0+b+a+0+0+b+a+0+0+b+a+0+0+c+d+e+f+g+h+i+j+k+l+m+n+o+4.4.4.4.5.5.5.5.5.5.Y.Y.5.5.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Y.Y.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.7.7.: : p+z.Y ",
3583 "q+r+r+s+t+u+v+w+t+u+v+w+t+u+v+w+t+u+x+&+y+z+A+B+C+D+E+5+F+G+~+4.4.4.4.5.5.5.5.5.H+Y.Y.Y.Y.Y.Y.Y.Y.I+Y.Z.Y.Y.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.7.7.: : `.z.A.",
3584 "J+v+K+L+M+N+O+P+Q+R+O+P+Q+R+O+P+Q+R+O+S+T+U+V+W+X+Y+P.T Z+`+ @4.4..@5.5.5.5.5.5.Y.Y.Y.I+I+I+I+I++@+@Z.Z.Y.Y.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.@@Z.7.7.: : p+z.Y ",
3585 "#@$@$@%@%@$@#@&@#@#@#@&@#@#@#@&@#@#@#@*@=@-@;+i+;@>@,@'@)@ @4.X.5.5.H+Y.Y.Y.!@Y.Y.I++@+@Z.Z.+@Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.y.Z.6.6.: : `.z.A.",
3586 "#@$@~@~@~@{@]@^@/@{@]@^@/@{@]@^@/@{@]@(@_@:@<@[@}@k+|@V 1@2@3@5.5.5.Y.Y.I+4@I+5@+@Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.y.Z.6.6.: : p+z.Y ",
3587 "6@7@8@9@0@a@b@c@a@a@b@c@a@a@b@c@a@a@b@d@e@<@f@g@h@i@j@k@l@m@n@o@o@p@Y.I+q@q@r@+@Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.y.Z.6.6.: : `.z.A.",
3588 "s@t@u@_@_@v@w@w@x@v@w@w@x@v@y@y@x@v@:@z@A@B@P C@D@E@F@G@H@I@J@K@5@+@+@+@r@I+L@Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.@@Z.W W : : p+z.Y ",
3589 "M@N@O@P@C+Q@Q@R@C+;+Q@R@C+;+;+S@C+Q@Q@R@T@U@V@W@X@Y@Z@`@4. #.#+#Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.8.Z.Z.Z.Z.8.8.Z.Z.y.@@@@W W : : `.z.A.",
3590 "@#O@O@##$#%#&#*#=#-#;#>#,#-#;#>#,#-#'#)#!#~#W@{#]#k@^#H@/#(#_#Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.8.8.Z.Z.Z.Z.Z.Z.Z.8.8.8.8.8.8.8.8.8.8.8.Z.Z.y.y.@@W W : : p+z.Y ",
3591 ":#<#[#}#|#1#2#3#4#5#1#4#4#1#1#4#4#1#1#6#7#8#9#V 0#`+a#b#c#d#e#Z.Z.Z.f#Z.Z.Z.f#f#f#f#f#f#f#f#f#f#g#g#g#g#g#8.8.8.8.8.8.8.8.8.g#g#g#g#8.g#8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.y.y.@@W W : : `.z.A.",
3592 "h#2#i#6#|#j#7#k#|#j#7#7#|#j#7#7#|#j#7#l#8#m#n#n#o#p#q#r#s#d#e#Z.Z.Z.f#f#f#f#Z.f#f#g#g#g#g#g#g#g#g#g#g#g#g#8.8.8.g#g#8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.y.y.y.y.8.8.8.y.y.@@W W : : p+z.Y ",
3593 "l#7#7#l#7#7#7#W@7#7#7#W@7#7#k#W@t#7#7#W@u#v#n#w#x#y#z#A#B#Z.e#f#f#Z.f#f#f#Z.Z.g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#8.8.8.g#g#g#g#8.8.g#g#g#g#g#g#8.8.g#8.8.y.8.8.y.y.8.y.y.y.y.@@W W : : `.z.A.",
3594 "C#D#E#F#G#H#I#J#G#H#I#J#G#H#I#J#G#H#I#J#K#L#M#N#O#P#s#Q#+#f#R#f#f#f#f#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#@@@@y.y.@@@@y.y.W W : : p+z.Y ",
3595 "S#S#S#S#S#T#S#U#S#T#S#U#S#T#S#U#S#T#S#U#V#W#X#Y#Z#`# $.$+$@$#$g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#@@@@@@@@@@@@@@@@@@y.y.W W : : `.z.A.",
3596 "+$Z..$$$%$+$&$*$%$+$&$*$%$+$&$*$%$+$&$*$=$-$;$>$,$'$)$!$~${$]$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$/$/$/$/$($($_$_$:$:$p+z.Y ",
3597 "<$<$<$<$<$[$}$|$<$[$}$|$<$[$}$|$<$[$}$|$1$2$3$4$5$)$6$7$8$9$0$a$a$a$a$a$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$/$/$/$^$^$^$/$/$/$/$/$/$/$/$/$/$/$/$/$/$($($_$_$:$:$`.z.A.",
3598 "b$c$c$c$d$e$e$f$g$|$|$1$d$e$e$1$d$e$e$1$h$i$j$k$l$m$n$o$p$9$q$a$a$a$a$a$a$a$a$^$a$a$^$^$^$^$^$^$a$r$r$r$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$($($_$_$:$:$p+z.Y ",
3599 "e$1$s$s$1$t$u$v$w$x$y$z$A$x$u$v$g$B$C$>$D$E$F$G$H$I$J$K$L$M$N$a$a$a$a$a$a$a$a$^$r$r$a$^$^$^$a$r$r$r$r$r$/$^$r$^$^$^$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$O$($_$_$:$:$`.z.A.",
3600 "P$Q$R$S$T$U$V$W$X$Y$Z$W$`$ %.%W$+%U$@%#%$%%%&%($*%=%-%;%>%>%,%r$r$r$r$r$a$a$a$/$/$/$r$r$r$r$r$r$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$O$($_$_$:$:$p+z.Y ",
3601 "'%W$)%!%~%{%'%]%~%^%'%]%~%^%'%]%~%^%/%(%_%&%:%<%[%}%|%1%2%3%4%r$r$r$r$r$r$r$r$r$r$r$r$r$r$r$r$r$/$r$/$/$r$r$r$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$/$r$/$/$/$/$/$O$($_$_$:$:$`.z.A.",
3602 "5%6%'%'%6%7%8%9%6%7%8%9%6%7%8%9%6%7%8%0%&%a%<%b%[%c%d%e%f%g%h%r$r$r$r$r$r$r$r$r$r$r$r$r$r$r$/$r$r$r$r$r$r$r$r$r$r$r$r$r$r$r$r$r$r$r$r$/$/$/$/$/$/$/$/$/$/$/$/$/$/$r$r$/$/$r$r$/$r$i%j%O$($_$_$:$:$p+z.Y ",
3603 "k%l%m%n%o%o%p%q%o%o%r%q%o%o%r%q%o%o%p%q%s%t%/$u%v%w%x%y%z%A%B%r$r$r$r$r$r$r$r$r$r$r$r$r$r$r$r$r$r$r$r$r$r$/$/$/$/$/$/$/$r$r$i%i%i%r$r$i%i%i%i%i%i%i%i%i%i%i%i%r$/$/$j%j%j%j%j%j%j%j%j%O$($_$_$:$:$`.z.A.",
3604 "C%D%E%F%G%H%I%J%K%H%I%J%K%H%I%J%K%H%I%J%L%M%N%O%P%Q%R%S%T%A%B%r$r$r$r$r$r$r$r$r$r$r$r$r$r$r$U%U%r$r$i%i%/$/$r$r$/$/$/$/$r$r$i%i%i%i%i%i%i%i%i%i%i%i%i%i%j%i%j%j%j%j%j%j%j%j%j%j%j%j%j%O$($_$_$:$:$p+z.Y ",
3605 "/$/$/$/$V%V%W%X%W%Y%Y%Z%W%W%Y%Z%W%W%W%`%`% &B%.&+&@&#&$&%&A%B%r$r$r$U%U%U%U%r$U%U%U%U%U%U%U%U%U%U%i%i%i%i%i%i%i%i%/$/$/$i%i%i%i%i%i%i%i%i%j%j%j%j%i%i%i%i%i%j%j%j%i%i%j%j%j%j%j%j%j%j%O$($_$_$:$:$`.z.A.",
3606 "&&*&=&-&=&;&>&,&=&;&>&,&=&;&>&,&=&;&>&'&)&!&~&{&]&^&/&(&_&:&<&U%U%U%U%U%U%U%U%U%U%U%U%U%i%i%U%U%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%O$($_$_$:$:$p+z.Y ",
3607 "U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%[&}&|&1&2&3&4&5&_&6&U%7&U%U%U%U%U%U%U%U%i%i%U%U%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%O$O$_$_$:$:$`.z.A.",
3608 "U%U%U%U%U%U%[&8&U%9&[&0&U%9&[&0&U%9&[&a&:&b&c&d&e&f&g&h&i&<&j&U%U%U%U%U%U%U%U%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%O$O$_$_$:$:$p+z.Y ",
3609 "k&l&m&7&7&n&o&p&7&n&q&r&s&s&q&r&s&n&o&p&t&u&u&g&v&w&x&q&n&m&y&7&7&U%U%7&z&7&z&U%A&B&i%i%B&B&i%i%B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&i%B&O$O$_$_$:$:$`.z.A.",
3610 "C&D&E&z&z&E&F&G&z&E&F&G&z&E&F&G&z&E&F&G&H&I&J&K&L&M&N&O&P&Q&z&z&z&z&z&z&z&z&z&z&z&z&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&O$O$_$_$:$:$p+z.Y ",
3611 "z&z&z&z&R&S&T&U&R&S&T&U&R&S&T&U&R&S&T&U&V&V&W&X&Y&Z&`&C&R&z&z&z&z&z&z&z&z&z&z&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&O$O$_$_$:$:$^+z.A.",
3612 "z& *.*+*@*#*$*%*@*#*$*%*@*#*$*%*@*#*$*%*&***=*-*;*>*k&P&+*z&z&z&z&z&z&z&z&z&z&z&z&z&z&z&z&z&z&z&z&z&z&z&z&z&z&z&z&z&z&z&B&B&B&B&z&z&z&B&B&B&z&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&B&/$O$O$@@_$,*:$/ ^+z.Y ",
3613 "'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*)*'*!*~*{*]*^*^*^*/*/*/*/*/*/*/*^*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*^*/*/*/*/*/*h h ^*h h ^*^*h h ^*^*^*^*h ^*^*^*^*h ^*^*^*(*_*_*_*_*_$:*:$<*`.z.} ",
3614 "'*'*'*'*'*[*}*|*'*[*}*|*'*[*}*|*'*[*}*|*1*1*2*}*}*2*[*)*3*4*5*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*h h h h h h h h h h h h h h h h 6*7*_*_*_*_*^*:*:$: 8*z.Y } ",
3615 "9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*9*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*( <*8*^+z.Y } 1 ",
3616 "a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*8*b*8*b*8*b*8*b*b*8*b*8*b*8*b*8*b*8*b*8*b*8*b*8*b*8*b*8*b*8*b*8*b*8*b*8*b*8*b*8*b*8*b*8*b*8*b*8*b*8*b*8*b*8*b*8*b*8*8*8*8*b*8*`.z.A.Y | | ",
3617 "c*c*c*c*c*c*c*c*c*c*c*c*c*c*c*c*c*c*c*c*c*c*c*c*c*c*c*c*c*c*c*p+`.p+`.p+`.p+`.`.p+`.p+`.p+`.p+`.p+`.p+`.p+`.p+`.p+`.p+`.p+`.p+`.p+`.p+`.p+`.p+`.p+`.p+`.p+`.p+`.p+`.p+`.p+`.p+`.p+^+`.^+^+z.z.Y Y | | 1 ",
3618 "d*d*d*d*d*d*d*d*d*d*d*d*d*d*d*d*d*d*d*d*d*d*d*d*d*d*d*d*d*d*d*A.Y A.Y A.Y A.Y Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y A.Y } } | | | | 1 1 ",
3619 "e*e*e*e*e*e*e*e*e*e*e*e*e*e*e*e*e*e*e*e*e*e*e*e*e*e*e*e*e*e*e*} | } | } | } | | } | } | } | } | } | } | } | } | } | } | } | } | } | } | } | } | } | } | } | } | } | } | } | } | } | | | | 1 | | | 1 1 1 "};
3620 
3621 
3622 static char * tabmiddle_xpm[] = {
3623 "33 42 32 1",
3624 " c None",
3625 ". c #CECFEF",
3626 "+ c #CECBE7",
3627 "@ c #C6C7E7",
3628 "# c #C6CBE7",
3629 "$ c #BDBEDE",
3630 "% c #BDC3DE",
3631 "& c #CECBEF",
3632 "* c #B5B6D6",
3633 "= c #ADAECE",
3634 "- c #ADB2CE",
3635 "; c #BDBAD6",
3636 "> c #B5BAD6",
3637 ", c #C6C3DE",
3638 "' c #ADAAC6",
3639 ") c #B5B2CE",
3640 "! c #B5B6CE",
3641 "~ c #A5A2BD",
3642 "{ c #A5A6BD",
3643 "] c #9C9EB5",
3644 "^ c #9CA2BD",
3645 "/ c #ADAEC6",
3646 "( c #C6C3E7",
3647 "_ c #9C9AB5",
3648 ": c #A5A6C6",
3649 "< c #949AAD",
3650 "[ c #A5AAC6",
3651 "} c #9496AD",
3652 "| c #BDBADE",
3653 "1 c #BDBED6",
3654 "2 c #9CA2B5",
3655 "3 c #A5AABD",
3656 "..........................+@.#.#.",
3657 "........................$@%&#.#..",
3658 "......................**$$@@&#.#.",
3659 ".....................=-;>,%+@.#..",
3660 "....................'')!$$@@&#.#.",
3661 "...................~{=)$$@@&#.#..",
3662 "..................]^'/;;(%&#.#...",
3663 "................._]:/*>,%&@.#.#..",
3664 ".................<{[)!$%+@.#.#...",
3665 "................}~{=!$%@@.#......",
3666 "................]^/-|$@@.#.......",
3667 "................]'/*;@@&#........",
3668 "...............<~[)>,%&#.#.......",
3669 "...............]~=)$%+#.#........",
3670 "...............]'/;1@@.#.........",
3671 "...............~{)*,%&#..........",
3672 "...............2/-$$@#...........",
3673 "...............~[*>(@&#..........",
3674 "...............^=)$%+#...........",
3675 "...............{'*>(@.#..........",
3676 "...............^=)$%+#...........",
3677 "...............{'*>(@.#..........",
3678 "...............^=)$%+#...........",
3679 "...............{'*>(@.#..........",
3680 "...............^=)$%+#...........",
3681 "...............{'*>(@.#..........",
3682 "...............^=)$%+#...........",
3683 "...............{'*>@@.#..........",
3684 "...............^=!$%&#...........",
3685 "...............{/*;@@.#..........",
3686 "...............{)!$%&#...........",
3687 "..............]'/;1@@.#..........",
3688 "..............23)>,%&#...........",
3689 "..............~=-$$@@.#..........",
3690 ".............]{/*;@@.#...........",
3691 "............<^[)>,%&#............",
3692 "............]{/!$%@@.#...........",
3693 "..........]^[-!$%@@.#............",
3694 ".........]^3/!>$@@.#.............",
3695 ".......<]^3/!>$@@&#..............",
3696 ".....<]2{[/!>$%@&#.#.............",
3697 "}<<_]2{3/-!>$%@&#.#.............."};
3698 
3699 
3700 static char * tabselectedbeginn_xpm[] = {
3701 "33 39 28 1",
3702 " c None",
3703 ". c #CECFEF",
3704 "+ c #EFF3EF",
3705 "@ c #FFFBFF",
3706 "# c #F7FBF7",
3707 "$ c #FFFFFF",
3708 "% c #EFEFEF",
3709 "& c #F7F7F7",
3710 "* c #DEDFDE",
3711 "= c #E7E7E7",
3712 "- c #D6D3D6",
3713 "; c #DEE3DE",
3714 "> c #EFEBEF",
3715 ", c #F7F3F7",
3716 "' c #CECBCE",
3717 ") c #CECFCE",
3718 "! c #D6D7D6",
3719 "~ c #DEDBDE",
3720 "{ c #E7EBE7",
3721 "] c #C6C7C6",
3722 "^ c #E7E3E7",
3723 "/ c #BDC3BD",
3724 "( c #CED3CE",
3725 "_ c #BDBABD",
3726 ": c #C6C3C6",
3727 "< c #C6CBC6",
3728 "[ c #D6DBD6",
3729 "} c #BDBEBD",
3730 "..........................+@#$#$$",
3731 "........................%%&&@#$#$",
3732 "......................*==%%&&@#$$",
3733 "....................--*;>%,&@#$#$",
3734 "...................')!~={,+@#$#$$",
3735 "...................]-!^=%%&&@#$#$",
3736 "................../'(~;>%&&@#$#$$",
3737 "................._])!*={,&@#$#$$$",
3738 "................_])~*>%&&$#$$$$$$",
3739 "................:<![={&&@#$$$$$$$",
3740 "................:)!^=,+@#$$$$$$$$",
3741 "...............}'(*^%+@#$#$$$$$$$",
3742 "...............:<!*>%&&$#$$$$$$$$",
3743 ".............../)!^{,&@#$$$$$$$$$",
3744 "...............](*^%+@#$$$$$$$$$$",
3745 "...............]!~=%&&$$$$$$$$$$$",
3746 "...............'(*=,+@#$$$$$$$$$$",
3747 "...............<!*>%&&$$$$$$$$$$$",
3748 "...............'-^=,+@#$$$$$$$$$$",
3749 "...............<!*>%&#$$$$$$$$$$$",
3750 "...............'-^=,+@#$$$$$$$$$$",
3751 "...............<!*>%&#$$$$$$$$$$$",
3752 "...............'-^=,+@#$$$$$$$$$$",
3753 "...............<!*>%&#$$$$$$$$$$$",
3754 "...............'-^=,+@#$$$$$$$$$$",
3755 "...............<!*>%&#$$$$$$$$$$$",
3756 "...............'!^=,&@#$$$$$$$$$$",
3757 "...............<~*>%&#$$$$$$$$$$$",
3758 "...............)!^{,&@#$$$$$$$$$$",
3759 "..............])~;%+@#$$$$$$$$$$$",
3760 "..............]-[={&&$#$$$$$$$$$$",
3761 ".............])!^=,&@#$$$$$$$$$$$",
3762 "............:'-*^%+@#$$$$$$$$$$$$",
3763 "............])~*>%&&$#$$$$$$$$$$$",
3764 "...........:'!*={,&@#$$$$$$$$$$$$",
3765 "..........:'-~^=,+@#$$$$$$$$$$$$$",
3766 ".......}]'-~^=%,&@#$$$$$$$$$$$$$$",
3767 ".....}:])-~^=%,+@#$#$$$$$$$$$$$$$",
3768 "}}}:]')-!*^=%,&@#$#$$$$$$$$$$$$$$"};
3769 
3770 
3771 static char * tabselectedend_xpm[] = {
3772 "33 42 33 1",
3773 " c None",
3774 ". c #FFFFFF",
3775 "+ c #CECBE7",
3776 "@ c #C6C7E7",
3777 "# c #CECFEF",
3778 "$ c #C6CBE7",
3779 "% c #BDBEDE",
3780 "& c #BDC3DE",
3781 "* c #CECBEF",
3782 "= c #B5B6D6",
3783 "- c #ADAECE",
3784 "; c #ADB2CE",
3785 "> c #BDBAD6",
3786 ", c #B5BAD6",
3787 "' c #C6C3DE",
3788 ") c #ADAAC6",
3789 "! c #B5B2CE",
3790 "~ c #B5B6CE",
3791 "{ c #A5A2BD",
3792 "] c #A5A6BD",
3793 "^ c #9C9EB5",
3794 "/ c #9CA2BD",
3795 "( c #ADAEC6",
3796 "_ c #C6C3E7",
3797 ": c #9C9AB5",
3798 "< c #A5A6C6",
3799 "[ c #949AAD",
3800 "} c #A5AAC6",
3801 "| c #9496AD",
3802 "1 c #BDBADE",
3803 "2 c #BDBED6",
3804 "3 c #9CA2B5",
3805 "4 c #A5AABD",
3806 "..........................+@#$#$#",
3807 "........................%@&*$#$##",
3808 "......................==%%@@*$#$#",
3809 ".....................-;>,'&+@#$##",
3810 "....................))!~%%@@*$#$#",
3811 "...................{]-!%%@@*$#$##",
3812 "..................^/)(>>_&*$#$###",
3813 ".................:^<(=,'&*@#$#$##",
3814 ".................[]}!~%&+@#$#$###",
3815 "................|{]-~%&@@#$######",
3816 "................^/(;1%@@#$#######",
3817 "................^)(=>@@*$########",
3818 "...............[{}!,'&*$#$#######",
3819 "...............^{-!%&+$#$########",
3820 "...............^)(>2@@#$#########",
3821 "...............{]!='&*$##########",
3822 "...............3(;%%@$###########",
3823 "...............{}=,_@*$##########",
3824 ".............../-!%&+$###########",
3825 "...............])=,_@#$##########",
3826 ".............../-!%&+$###########",
3827 "...............])=,_@#$##########",
3828 ".............../-!%&+$###########",
3829 "...............])=,_@#$##########",
3830 ".............../-!%&+$###########",
3831 "...............])=,_@#$##########",
3832 ".............../-!%&+$###########",
3833 "...............])=,@@#$##########",
3834 ".............../-~%&*$###########",
3835 "...............](=>@@#$##########",
3836 "...............]!~%&*$###########",
3837 "..............^)(>2@@#$##########",
3838 "..............34!,'&*$###########",
3839 "..............{-;%%@@#$##########",
3840 ".............^](=>@@#$###########",
3841 "............[/}!,'&*$############",
3842 "............^](~%&@@#$###########",
3843 "..........^/};~%&@@#$############",
3844 ".........^/4(~,%@@#$#############",
3845 ".......[^/4(~,%@@*$##############",
3846 ".....[^3]}(~,%&@*$#$#############",
3847 "|[[:^3]4(;~,%&@*$#$##############"};
3848 
3849 
3850 static char * tabend_xpm[] = {
3851 "33 42 3 1",
3852 " c None",
3853 ". c #CECFEF",
3854 "+ c #FFFFFF",
3855 "..........................+++++++",
3856 "........................+++++++++",
3857 "......................+++++++++++",
3858 ".....................++++++++++++",
3859 "....................+++++++++++++",
3860 "...................++++++++++++++",
3861 "..................+++++++++++++++",
3862 ".................++++++++++++++++",
3863 ".................++++++++++++++++",
3864 "................+++++++++++++++++",
3865 "................+++++++++++++++++",
3866 "................+++++++++++++++++",
3867 "...............++++++++++++++++++",
3868 "...............++++++++++++++++++",
3869 "...............++++++++++++++++++",
3870 "...............++++++++++++++++++",
3871 "...............++++++++++++++++++",
3872 "...............++++++++++++++++++",
3873 "...............++++++++++++++++++",
3874 "...............++++++++++++++++++",
3875 "...............++++++++++++++++++",
3876 "...............++++++++++++++++++",
3877 "...............++++++++++++++++++",
3878 "...............++++++++++++++++++",
3879 "...............++++++++++++++++++",
3880 "...............++++++++++++++++++",
3881 "...............++++++++++++++++++",
3882 "...............++++++++++++++++++",
3883 "...............++++++++++++++++++",
3884 "...............++++++++++++++++++",
3885 "...............++++++++++++++++++",
3886 "..............+++++++++++++++++++",
3887 "..............+++++++++++++++++++",
3888 "..............+++++++++++++++++++",
3889 ".............++++++++++++++++++++",
3890 "............+++++++++++++++++++++",
3891 "............+++++++++++++++++++++",
3892 "..........+++++++++++++++++++++++",
3893 ".........++++++++++++++++++++++++",
3894 ".......++++++++++++++++++++++++++",
3895 ".....++++++++++++++++++++++++++++",
3896 "+++++++++++++++++++++++++++++++++"};
3897 
3898 
3899 
3900 
3901 QColor fromHsl(QColor c)
3902 {
3903  const qreal h = c.hueF();
3904  const qreal s = c.saturationF();
3905  const qreal l = c.valueF();
3906 
3907  qreal ca[3] = {0, 0, 0};
3908 
3909  if (s == 0 || h == 1) {
3910  // achromatic case
3911  ca[0] = ca[1] = ca[2] = l;
3912  } else {
3913  // chromatic case
3914  qreal temp2;
3915  if (l < qreal(0.5))
3916  temp2 = l * (qreal(1.0) + s);
3917  else
3918  temp2 = l + s - (l * s);
3919 
3920  const qreal temp1 = (qreal(2.0) * l) - temp2;
3921  qreal temp3[3] = { h + (qreal(1.0) / qreal(3.0)),
3922  h,
3923  h - (qreal(1.0) / qreal(3.0)) };
3924 
3925  for (int i = 0; i != 3; ++i) {
3926  if (temp3[i] < qreal(0.0))
3927  temp3[i] += qreal(1.0);
3928  else if (temp3[i] > qreal(1.0))
3929  temp3[i] -= qreal(1.0);
3930 
3931  const qreal sixtemp3 = temp3[i] * qreal(6.0);
3932 
3933  if (sixtemp3 < qreal(1.0))
3934  ca[i] = ((temp1 + (temp2 - temp1) * sixtemp3));
3935  else if ((temp3[i] * qreal(2.0)) < qreal(1.0))
3936  ca[i] = (temp2);
3937  else if ((temp3[i] * qreal(3.0)) < qreal(2.0))
3938  ca[i] = temp1 + (temp2 -temp1) * (qreal(2.0) /qreal(3.0) - temp3[i]) * qreal(6.0);
3939  else ca[i] = temp1;
3940  }
3941  }
3942 
3943  return QColor::fromRgbF(ca[0], ca[1], ca[2]);
3944 }
3945 
3946 #define Q_MAX_3(a, b, c) ( ( a > b && a > c) ? a : (b > c ? b : c) )
3947 #define Q_MIN_3(a, b, c) ( ( a < b && a < c) ? a : (b < c ? b : c) )
3948 
3949 QColor toHsl(QColor c)
3950 {
3951  QColor color;
3952  qreal h;
3953  qreal s;
3954  qreal l;
3955 
3956  const qreal r = c.redF();
3957  const qreal g = c.greenF();
3958  const qreal b = c.blueF();
3959  const qreal max = Q_MAX_3(r, g, b);
3960  const qreal min = Q_MIN_3(r, g, b);
3961  const qreal delta = max - min;
3962  const qreal delta2 = max + min;
3963  const qreal lightness = qreal(0.5) * delta2;
3964  l = (lightness);
3965  if (qFuzzyIsNull(delta)) {
3966  // achromatic case, hue is undefined
3967  h = 0;
3968  s = 0;
3969  } else {
3970  // chromatic case
3971  qreal hue = 0;
3972  if (lightness < qreal(0.5))
3973  s = ((delta / delta2));
3974  else
3975  s = ((delta / (qreal(2.0) - delta2)));
3976  if (qFuzzyCompare(r, max)) {
3977  hue = ((g - b) /delta);
3978  } else if (qFuzzyCompare(g, max)) {
3979  hue = (2.0 + (b - r) / delta);
3980  } else if (qFuzzyCompare(b, max)) {
3981  hue = (4.0 + (r - g) / delta);
3982  } else {
3983  Q_ASSERT_X(false, "QColor::toHsv", "internal error");
3984  }
3985  hue *= 60.0;
3986  if (hue < 0.0)
3987  hue += 360.0;
3988  h = (hue * 100);
3989  }
3990 
3991  h = h / 36000;
3992 
3993  return QColor::fromHsvF(h, s, l);
3994 }
3995 
3996 void tintColor(QColor &color, QColor tintColor, qreal _saturation)
3997 {
3998  tintColor = toHsl(tintColor);
3999  color = toHsl(color);
4000  qreal hue = tintColor.hueF();
4001 
4002  qreal saturation = color.saturationF();
4003  if (_saturation)
4004  saturation = _saturation;
4005  qreal lightness = color.valueF();
4006  color.setHsvF(hue, saturation, lightness);
4007 
4008  color = fromHsl(color);
4009  color.toRgb();
4010 }
4011 
4012 void tintImagePal(QImage *image, QColor color, qreal saturation)
4013 {
4014  QVector<QRgb> colorTable = image->colorTable();
4015  for (int i=2;i< colorTable.size();i++) {
4016  QColor c(toHsl(colorTable.at(i)));
4017  tintColor(c, color, saturation);
4018  colorTable[i] = c.rgb();
4019  }
4020  image->setColorTable(colorTable);
4021 }
4022 
4023 
4024 void tintImage(QImage *image, QColor color, qreal saturation)
4025 {
4026  *image = image->convertToFormat(QImage::Format_RGB32);
4027 
4028  for (int x = 0; x < image->width(); x++)
4029  for (int y = 0; y < image->height(); y++) {
4030  QColor c(image->pixel(x,y));
4031  tintColor(c, color, saturation);
4032  image->setPixel(x, y, c.rgb());
4033  }
4034 }
4035 
4036 #endif //Q_WS_WINCE_WM
4037 
4038 
4040 
4041 #ifdef Q_WS_WINCE_WM
4042 
4043 void QWindowsMobileStylePrivate::tintImagesButton(QColor color)
4044 {
4045  if (currentTintButton == color)
4046  return;
4047  currentTintButton = color;
4048 
4049  imageTabEnd = QImage(tabend_xpm);
4050  imageTabSelectedEnd = QImage(tabselectedend_xpm);
4051  imageTabSelectedBegin = QImage(tabselectedbeginn_xpm);
4052  imageTabMiddle = QImage(tabmiddle_xpm);
4053  tintImage(&imageTabEnd, color, 0.0);
4054  tintImage(&imageTabSelectedEnd, color, 0.0);
4055  tintImage(&imageTabSelectedBegin, color, 0.0);
4056  tintImage(&imageTabMiddle, color, 0.0);
4057 
4058  if (!doubleControls) {
4059  int height = imageTabMiddle.height() / 2 + 1;
4060  imageTabEnd = imageTabEnd.scaledToHeight(height);
4061  imageTabMiddle = imageTabMiddle.scaledToHeight(height);
4062  imageTabSelectedEnd = imageTabSelectedEnd.scaledToHeight(height);
4063  imageTabSelectedBegin = imageTabSelectedBegin.scaledToHeight(height);
4064  }
4065 }
4066 
4067 void QWindowsMobileStylePrivate::tintImagesHigh(QColor color)
4068 {
4069  if (currentTintHigh == color)
4070  return;
4071  currentTintHigh = color;
4072  tintListViewHighlight(color);
4073  imageScrollbarHandleUpHigh = imageScrollbarHandleUp;
4074  imageScrollbarHandleDownHigh = imageScrollbarHandleDown;
4075  tintImagePal(&imageScrollbarHandleDownHigh, color, qreal(0.8));
4076  tintImagePal(&imageScrollbarHandleUpHigh, color, qreal(0.8));
4077 }
4078 
4079 void QWindowsMobileStylePrivate::tintListViewHighlight(QColor color)
4080 {
4081  imageListViewHighlightCornerRight = QImage(listviewhighcornerright_xpm);
4082  tintImage(&imageListViewHighlightCornerRight, color, qreal(0.0));
4083 
4084  imageListViewHighlightCornerLeft = QImage(listviewhighcornerleft_xpm);
4085  tintImage(&imageListViewHighlightCornerLeft, color, qreal(0.0));
4086 
4087  imageListViewHighlightMiddle = QImage(listviewhighmiddle_xpm);
4088  tintImage(&imageListViewHighlightMiddle, color, qreal(0.0));
4089 
4090  int height = imageListViewHighlightMiddle.height();
4091  if (!doubleControls) {
4092  height = height / 2;
4093  imageListViewHighlightCornerRight = imageListViewHighlightCornerRight.scaledToHeight(height);
4094  imageListViewHighlightCornerLeft = imageListViewHighlightCornerLeft.scaledToHeight(height);
4095  imageListViewHighlightMiddle = imageListViewHighlightMiddle.scaledToHeight(height);
4096  }
4097 }
4098 
4099 #endif //Q_WS_WINCE_WM
4100 
4102 {
4103 #ifdef Q_WS_WINCE_WM
4105  if (wm65) {
4106  imageScrollbarHandleUp = QImage(sbhandleup_xpm);
4107  imageScrollbarHandleDown = QImage(sbhandledown_xpm);
4108  imageScrollbarGripUp = QImage(sbgripup_xpm);
4109  imageScrollbarGripDown = QImage(sbgripdown_xpm);
4110  imageScrollbarGripMiddle = QImage(sbgripmiddle_xpm);
4111 
4112  if (!doubleControls) {
4113  imageScrollbarHandleUp = imageScrollbarHandleUp.scaledToHeight(imageScrollbarHandleUp.height() / 2);
4114  imageScrollbarHandleDown = imageScrollbarHandleDown.scaledToHeight(imageScrollbarHandleDown.height() / 2);
4115  imageScrollbarGripMiddle = imageScrollbarGripMiddle.scaledToHeight(imageScrollbarGripMiddle.height() / 2);
4116  imageScrollbarGripUp = imageScrollbarGripUp.scaledToHeight(imageScrollbarGripUp.height() / 2);
4117  imageScrollbarGripDown = imageScrollbarGripDown.scaledToHeight(imageScrollbarGripDown.height() / 2);
4118  } else {
4119  }
4120  tintImagesHigh(Qt::blue);
4121  }
4122 #endif //Q_WS_WINCE_WM
4123 }
4124 
4126 {
4127 #ifndef QT_NO_TABBAR
4128 #ifdef Q_WS_WINCE_WM
4129  if (wm65) {
4130  tintImagesButton(tab->palette.button().color());
4131  QRect r;
4132  r.setTopLeft(tab->rect.topRight() - QPoint(imageTabMiddle.width(), 0));
4133  r.setBottomRight(tab->rect.bottomRight());
4134  if (tab->state & QStyle::State_Selected) {
4135  painter->fillRect(tab->rect, tab->palette.window());
4136  } else {
4137  painter->fillRect(tab->rect, QColor(imageTabMiddle.pixel(0,0)));
4138  }
4140  painter->drawImage(r, imageTabSelectedBegin);
4141  } else if (tab->position == QStyleOptionTab::End ||
4143  if (!(tab->state & QStyle::State_Selected)) {
4144  painter->drawImage(r, imageTabEnd);
4145  }
4146  } else if (tab->state & QStyle::State_Selected) {
4147  painter->drawImage(r, imageTabSelectedEnd);
4148  } else {
4149  painter->drawImage(r, imageTabMiddle);
4150  }
4152  painter->drawImage(tab->rect.topLeft() - QPoint(imageTabMiddle.width() * 0.60, 0), imageTabSelectedEnd);
4153  }
4154  //imageTabBarBig
4155  return;
4156  }
4157 #endif //Q_WS_WINCE_WM
4158  painter->save();
4159  painter->setPen(tab->palette.shadow().color());
4160  if (doubleControls) {
4161  QPen pen = painter->pen();
4162  pen.setWidth(2);
4163  pen.setCapStyle(Qt::FlatCap);
4164  painter->setPen(pen);
4165  }
4166  if(tab->shape == QTabBar::RoundedNorth) {
4167  if (tab->state & QStyle::State_Selected) {
4168  painter->fillRect(tab->rect, tab->palette.light());
4169  painter->drawLine(tab->rect.topRight(), tab->rect.bottomRight());
4170  }
4171  else {
4172  painter->fillRect(tab->rect, tab->palette.button());
4173  painter->drawLine(tab->rect.bottomLeft() , tab->rect.bottomRight());
4174  painter->drawLine(tab->rect.topRight(), tab->rect.bottomRight());
4175  }
4176  }
4177  else if(tab->shape == QTabBar::RoundedSouth) {
4178  if (tab->state & QStyle::State_Selected) {
4179  painter->fillRect(tab->rect.adjusted(0,-2,0,0), tab->palette.light());
4180  painter->drawLine(tab->rect.topRight(), tab->rect.bottomRight());
4181  }
4182  else {
4183  painter->fillRect(tab->rect, tab->palette.button());
4184  if (doubleControls)
4185  painter->drawLine(tab->rect.topLeft() + QPoint(0,1), tab->rect.topRight() + QPoint(0,1));
4186  else
4187  painter->drawLine(tab->rect.topLeft(), tab->rect.topRight());
4188  painter->drawLine(tab->rect.topRight(), tab->rect.bottomRight());
4189  }
4190  }
4191  else if(tab->shape == QTabBar::RoundedEast) {
4192  if (tab->state & QStyle::State_Selected) {
4193  painter->fillRect(tab->rect, tab->palette.light());
4194  painter->drawLine(tab->rect.topLeft(), tab->rect.topRight());
4195  }
4196  else {
4197  painter->fillRect(tab->rect, tab->palette.button());
4198  painter->drawLine(tab->rect.topLeft(), tab->rect.bottomLeft());
4199  painter->drawLine(tab->rect.topLeft(), tab->rect.topRight());
4200  }
4201  }
4202  else if(tab->shape == QTabBar::RoundedWest) {
4203  if (tab->state & QStyle::State_Selected) {
4204  painter->fillRect(tab->rect, tab->palette.light());
4205  painter->drawLine(tab->rect.bottomLeft(), tab->rect.bottomRight());
4206  }
4207  else {
4208  painter->fillRect(tab->rect, tab->palette.button());
4209  painter->drawLine(tab->rect.topRight(), tab->rect.bottomRight());
4210  painter->drawLine(tab->rect.bottomLeft(), tab->rect.bottomRight());
4211  }
4212  }
4213  painter->restore();
4214 #endif //QT_NO_TABBAR
4215 }
4216 
4218 {
4219 #ifdef Q_WS_WINCE_WM
4220  if (wm65) {
4221  QRect r;
4222  if (rect.isValid())
4223  r = rect;
4224  else
4225  r = option->rect;
4226  tintImagesHigh(option->palette.highlight().color());
4227 
4228  painter->setPen(QColor(Qt::lightGray));
4229 
4231  painter->drawImage(r, imageListViewHighlightMiddle);
4232  } else if (option->viewItemPosition == QStyleOptionViewItemV4::Beginning) {
4233  painter->drawImage(r.adjusted(10, 0, 0, 0), imageListViewHighlightMiddle);
4234  } else if (option->viewItemPosition == QStyleOptionViewItemV4::End) {
4235  painter->drawImage(r.adjusted(0, 0, -10, 0), imageListViewHighlightMiddle);
4236  } else {
4237  painter->drawImage(r.adjusted(10, 0, -10, 0), imageListViewHighlightMiddle);
4238  }
4239 
4240  QImage cornerLeft = imageListViewHighlightCornerLeft;
4241  QImage cornerRight = imageListViewHighlightCornerRight;
4242 
4243  int width = r.width() > cornerRight.width() ? r.width() : cornerRight.width();
4244 
4245  if ((width * 2) > r.width()) {
4246  width = (r.width() - 5) / 2;
4247  }
4248 
4249  cornerLeft = cornerLeft.scaled(width, r.height());
4250  cornerRight = cornerRight.scaled(width, r.height());
4251 
4253  painter->drawImage(r.topLeft(), cornerLeft);
4254  }
4256  painter->drawImage(r.topRight() - QPoint(cornerRight.width(),0), cornerRight);
4257  }
4258  return;
4259  }
4260 #endif //Q_WS_WINCE_WM
4263 
4264  if (rect.isValid())
4265  painter->fillRect(rect, option->palette.brush(cg, QPalette::Highlight));
4266  else
4267  painter->fillRect(option->rect, option->palette.brush(cg, QPalette::Highlight));
4268 }
4269 
4270 void QWindowsMobileStylePrivate::drawScrollbarGrip(QPainter *p, QStyleOptionSlider *newScrollbar, const QStyleOptionComplex *option, bool drawCompleteFrame)
4271 {
4272 #ifdef Q_WS_WINCE_WM
4273  if (wm65) {
4274  if (newScrollbar->orientation == Qt::Horizontal) {
4275  QTransform transform;
4276  transform.rotate(-90);
4277  QRect r = newScrollbar->rect;
4278  p->drawImage(r.adjusted(10, 0, -10, 0), imageScrollbarGripMiddle.transformed(transform));
4279  p->drawImage(r.topLeft(), imageScrollbarGripUp.transformed(transform));
4280  p->drawImage(r.topRight() - QPoint(imageScrollbarGripDown.height() - 1, 0), imageScrollbarGripDown.transformed(transform));
4281  } else {
4282  QRect r = newScrollbar->rect;
4283  p->drawImage(r.adjusted(0, 10, 0, -10), imageScrollbarGripMiddle);
4284  p->drawImage(r.topLeft(), imageScrollbarGripUp);
4285  p->drawImage(r.bottomLeft() - QPoint(0, imageScrollbarGripDown.height() - 1), imageScrollbarGripDown);
4286  }
4287  return ;
4288  }
4289 #endif
4290  if (newScrollbar->orientation == Qt::Horizontal) {
4291  p->fillRect(newScrollbar->rect,option->palette.button());
4292  QRect r = newScrollbar->rect;
4293  p->drawLine(r.topLeft(), r.bottomLeft());
4294  p->drawLine(r.topRight(), r.bottomRight());
4295  if (smartphone) {
4296  p->drawLine(r.topLeft(), r.topRight());
4297  p->drawLine(r.bottomLeft(), r.bottomRight());
4298  }
4299  }
4300  else {
4301  p->fillRect(newScrollbar->rect,option->palette.button());
4302  QRect r = newScrollbar->rect;
4303  p->drawLine(r.topLeft(), r.topRight());
4304  p->drawLine(r.bottomLeft(), r.bottomRight());
4305  if (smartphone) {
4306  p->drawLine(r.topLeft(), r.bottomLeft());
4307  p->drawLine(r.topRight(), r.bottomRight());
4308  }
4309  }
4310  if (newScrollbar->state & QStyle::State_HasFocus) {
4311  QStyleOptionFocusRect fropt;
4312  fropt.QStyleOption::operator=(*newScrollbar);
4313  fropt.rect.setRect(newScrollbar->rect.x() + 2, newScrollbar->rect.y() + 2,
4314  newScrollbar->rect.width() - 5,
4315  newScrollbar->rect.height() - 5);
4316  }
4317  int gripMargin = doubleControls ? 4 : 2;
4318  int doubleLines = doubleControls ? 2 : 1;
4319  //If there is a frame around the scrollbar (abstractScrollArea),
4320  //then the margin is different, because of the missing frame
4321  int gripMarginFrame = doubleControls ? 3 : 1;
4322  if (drawCompleteFrame)
4323  gripMarginFrame = 0;
4324  //draw grips
4325  if (!smartphone)
4326  if (newScrollbar->orientation == Qt::Horizontal) {
4327  for (int i = -3; i < 3; i += 2) {
4328  p->drawLine(
4329  QPoint(newScrollbar->rect.center().x() + i * doubleLines + 1,
4330  newScrollbar->rect.top() + gripMargin +gripMarginFrame),
4331  QPoint(newScrollbar->rect.center().x() + i * doubleLines + 1,
4332  newScrollbar->rect.bottom() - gripMargin));
4333  }
4334  } else {
4335  for (int i = -2; i < 4 ; i += 2) {
4336  p->drawLine(
4337  QPoint(newScrollbar->rect.left() + gripMargin + gripMarginFrame ,
4338  newScrollbar->rect.center().y() + 1 + i * doubleLines - 1),
4339  QPoint(newScrollbar->rect.right() - gripMargin,
4340  newScrollbar->rect.center().y() + 1 + i * doubleLines - 1));
4341  }
4342  }
4343  if (!smartphone) {
4344  QRect r;
4345  if (doubleControls)
4346  r = option->rect.adjusted(1, 1, -1, 0);
4347  else
4348  r = option->rect.adjusted(0, 0, -1, 0);
4349  if (drawCompleteFrame && doubleControls)
4350  r.adjust(0, 0, 0, -1);
4351  //Check if the scrollbar is part of an abstractItemView and draw the frame according
4352  if (drawCompleteFrame)
4353  p->drawRect(r);
4354  else
4355  if (newScrollbar->orientation == Qt::Horizontal)
4356  p->drawLine(r.topLeft(), r.topRight());
4357  else
4358  p->drawLine(r.topLeft(), r.bottomLeft());
4359  }
4360 }
4361 
4363 {
4364 #ifdef Q_WS_WINCE_WM
4365  if (wm65) {
4366  tintImagesHigh(opt->palette.highlight().color());
4367  QRect r = opt->rect;
4368  if (opt->orientation == Qt::Horizontal) {
4369  QTransform transform;
4370  transform.rotate(-90);
4371  if (opt->state & QStyle::State_Sunken)
4372  p->drawImage(r.topLeft(), imageScrollbarHandleUpHigh.transformed(transform));
4373  else
4374  p->drawImage(r.topLeft(), imageScrollbarHandleUp.transformed(transform));
4375  } else {
4376  if (opt->state & QStyle::State_Sunken)
4377  p->drawImage(r.topLeft(), imageScrollbarHandleUpHigh);
4378  else
4379  p->drawImage(r.topLeft(), imageScrollbarHandleUp);
4380  }
4381  return ;
4382  }
4383 #endif //Q_WS_WINCE_WM
4384 
4385  QBrush fill = opt->palette.button();
4386  if (opt->state & QStyle::State_Sunken)
4387  fill = opt->palette.shadow();
4388 
4389  QStyleOption arrowOpt = *opt;
4390  if (doubleControls)
4391  arrowOpt.rect = opt->rect.adjusted(4, 6, -5, -3);
4392  else
4393  arrowOpt.rect = opt->rect.adjusted(5, 6, -4, -3);
4394 
4395  bool horizontal = (opt->orientation == Qt::Horizontal);
4396 
4397  if (horizontal) {
4398  p->fillRect(opt->rect,fill);
4399  QRect r = opt->rect.adjusted(0,0,1,0);
4400  p->drawLine(r.topRight(), r.bottomRight());
4401  if (doubleControls)
4402  arrowOpt.rect.adjust(0, -2 ,0, -2);
4403  q_func()->proxy()->drawPrimitive(QStyle::PE_IndicatorArrowLeft, &arrowOpt, p, 0);
4404  } else {
4405  p->fillRect(opt->rect,fill);
4406  QRect r = opt->rect.adjusted(0, 0, 0, 1);
4407  p->drawLine(r.bottomLeft(), r.bottomRight());
4408  if (completeFrame)
4409  arrowOpt.rect.adjust(-2, 0, -2, 0);
4410  if (doubleControls)
4411  arrowOpt.rect.adjust(0, -4 , 0, -4);
4412  if (completeFrame && doubleControls)
4413  arrowOpt.rect.adjust(2, 0, 2, 0);
4414  q_func()->proxy()->drawPrimitive(QStyle::PE_IndicatorArrowUp, &arrowOpt, p, 0);
4415  }
4416 }
4417 
4418 void QWindowsMobileStylePrivate::drawScrollbarHandleDown(QPainter *p, QStyleOptionSlider *opt, bool completeFrame, bool secondScrollBar)
4419 {
4420 #ifndef QT_NO_SCROLLBAR
4421 #ifdef Q_WS_WINCE_WM
4422  if (wm65) {
4423  tintImagesHigh(opt->palette.highlight().color());
4424  QRect r = opt->rect;
4425  if (opt->orientation == Qt::Horizontal) {
4426  QTransform transform;
4427  transform.rotate(-90);
4428  if (opt->state & QStyle::State_Sunken)
4429  p->drawImage(r.topLeft(), imageScrollbarHandleDownHigh.transformed(transform));
4430  else
4431  p->drawImage(r.topLeft(), imageScrollbarHandleDown.transformed(transform));
4432  } else {
4433  if (opt->state & QStyle::State_Sunken)
4434  p->drawImage(r.topLeft(), imageScrollbarHandleDownHigh);
4435  else
4436  p->drawImage(r.topLeft(), imageScrollbarHandleDown);
4437  }
4438  return ;
4439  }
4440 #endif //Q_WS_WINCE_WM
4441 
4442  QBrush fill = opt->palette.button();
4443  if (opt->state & QStyle::State_Sunken)
4444  fill = opt->palette.shadow();
4445 
4446  QStyleOption arrowOpt = *opt;
4447  if (doubleControls)
4448  arrowOpt.rect = opt->rect.adjusted(4, 0, -5, 3);
4449  else
4450  arrowOpt.rect = opt->rect.adjusted(5, 6, -4, -3);
4451 
4452  bool horizontal = (opt->orientation == Qt::Horizontal);
4453 
4454  if (horizontal) {
4455  p->fillRect(opt->rect,fill);
4456  QRect r = opt->rect.adjusted(0, 0, 0, 0);
4457  p->drawLine(r.topLeft(), r.bottomLeft());
4458  if (secondScrollBar)
4459  p->drawLine(r.topRight(), r.bottomRight());
4460  if (doubleControls)
4461  arrowOpt.rect.adjust(0, 4, 0, 4 );
4462  q_func()->proxy()->drawPrimitive(QStyle::PE_IndicatorArrowRight, &arrowOpt, p, 0);
4463  } else {
4464  p->fillRect(opt->rect,fill);
4465  QRect r = opt->rect.adjusted(0, -1, 0, -1);
4466  p->drawLine(r.topLeft(), r.topRight());
4467  if (secondScrollBar)
4468  p->drawLine(r.bottomLeft() + QPoint(0,1), r.bottomRight() + QPoint(0, 1));
4469  if (completeFrame)
4470  arrowOpt.rect.adjust(-2, 0, -2, 0);
4471  if (doubleControls)
4472  arrowOpt.rect.adjust(1, 0, 1, 0 );
4473  if (completeFrame && doubleControls)
4474  arrowOpt.rect.adjust(1, 0, 1, 0);
4475  q_func()->proxy()->drawPrimitive(QStyle::PE_IndicatorArrowDown, &arrowOpt, p, 0);
4476  }
4477 #endif //QT_NO_SCROLLBAR
4478 }
4479 
4481 {
4482 #ifndef QT_NO_SCROLLBAR
4483 #ifdef Q_OS_WINCE_WM
4484  if (wm65) {
4485  p->fillRect(opt->rect, QColor(231, 231, 231));
4486  return ;
4487  }
4488 #endif
4489  QBrush fill;
4490  if (smartphone) {
4491  fill = opt->palette.light();
4492  p->fillRect(opt->rect, fill);
4493  fill = opt->palette.button();
4494  QImage image;
4495 #ifndef QT_NO_IMAGEFORMAT_XPM
4496  if (opt->orientation == Qt::Horizontal)
4497  image = QImage(vertlines_xpm);
4498  else
4499  image = QImage(horlines_xpm);
4500 #endif
4501  image.setColor(1, opt->palette.button().color().rgb());
4502  fill.setTextureImage(image);
4503  }
4504  else {
4505  fill = opt->palette.light();
4506  }
4507  p->fillRect(opt->rect, fill);
4508 #endif //QT_NO_SCROLLBAR
4509 }
4510 
4512  qApp->setEffectEnabled(Qt::UI_FadeMenu, false);
4513  qApp->setEffectEnabled(Qt::UI_AnimateMenu, false);
4514 }
4515 
4517  qApp->setEffectEnabled(Qt::UI_FadeMenu, false);
4518  qApp->setEffectEnabled(Qt::UI_AnimateMenu, false);
4519 }
4520 
4522 
4523 #ifdef Q_WS_WINCE
4526 #else
4527  doubleControls = false;
4528  smartphone = false;
4529 #endif //Q_WS_WINCE
4530 
4531 #ifndef QT_NO_IMAGEFORMAT_XPM
4532 
4536  imageArrowRight = QImage(arrowleft_xpm).mirrored(true, false);
4537  if (doubleControls) {
4547  } else {
4557  }
4558 
4560 
4561 
4566 
4567 #endif
4568 }
4569 
4571  QPainter *painter, const QWidget *widget) const {
4572 
4573  QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
4574 
4575  bool doRestore = false;
4576  QRect rect = option->rect;
4577  painter->setClipping(false);
4578 
4579  switch (element) {
4580  case PE_PanelButtonTool: {
4581  int penSize = 1;
4582  if (d->doubleControls)
4583  penSize = 2;
4584  if (widget)
4585  if (QWidget *parent = widget->parentWidget())
4586 #ifndef QT_NO_TABWIDGET
4587  if (qobject_cast<QTabWidget *>(parent->parentWidget())) {
4588 #else
4589  if (false) {
4590 #endif //QT_NO_TABBAR
4591  rect.adjust(0,2*penSize,0,-1*penSize);
4592  qDrawPlainRect(painter, rect, option->palette.shadow().color(), penSize, &option->palette.light());
4593  if (option->state & (State_Sunken))
4594  qDrawPlainRect(painter, rect, option->palette.shadow().color(), penSize, &option->palette.shadow());
4595  }
4596  else {
4597  if (!(option->state & State_AutoRaise) || (option->state & (State_Sunken | State_On)))
4598  qDrawPlainRect(painter,option->rect.adjusted(0, penSize, 0, -1 * penSize) ,
4599  option->palette.button().color(), 0, &option->palette.button());
4600  if (option->state & (State_Sunken)) {
4601  qDrawPlainRect(painter, rect, option->palette.shadow().color(), penSize, &option->palette.light());
4602  }
4603  if (option->state & (State_On)){
4604  QBrush fill = QBrush(option->palette.light().color());
4606  -windowsItemFrame , -windowsItemFrame ), fill);
4607  qDrawPlainRect(painter, rect, option->palette.shadow().color(), penSize, &option->palette.light());
4608  }
4609  }
4610  break; }
4611  case PE_IndicatorButtonDropDown:
4612  if (d->doubleControls)
4613  qDrawPlainRect(painter, option->rect, option->palette.shadow().color(), 2, &option->palette.button());
4614  else
4615  qDrawPlainRect(painter, option->rect, option->palette.shadow().color(), 1, &option->palette.button());
4616  break;
4617 #ifndef QT_NO_TABBAR
4618  case PE_IndicatorTabTear:
4619  if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) {
4620  bool rtl = tab->direction == Qt::RightToLeft;
4621  QRect rect = tab->rect;
4622  QPainterPath path;
4623  rect.setTop(rect.top() + ((tab->state & State_Selected) ? 1 : 3));
4624  rect.setBottom(rect.bottom() - ((tab->state & State_Selected) ? 0 : 2));
4625  path.moveTo(QPoint(rtl ? rect.right() : rect.left(), rect.top()));
4626  int count = 3;
4627  for(int jags = 1; jags <= count; ++jags, rtl = !rtl)
4628  path.lineTo(QPoint(rtl ? rect.left() : rect.right(), rect.top() + jags * rect.height()/count));
4629  painter->setPen(QPen(tab->palette.light(), qreal(.8)));
4630  painter->setBrush(tab->palette.background());
4632  painter->drawPath(path);
4633  }
4634  break;
4635 #endif //QT_NO_TABBAR
4636 
4637 #ifndef QT_NO_TOOLBAR
4638  case PE_IndicatorToolBarSeparator: {
4639  painter->save();
4640  QPoint p1, p2;
4641  if (option->state & State_Horizontal) {
4642  p1 = QPoint(option->rect.width()/2, 0);
4643  p2 = QPoint(p1.x(), option->rect.height());
4644  } else {
4645  p1 = QPoint(0, option->rect.height()/2);
4646  p2 = QPoint(option->rect.width(), p1.y());
4647  }
4648 
4649 
4650  painter->setPen(option->palette.mid().color());
4651  if (d->doubleControls) {
4652  QPen pen = painter->pen();
4653  pen.setWidth(2);
4654  pen.setCapStyle(Qt::FlatCap);
4655  painter->setPen(pen);
4656  }
4657  painter->drawLine(p1, p2);
4658  painter->restore();
4659  break; }
4660 #endif // QT_NO_TOOLBAR
4661  case PE_IndicatorToolBarHandle:
4662  painter->save();
4663  painter->translate(option->rect.x(), option->rect.y());
4664  if (option->state & State_Horizontal) {
4665  int x = option->rect.width() / 2 - 4;
4667  x -= 2;
4668  if (option->rect.height() > 4) {
4669  qDrawWinButton(painter,x-1,0,7,option->rect.height(), option->palette, false, 0);
4670 
4671  qDrawShadePanel(painter, x, 1, 3, option->rect.height() - 1,
4672  option->palette, false, 0);
4673  qDrawShadePanel(painter, x + 3, 1, 3, option->rect.height() - 1,
4674  option->palette, false, 0);
4675  painter->setPen(option->palette.button().color());
4676  }
4677  } else {
4678  if (option->rect.width() > 4) {
4679  int y = option->rect.height() / 2 - 4;
4680  qDrawShadePanel(painter, 2, y, option->rect.width() - 2, 3,
4681  option->palette, false, 0);
4682  qDrawShadePanel(painter, 2, y + 3, option->rect.width() - 2, 3,
4683  option->palette, false, 0);
4684  }
4685  }
4686  painter->restore();
4687  break;
4688 
4689 #ifndef QT_NO_PROGRESSBAR
4690  case PE_IndicatorProgressChunk: {
4691  bool vertical = false;
4692  if (const QStyleOptionProgressBarV2 *pb2 = qstyleoption_cast<const QStyleOptionProgressBarV2 *>(option))
4693  vertical = (pb2->orientation == Qt::Vertical);
4694  if (!vertical) {
4695  painter->fillRect(option->rect.x(), option->rect.y()+2, option->rect.width(), option->rect.height()-4,
4696  option->palette.brush(QPalette::Highlight));
4697  } else {
4698  painter->fillRect(option->rect.x()+2, option->rect.y(), option->rect.width()-4, option->rect.height(),
4699  option->palette.brush(QPalette::Highlight));
4700  }
4701  }
4702  break;
4703 #endif // QT_NO_PROGRESSBAR
4704 
4705  case PE_FrameButtonTool: {
4706 #ifndef QT_NO_DOCKWIDGET
4707  if (widget && widget->inherits("QDockWidgetTitleButton")) {
4708  if (const QDockWidget *dw = qobject_cast<const QDockWidget *>(widget->parent()))
4709  if (dw->isFloating()){
4710  qDrawPlainRect(painter,option->rect.adjusted(1, 1, 0, 0),
4711  option->palette.shadow().color(),1,&option->palette.button());
4712  return;
4713  }
4714  }
4715 #endif // QT_NO_DOCKWIDGET
4716  QBrush fill;
4717  bool stippled;
4718  bool panel = (element == PE_PanelButtonTool);
4719  if ((!(option->state & State_Sunken ))
4720  && (!(option->state & State_Enabled)
4721  || ((option->state & State_Enabled ) && !(option->state & State_MouseOver)))
4722  && (option->state & State_On)) {
4723  fill = QBrush(option->palette.light().color(), Qt::Dense4Pattern);
4724  stippled = true;
4725  } else {
4726  fill = option->palette.brush(QPalette::Button);
4727  stippled = false;
4728  }
4729  if (option->state & (State_Raised | State_Sunken | State_On)) {
4730  if (option->state & State_AutoRaise) {
4731  if(option->state & (State_Enabled | State_Sunken | State_On)){
4732  if (panel)
4733  qDrawPlainRect(painter, option->rect,option->palette.shadow().color(),d->doubleControls, &fill);
4734  else
4735  qDrawPlainRect(painter, option->rect,option->palette.shadow().color(),d->doubleControls, &fill);
4736  }
4737  if (stippled) {
4738  painter->setPen(option->palette.button().color());
4739  painter->drawRect(option->rect.adjusted(1, 1, -2, -2));
4740  }
4741  } else {
4742  qDrawPlainRect(painter, option->rect,option->palette.shadow().color(),d->doubleControls, &fill);
4743  }
4744  } else {
4745  painter->fillRect(option->rect, fill);
4746  }
4747  break; }
4748 
4749  case PE_FrameFocusRect:
4750  if (const QStyleOptionFocusRect *fropt = qstyleoption_cast<const QStyleOptionFocusRect *>(option)) {
4751  //### check for d->alt_down
4752  int penSize;
4753  d->doubleControls ? penSize = 2 : penSize = 1;
4754  bool alternateFocusStyle = false;
4755  if (!widget)
4756  alternateFocusStyle = true;
4757 #ifndef QT_NO_COMBOBOX
4758  if (qobject_cast<const QComboBox*>(widget))
4759  alternateFocusStyle = true;
4760 #endif
4761  if (!(fropt->state & State_KeyboardFocusChange) && !styleHint(SH_UnderlineShortcut, option))
4762  return;
4763  QRect r = option->rect;
4764  painter->save();
4766  if (alternateFocusStyle) {
4767  QColor bg_col = fropt->backgroundColor;
4768  if (!bg_col.isValid())
4769  bg_col = painter->background().color();
4770  // Create an "XOR" color.
4771  QColor patternCol((bg_col.red() ^ 0xff) & 0xff,
4772  (bg_col.green() ^ 0xff) & 0xff,
4773  (bg_col.blue() ^ 0xff) & 0xff);
4774  painter->setBrush(QBrush(patternCol, Qt::Dense4Pattern));
4775  painter->setBrushOrigin(r.topLeft());
4776  }
4777  else {
4778  painter->setPen(option->palette.highlight().color());
4779  painter->setBrush(option->palette.highlight());
4780  }
4781  painter->setPen(Qt::NoPen);
4782  painter->setBrushOrigin(r.topLeft());
4783  painter->drawRect(r.left(), r.top(), r.width(), penSize); // Top
4784  painter->drawRect(r.left(), r.bottom(), r.width() + penSize - 1, penSize); // Bottom
4785  painter->drawRect(r.left(), r.top(), penSize, r.height()); // Left
4786  painter->drawRect(r.right(), r.top(), penSize, r.height()); // Right
4787  painter->restore();
4788  }
4789  break;
4790 
4791  case PE_PanelButtonBevel: {
4792  QBrush fill;
4793  bool panel = element != PE_FrameButtonBevel;
4794  painter->setBrushOrigin(option->rect.topLeft());
4795  if (!(option->state & State_Sunken) && (option->state & State_On))
4796  fill = QBrush(option->palette.light().color(), Qt::Dense4Pattern);
4797  else
4798  fill = option->palette.brush(QPalette::Button);
4799 
4800  if (option->state & (State_Raised | State_On | State_Sunken)) {
4801  if (d->doubleControls)
4802  qDrawPlainRect(painter, option->rect,option->palette.shadow().color(),2,&fill);
4803  else
4804  qDrawPlainRect(painter, option->rect,option->palette.shadow().color(),1,&fill);
4805  } else {
4806  if (panel)
4807  painter->fillRect(option->rect, fill);
4808  else
4809  painter->drawRect(option->rect);
4810  }
4811  break; }
4812 
4813  case PE_FrameGroupBox:
4814  if (const QStyleOptionFrame *frame = qstyleoption_cast<const QStyleOptionFrame *>(option)) {
4815 
4816  const QStyleOptionFrameV2 *frame2 = qstyleoption_cast<const QStyleOptionFrameV2 *>(option);
4817  if (frame2 && !(frame2->features & QStyleOptionFrameV2::Flat)) {
4818  QPen oldPen = painter->pen();
4819  QRect r = frame->rect;
4820  painter->setPen(frame->palette.shadow().color());
4821  painter->fillRect(r.x(), r.y(), r.x() + r.width()-1,
4823  frame->palette.light());
4824  painter ->drawLine(r.topLeft() + QPoint(-2, 1), r.topRight()+ QPoint(0, 1));
4825  if (d->doubleControls)
4826  painter ->drawLine(r.topLeft() + QPoint(-2, 2), r.topRight()+ QPoint(0, 2));
4827  painter->setPen(oldPen);
4828  }
4829  }
4830  break;
4831 
4832  case PE_IndicatorCheckBox: {
4833  QBrush fill;
4834  QRect r = d->doubleControls ? option->rect.adjusted(0,1,0,-1) : option->rect;
4835  if (option->state & State_NoChange)
4836  fill = QBrush(option->palette.shadow().color(), Qt::Dense4Pattern);
4837  else if (option->state & State_Sunken)
4838  fill = option->palette.button();
4839  else if (option->state & State_Enabled)
4840  fill = option->palette.base();
4841  else
4842  fill = option->palette.background();
4843  painter->save();
4844  doRestore = true;
4845  if (d->doubleControls && (option->state & State_NoChange))
4846  painter->fillRect(r, fill);
4847  else
4848  painter->fillRect(option->rect, fill);
4849  painter->setPen(option->palette.shadow().color());
4850  painter->drawLine(r.topLeft(), r.topRight());
4851  painter->drawLine(r.topRight(), r.bottomRight());
4852  painter->drawLine(r.bottomLeft(), r.bottomRight());
4853  painter->drawLine(r.bottomLeft(), r.topLeft());
4854  if (d->doubleControls) {
4855  QRect r0 = r.adjusted(1, 1, -1, -1);
4856  painter->drawLine(r0.topLeft(), r0.topRight());
4857  painter->drawLine(r0.topRight(), r0.bottomRight());
4858  painter->drawLine(r0.bottomLeft(), r0.bottomRight());
4859  painter->drawLine(r0.bottomLeft(), r0.topLeft());
4860  }
4861  if (option->state & State_HasFocus) {
4862  painter->setPen(option->palette.highlight().color());
4863  QRect r2 = d->doubleControls ? r.adjusted(2, 2, -2, -2) : r.adjusted(1, 1, -1, -1);
4864  painter->drawLine(r2.topLeft(), r2.topRight());
4865  painter->drawLine(r2.topRight(), r2.bottomRight());
4866  painter->drawLine(r2.bottomLeft(), r2.bottomRight());
4867  painter->drawLine(r2.bottomLeft(), r2.topLeft());
4868  if (d->doubleControls) {
4869  QRect r3 = r2.adjusted(1, 1, -1, -1);
4870  painter->drawLine(r3.topLeft(), r3.topRight());
4871  painter->drawLine(r3.topRight(), r3.bottomRight());
4872  painter->drawLine(r3.bottomLeft(), r3.bottomRight());
4873  painter->drawLine(r3.bottomLeft(), r3.topLeft());
4874  }
4875  painter->setPen(option->palette.shadow().color());
4876  }
4877  //fall through...
4878  }
4879  case PE_IndicatorViewItemCheck:
4880  case PE_Q3CheckListIndicator: {
4881  if (!doRestore) {
4882  painter->save();
4883  doRestore = true;
4884  }
4885  if (element == PE_Q3CheckListIndicator || element == PE_IndicatorViewItemCheck) {
4886  painter->setPen(option->palette.shadow().color());
4887  if (option->state & State_NoChange)
4888  painter->setBrush(option->palette.brush(QPalette::Button));
4889  if (d->doubleControls) {
4891  qDrawPlainRect(painter, r, option->palette.shadow().color(), 2);
4892  } else {
4894  qDrawPlainRect(painter, r, option->palette.shadow().color(), 1);
4895  }
4896  if (option->state & State_Enabled)
4897  d->imageChecked.setColor(1, option->palette.shadow().color().rgba());
4898  else
4899  d->imageChecked.setColor(1, option->palette.dark().color().rgba());
4900  if (!(option->state & State_Off)) {
4901  if (d->doubleControls)
4902  painter->drawImage(option->rect.x(), option->rect.y(), d->imageChecked);
4903  else
4904  painter->drawImage(option->rect.x() + 3, option->rect.y() + 3, d->imageChecked);
4905  }
4906  }
4907  else {
4908  if (option->state & State_NoChange)
4909  d->imageCheckedBold.setColor(1, option->palette.dark().color().rgba());
4910  else if (option->state & State_Enabled)
4911  d->imageCheckedBold.setColor(1, option->palette.shadow().color().rgba());
4912  else
4913  d->imageCheckedBold.setColor(1, option->palette.dark().color().rgba());
4914  if (!(option->state & State_Off)) {
4915  if (d->doubleControls)
4916  painter->drawImage(option->rect.x() + 2, option->rect.y(), d->imageCheckedBold);
4917  else
4918  painter->drawImage(option->rect.x() + 3, option->rect.y() + 3, d->imageCheckedBold);
4919  }
4920  }
4921  if (doRestore)
4922  painter->restore();
4923  break; }
4924  case PE_IndicatorRadioButton: {
4925  painter->save();
4926 
4927  if (option->state & State_HasFocus) {
4930  painter->drawImage(option->rect.x(), option->rect.y(), d->imageRadioButtonHighlighted);
4931  }
4932  else {
4933  d->imageRadioButton.setColor(1, option->palette.shadow().color().rgba());
4934  painter->drawImage(option->rect.x(), option->rect.y(), d->imageRadioButton);
4935  }
4936  if (option->state & (State_Sunken | State_On)) {
4937  if (option->state & State_Enabled)
4939  else
4940  d->imageRadioButtonChecked.setColor(1, option->palette.dark().color().rgba());
4941 
4942  static const int offset = d->doubleControls ? 6 : 3;
4943  painter->drawImage(option->rect.x() + offset, option->rect.y() + offset, d->imageRadioButtonChecked);
4944  }
4945  painter->restore();
4946  break; }
4947  case PE_PanelButtonCommand:
4948  if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
4949  QBrush fill;
4950  State flags = option->state;
4951  QPalette pal = option->palette;
4952  QRect r = option->rect;
4953  if ((flags & State_Sunken || flags & State_On) )
4954  fill = pal.brush(QPalette::Shadow);
4955  else
4956  fill = pal.brush(QPalette::Button);
4957  int singleLine = 1;
4958  int doubleLine = 2;
4959  if (d->doubleControls) {
4960  singleLine = 2;
4961  doubleLine = 4;
4962  }
4963  if (button->features & QStyleOptionButton::DefaultButton && flags & State_Sunken) {
4964  if (d->doubleControls) {
4965  qDrawPlainRect(painter, r, pal.shadow().color(), 1, &fill);
4966  qDrawPlainRect(painter, r.adjusted(1, 1, -1, 1), pal.shadow().color(), 1, &fill);
4967  }
4968  else {
4969  qDrawPlainRect(painter, r, pal.shadow().color(), 1, &fill);
4970  }
4971  } else if (flags & (State_Raised | State_Sunken | State_On | State_Sunken)) {
4972  qDrawPlainRect(painter, r, pal.shadow().color(), singleLine, &fill);
4973  } else {
4974  painter->fillRect(r, fill);
4975  }
4976  }
4977  break;
4978  case PE_FrameDefaultButton: {
4979  painter->save();
4980  painter->setPen(option->palette.shadow().color());
4981  QRect rect = option->rect;
4982  if (d->doubleControls) {
4983  rect.adjust(1, 1, -2, -2);
4984  painter->drawRect(rect);
4985  painter->drawRect(rect.adjusted(1, 1, -1, -1));
4986  }
4987 
4988  else {
4989  rect.adjust(2, 2, -3, -3);
4990  painter->drawRect(rect);
4991  }
4992  painter->restore();
4993  break; }
4994  case PE_IndicatorSpinPlus:
4995  case PE_IndicatorSpinMinus: {
4996  QRect r = option->rect;
4997  int fw = proxy()->pixelMetric(PM_DefaultFrameWidth, option, widget)+2;
4998  QRect br = r.adjusted(fw, fw, -fw, -fw);
4999  int offset = (option->state & State_Sunken) ? 1 : 0;
5000  int step = (br.width() + 4) / 5;
5001  painter->fillRect(br.x() + offset, br.y() + offset +br.height() / 2 - step / 2,
5002  br.width(), step, option->palette.buttonText());
5003  if (element == PE_IndicatorSpinPlus)
5004  painter->fillRect(br.x() + br.width() / 2 - step / 2 + offset, br.y() + offset+4,
5005  step, br.height() - 7, option->palette.buttonText());
5006  break; }
5007  case PE_IndicatorSpinUp:
5008  case PE_IndicatorSpinDown: {
5009  painter->save();
5010  QPoint points[7];
5011  switch (element) {
5012  case PE_IndicatorSpinUp:
5013  points[0] = QPoint(-2, -4);
5014  points[1] = QPoint(-2, 2);
5015  points[2] = QPoint(-1, -3);
5016  points[3] = QPoint(-1, 1);
5017  points[4] = QPoint(0, -2);
5018  points[5] = QPoint(0, 0);
5019  points[6] = QPoint(1, -1);
5020  break;
5021  case PE_IndicatorSpinDown:
5022  points[0] = QPoint(0, -4);
5023  points[1] = QPoint(0, 2);
5024  points[2] = QPoint(-1, -3);
5025  points[3] = QPoint(-1, 1);
5026  points[4] = QPoint(-2, -2);
5027  points[5] = QPoint(-2, 0);
5028  points[6] = QPoint(-3, -1);
5029  break;
5030  default:
5031  break;
5032  }
5033  if (option->state & State_Sunken)
5034  painter->translate(proxy()->pixelMetric(PM_ButtonShiftHorizontal),
5035  proxy()->pixelMetric(PM_ButtonShiftVertical));
5036  if (option->state & State_Enabled) {
5037  painter->translate(option->rect.x() + option->rect.width() / 2,
5038  option->rect.y() + option->rect.height() / 2);
5039  painter->setPen(option->palette.buttonText().color());
5040  painter->drawLine(points[0], points[1]);
5041  painter->drawLine(points[2], points[3]);
5042  painter->drawLine(points[4], points[5]);
5043  painter->drawPoint(points[6]);
5044  } else {
5045  painter->translate(option->rect.x() + option->rect.width() / 2 + 1,
5046  option->rect.y() + option->rect.height() / 2 + 1);
5047  painter->setPen(option->palette.light().color());
5048  painter->drawLine(points[0], points[1]);
5049  painter->drawLine(points[2], points[3]);
5050  painter->drawLine(points[4], points[5]);
5051  painter->drawPoint(points[6]);
5052  painter->translate(-1, -1);
5053  painter->setPen(option->palette.mid().color());
5054  painter->drawLine(points[0], points[1]);
5055  painter->drawLine(points[2], points[3]);
5056  painter->drawLine(points[4], points[5]);
5057  painter->drawPoint(points[6]);
5058  }
5059  painter->restore();
5060  break; }
5061 
5066 
5067  case PE_IndicatorArrowUp:
5068  case PE_IndicatorArrowDown:
5069  case PE_IndicatorArrowRight:
5070  case PE_IndicatorArrowLeft: {
5071  painter->save();
5072 
5073  if (d->doubleControls) {
5074  QColor color;
5075  if (option->state & State_Sunken)
5076  color = option->palette.light().color();
5077  else
5078  color = option->palette.buttonText().color();
5079  QImage image;
5080  int xoffset, yoffset;
5081  bool isTabBarArrow = widget && widget->parent()
5082  && widget->inherits("QToolButton")
5083  && widget->parent()->inherits("QTabBar");
5084 
5085  switch (element) {
5086  case PE_IndicatorArrowUp:
5087  image = d->imageArrowUp;
5088  xoffset = 1;
5089  yoffset = 12;
5090  break;
5091  case PE_IndicatorArrowDown:
5092  image = d->imageArrowDown;
5093  xoffset = 1;
5094  yoffset =12;
5095  break;
5096  case PE_IndicatorArrowLeft:
5097  image = d->imageArrowLeft;
5098  xoffset = 8;
5099  yoffset = isTabBarArrow ? 12 : 2;
5100  break;
5101  case PE_IndicatorArrowRight:
5102  image = d->imageArrowRight;
5103  xoffset = 8;
5104  yoffset = isTabBarArrow ? 12 : 2;
5105  break;
5107  image = d->imageArrowUpBig;
5108  xoffset = 3;
5109  yoffset = 12;
5110  break;
5112  image = d->imageArrowDownBig;
5113  xoffset = 2;
5114  yoffset =12;
5115  break;
5117  image = d->imageArrowLeftBig;
5118  xoffset = 8;
5119  yoffset = 2;
5120  break;
5122  image = d->imageArrowRightBig;
5123  xoffset = 8;
5124  yoffset = 2;
5125  break;
5126  default:
5127  break;
5128  }
5129  image.setColor(1, color.rgba());
5130  painter->drawImage(option->rect.x() + xoffset, option->rect.y() + yoffset, image);
5131  }
5132  else {
5133  QPoint points[7];
5134  switch (element) {
5135  case PE_IndicatorArrowUp:
5137  points[0] = QPoint(-3, 1);
5138  points[1] = QPoint(3, 1);
5139  points[2] = QPoint(-2, 0);
5140  points[3] = QPoint(2, 0);
5141  points[4] = QPoint(-1, -1);
5142  points[5] = QPoint(1, -1);
5143  points[6] = QPoint(0, -2);
5144  break;
5145  case PE_IndicatorArrowDown:
5147  points[0] = QPoint(-3, -1);
5148  points[1] = QPoint(3, -1);
5149  points[2] = QPoint(-2, 0);
5150  points[3] = QPoint(2, 0);
5151  points[4] = QPoint(-1, 1);
5152  points[5] = QPoint(1, 1);
5153  points[6] = QPoint(0, 2);
5154  break;
5155  case PE_IndicatorArrowRight:
5157  points[0] = QPoint(-2, -3);
5158  points[1] = QPoint(-2, 3);
5159  points[2] = QPoint(-1, -2);
5160  points[3] = QPoint(-1, 2);
5161  points[4] = QPoint(0, -1);
5162  points[5] = QPoint(0, 1);
5163  points[6] = QPoint(1, 0);
5164  break;
5165  case PE_IndicatorArrowLeft:
5167  points[0] = QPoint(0, -3);
5168  points[1] = QPoint(0, 3);
5169  points[2] = QPoint(-1, -2);
5170  points[3] = QPoint(-1, 2);
5171  points[4] = QPoint(-2, -1);
5172  points[5] = QPoint(-2, 1);
5173  points[6] = QPoint(-3, 0);
5174  break;
5175  default:
5176  break;
5177  }
5178  if (option->state & State_Sunken)
5179  painter->setPen(option->palette.light().color());
5180  else
5181  painter->setPen(option->palette.buttonText().color());
5182  if (option->state & State_Enabled) {
5183  painter->translate(option->rect.x() + option->rect.width() / 2,
5184  option->rect.y() + option->rect.height() / 2 - 1);
5185  painter->drawLine(points[0], points[1]);
5186  painter->drawLine(points[2], points[3]);
5187  painter->drawLine(points[4], points[5]);
5188  painter->drawPoint(points[6]);
5189  } else {
5190  painter->translate(option->rect.x() + option->rect.width() / 2,
5191  option->rect.y() + option->rect.height() / 2 - 1);
5192  painter->setPen(option->palette.mid().color());
5193  painter->drawLine(points[0], points[1]);
5194  painter->drawLine(points[2], points[3]);
5195  painter->drawLine(points[4], points[5]);
5196  painter->drawPoint(points[6]);
5197  }
5198  }
5199  painter->restore();
5200  break; }
5201 #ifndef QT_NO_TABWIDGET
5202  case PE_FrameTabWidget:
5203  if (const QStyleOptionTabWidgetFrame *tab = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(option)) {
5204  QRect rect = option->rect;
5205  QPalette pal = option->palette;
5206  painter->save();
5207  QBrush fill = pal.light();
5208  painter->fillRect(rect, fill);
5209  painter->setPen(pal.shadow().color());
5210  if (d->doubleControls) {
5211  QPen pen = painter->pen();
5212  pen.setWidth(2);
5213  pen.setCapStyle(Qt::FlatCap);
5214  painter->setPen(pen);
5215  }
5216  switch (tab->shape) {
5217  case QTabBar::RoundedNorth:
5218 #ifdef Q_WS_WINCE_WM
5219  if (!d->wm65)
5220 #endif
5221  {
5222  if (d->doubleControls)
5223  painter->drawLine(rect.topLeft() + QPoint(0, 1), rect.topRight() + QPoint(0, 1));
5224  else
5225  painter->drawLine(rect.topLeft(), rect.topRight());
5226  }
5227  break;
5228  case QTabBar::RoundedSouth:
5229 #ifdef Q_WS_WINCE_WM
5230  if (!d->wm65)
5231 #endif
5232  {
5233  if (d->doubleControls)
5234  painter->drawLine(rect.bottomLeft(), rect.bottomRight());
5235  else
5236  painter->drawLine(rect.bottomLeft(), rect.bottomRight());
5237  }
5238  break;
5239  case QTabBar::RoundedEast:
5240 #ifdef Q_WS_WINCE_WM
5241  if (!d->wm65)
5242 #endif
5243  painter->drawLine(rect.topRight(), rect.bottomRight());
5244  break;
5245  case QTabBar::RoundedWest:
5246 #ifdef Q_WS_WINCE_WM
5247  if (!d->wm65)
5248 #endif
5249  painter->drawLine(rect.topLeft(), rect.bottomLeft());
5250  break;
5255  if (d->doubleControls)
5256  qDrawPlainRect(painter, rect.adjusted(0,-2,0,0), option->palette.shadow().color(),2,&pal.light());
5257  else
5258  qDrawPlainRect(painter, rect, option->palette.shadow().color(),1,&pal.light());
5259  break;
5260  default:
5261  break;
5262  }
5263  painter->restore();
5264  }
5265  break;
5266 #endif //QT_NO_TABBAR
5267 #ifndef QT_NO_ITEMVIEWS
5268  case PE_PanelItemViewRow:
5269  if (const QStyleOptionViewItemV4 *vopt = qstyleoption_cast<const QStyleOptionViewItemV4 *>(option)) {
5270  QPalette::ColorGroup cg = vopt->state & QStyle::State_Enabled
5272  if (cg == QPalette::Normal && !(vopt->state & QStyle::State_Active))
5273  cg = QPalette::Inactive;
5274 
5275  if ((vopt->state & QStyle::State_Selected) && proxy()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, option, widget))
5276  d->drawPanelItemViewSelected(painter, vopt);
5277  else if (vopt->features & QStyleOptionViewItemV2::Alternate)
5278  painter->fillRect(vopt->rect, vopt->palette.brush(cg, QPalette::AlternateBase));
5279  else if (!(vopt->state & QStyle::State_Enabled))
5280  painter->fillRect(vopt->rect, vopt->palette.brush(cg, QPalette::Base));
5281  }
5282  break;
5283  case PE_PanelItemViewItem:
5284  if (const QStyleOptionViewItemV4 *vopt = qstyleoption_cast<const QStyleOptionViewItemV4 *>(option)) {
5285  QPalette::ColorGroup cg = vopt->state & QStyle::State_Enabled
5287  if (cg == QPalette::Normal && !(vopt->state & QStyle::State_Active))
5288  cg = QPalette::Inactive;
5289 
5290  if (vopt->showDecorationSelected && (vopt->state & QStyle::State_Selected)) {
5291  d->drawPanelItemViewSelected(painter, vopt);
5292  } else {
5293  if (vopt->backgroundBrush.style() != Qt::NoBrush) {
5294  QPointF oldBO = painter->brushOrigin();
5295  painter->setBrushOrigin(vopt->rect.topLeft());
5296  painter->fillRect(vopt->rect, vopt->backgroundBrush);
5297  painter->setBrushOrigin(oldBO);
5298  }
5299 
5300  if (vopt->state & QStyle::State_Selected) {
5301  QRect textRect = proxy()->subElementRect(QStyle::SE_ItemViewItemText, option, widget);
5302  d->drawPanelItemViewSelected(painter, vopt, textRect);
5303  }
5304  }
5305  }
5306  break;
5307 #endif //QT_NO_ITEMVIEWS
5308 
5309  case PE_FrameWindow: {
5310  QPalette popupPal = option->palette;
5311  popupPal.setColor(QPalette::Light, option->palette.background().color());
5312  popupPal.setColor(QPalette::Midlight, option->palette.light().color());
5313  if (d->doubleControls)
5314  qDrawPlainRect(painter, option->rect, popupPal.shadow().color(),2,0);
5315  else
5316  qDrawPlainRect(painter, option->rect, popupPal.shadow().color(),1,0);
5317  break; }
5318  case PE_FrameTabBarBase: {
5319  break; }
5320  case PE_Widget:
5321  break;
5322  case PE_IndicatorMenuCheckMark: {
5323  int markW = option->rect.width() > 7 ? 7 : option->rect.width();
5324  int markH = markW;
5325  if (d->doubleControls)
5326  markW*=2;
5327  markH*=2;
5328  int posX = option->rect.x() + (option->rect.width() - markW)/2 + 1;
5329  int posY = option->rect.y() + (option->rect.height() - markH)/2;
5330 
5332  a.reserve(markH);
5333 
5334  int i, xx, yy;
5335  xx = posX;
5336  yy = 3 + posY;
5337  for (i = 0; i < markW/2; ++i) {
5338  a << QLineF(xx, yy, xx, yy + 2);
5339  ++xx;
5340  ++yy;
5341  }
5342  yy -= 2;
5343  for (; i < markH; ++i) {
5344  a << QLineF(xx, yy, xx, yy + 2);
5345  ++xx;
5346  --yy;
5347  }
5348  if (!(option->state & State_Enabled) && !(option->state & State_On)) {
5349  int pnt;
5350  painter->setPen(option->palette.highlightedText().color());
5351  QPoint offset(1, 1);
5352  for (pnt = 0; pnt < a.size(); ++pnt)
5353  a[pnt].translate(offset.x(), offset.y());
5354  painter->drawLines(a);
5355  for (pnt = 0; pnt < a.size(); ++pnt)
5356  a[pnt].translate(offset.x(), offset.y());
5357  }
5358  painter->setPen(option->palette.text().color());
5359  painter->drawLines(a);
5360  break; }
5361  case PE_IndicatorBranch: {
5362  // Copied from the Windows style.
5363  static const int decoration_size = d->doubleControls ? 18 : 9;
5364  static const int ofsA = d->doubleControls ? 4 : 2;
5365  static const int ofsB = d->doubleControls ? 8 : 4;
5366  static const int ofsC = d->doubleControls ? 12 : 6;
5367  static const int ofsD = d->doubleControls ? 1 : 0;
5368  int mid_h = option->rect.x() + option->rect.width() / 2;
5369  int mid_v = option->rect.y() + option->rect.height() / 2;
5370  int bef_h = mid_h;
5371  int bef_v = mid_v;
5372  int aft_h = mid_h;
5373  int aft_v = mid_v;
5374  if (option->state & State_Children) {
5375  int delta = decoration_size / 2;
5376  bef_h -= delta;
5377  bef_v -= delta;
5378  aft_h += delta;
5379  aft_v += delta;
5380  QPen oldPen = painter->pen();
5381  QPen crossPen = oldPen;
5382  crossPen.setWidth(2);
5383  painter->setPen(crossPen);
5384  painter->drawLine(bef_h + ofsA + ofsD, bef_v + ofsB + ofsD, bef_h + ofsC + ofsD, bef_v + ofsB + ofsD);
5385  if (!(option->state & State_Open))
5386  painter->drawLine(bef_h + ofsB + ofsD, bef_v + ofsA + ofsD, bef_h + ofsB + ofsD, bef_v + ofsC + ofsD);
5387  painter->setPen(option->palette.dark().color());
5388  painter->drawRect(bef_h, bef_v, decoration_size - 1, decoration_size - 1);
5389  if (d->doubleControls)
5390  painter->drawRect(bef_h + 1, bef_v + 1, decoration_size - 3, decoration_size - 3);
5391  painter->setPen(oldPen);
5392  }
5393  QBrush brush(option->palette.dark().color(), Qt::Dense4Pattern);
5394  if (option->state & State_Item) {
5395  if (option->direction == Qt::RightToLeft)
5396  painter->fillRect(option->rect.left(), mid_v, bef_h - option->rect.left(), 1, brush);
5397  else
5398  painter->fillRect(aft_h, mid_v, option->rect.right() - aft_h + 1, 1, brush);
5399  }
5400  if (option->state & State_Sibling)
5401  painter->fillRect(mid_h, aft_v, 1, option->rect.bottom() - aft_v + 1, brush);
5402  if (option->state & (State_Open | State_Children | State_Item | State_Sibling))
5403  painter->fillRect(mid_h, option->rect.y(), 1, bef_v - option->rect.y(), brush);
5404  break; }
5405  case PE_Frame:
5406  qDrawPlainRect(painter, option->rect, option->palette.shadow().color(),
5407  d->doubleControls ? 2 : 1, &option->palette.background());
5408  break;
5409  case PE_FrameLineEdit:
5410  case PE_FrameMenu:
5411  if (d->doubleControls)
5412  qDrawPlainRect(painter, option->rect, option->palette.shadow().color(),2);
5413  else
5414  qDrawPlainRect(painter, option->rect, option->palette.shadow().color(),1);
5415  break;
5416  case PE_FrameStatusBar:
5417  if (d->doubleControls)
5418  qDrawPlainRect(painter, option->rect, option->palette.shadow().color(),2,0);
5419  else
5420  qDrawPlainRect(painter, option->rect, option->palette.shadow().color(),1,0);
5421  break;
5422 
5423  default:
5424  QWindowsStyle::drawPrimitive(element, option, painter, widget);
5425  break;
5426  }
5427 }
5428 
5430  QPainter *painter, const QWidget *widget) const {
5431 
5432 
5433  QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
5434 
5435 
5436  painter->setClipping(false);
5437  switch (element) {
5438  case CE_MenuBarEmptyArea:
5439  painter->setClipping(true);
5440  QWindowsStyle::drawControl(element, option, painter, widget);
5441  break;
5442  case CE_PushButtonBevel:
5443  if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
5444  QRect br = button->rect;
5445  int dbi = proxy()->pixelMetric(PM_ButtonDefaultIndicator, button, widget);
5446 
5447  if (button->features & QStyleOptionButton::AutoDefaultButton)
5448  br.setCoords(br.left() + dbi, br.top() + dbi, br.right() - dbi, br.bottom() - dbi);
5449  QStyleOptionButton tmpBtn = *button;
5450  tmpBtn.rect = br;
5451  proxy()->drawPrimitive(PE_PanelButtonCommand, &tmpBtn, painter, widget);
5452  if (button->features & QStyleOptionButton::HasMenu) {
5453  int mbi = proxy()->pixelMetric(PM_MenuButtonIndicator, button, widget);
5454  QRect ir = button->rect;
5455  QStyleOptionButton newButton = *button;
5456  if (d->doubleControls)
5457  newButton.rect = QRect(ir.right() - mbi, ir.height() - 30, mbi, ir.height() - 4);
5458  else
5459  newButton.rect = QRect(ir.right() - mbi, ir.height() - 20, mbi, ir.height() - 4);
5460  proxy()->drawPrimitive(PE_IndicatorArrowDown, &newButton, painter, widget);
5461  }
5462  if (button->features & QStyleOptionButton::DefaultButton)
5463  proxy()->drawPrimitive(PE_FrameDefaultButton, option, painter, widget);
5464  }
5465  break;
5466  case CE_RadioButton:
5467  case CE_CheckBox:
5468  if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
5469  bool isRadio = (element == CE_RadioButton);
5470  QStyleOptionButton subopt = *button;
5471  subopt.rect = proxy()->subElementRect(isRadio ? SE_RadioButtonIndicator
5472  : SE_CheckBoxIndicator, button, widget);
5473  proxy()->drawPrimitive(isRadio ? PE_IndicatorRadioButton : PE_IndicatorCheckBox,
5474  &subopt, painter, widget);
5475  subopt.rect = proxy()->subElementRect(isRadio ? SE_RadioButtonContents
5476  : SE_CheckBoxContents, button, widget);
5477  proxy()->drawControl(isRadio ? CE_RadioButtonLabel : CE_CheckBoxLabel, &subopt, painter, widget);
5478  if (button->state & State_HasFocus) {
5479  QStyleOptionFocusRect fropt;
5480  fropt.QStyleOption::operator=(*button);
5481  fropt.rect = proxy()->subElementRect(isRadio ? SE_RadioButtonFocusRect
5482  : SE_CheckBoxFocusRect, button, widget);
5483  proxy()->drawPrimitive(PE_FrameFocusRect, &fropt, painter, widget);
5484  }
5485  }
5486  break;
5487  case CE_RadioButtonLabel:
5488  case CE_CheckBoxLabel:
5489  if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
5490  uint alignment = visualAlignment(button->direction, Qt::AlignLeft | Qt::AlignVCenter);
5491  if (!styleHint(SH_UnderlineShortcut, button, widget))
5492  alignment |= Qt::TextHideMnemonic;
5493  QPixmap pix;
5494  QRect textRect = button->rect;
5495  if (!button->icon.isNull()) {
5496  pix = button->icon.pixmap(button->iconSize, button->state & State_Enabled ? QIcon::Normal : QIcon::Disabled);
5497  proxy()->drawItemPixmap(painter, button->rect, alignment, pix);
5498  if (button->direction == Qt::RightToLeft)
5499  textRect.setRight(textRect.right() - button->iconSize.width() - 4);
5500  else
5501  textRect.setLeft(textRect.left() + button->iconSize.width() + 4);
5502  }
5503  if (!button->text.isEmpty()){
5504  if (button->state & State_Enabled)
5505  proxy()->drawItemText(painter, textRect, alignment | Qt::TextShowMnemonic,
5506  button->palette, false, button->text, QPalette::WindowText);
5507  else
5508  proxy()->drawItemText(painter, textRect, alignment | Qt::TextShowMnemonic,
5509  button->palette, false, button->text, QPalette::Mid);
5510  }
5511  }
5512  break;
5513 #ifndef QT_NO_PROGRESSBAR
5514  case CE_ProgressBarGroove:
5515  if (d->doubleControls)
5516  qDrawPlainRect(painter, option->rect, option->palette.shadow().color(), 2, &option->palette.brush(QPalette::Window));
5517  else
5518  qDrawPlainRect(painter, option->rect, option->palette.shadow().color(), 1, &option->palette.brush(QPalette::Window));
5519  break;
5520 #endif //QT_NO_PROGRESSBAR
5521 #ifndef QT_NO_TABBAR
5522  case CE_TabBarTab:
5523  if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) {
5524  proxy()->drawControl(CE_TabBarTabShape, tab, painter, widget);
5525  proxy()->drawControl(CE_TabBarTabLabel, tab, painter, widget);
5526  }
5527  break;
5528  case CE_TabBarTabShape:
5529  if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) {
5530 
5531  if (tab->shape == QTabBar::RoundedNorth || tab->shape == QTabBar::RoundedEast ||
5532  tab->shape == QTabBar::RoundedSouth || tab->shape == QTabBar::RoundedWest) {
5533  d->drawTabBarTab(painter, tab);
5534  } else {
5535  QCommonStyle::drawControl(element, option, painter, widget);
5536  }
5537  break; }
5538 
5539 #endif // QT_NO_TABBAR
5540 
5541 #ifndef QT_NO_TOOLBAR
5542  case CE_ToolBar:
5543  if (const QStyleOptionToolBar *toolBar = qstyleoption_cast<const QStyleOptionToolBar *>(option)) {
5544  QRect rect = option->rect;
5545  painter->save();
5546  painter->setPen(option->palette.dark().color());
5547  painter->fillRect(rect,option->palette.button());
5548  if (d->doubleControls) {
5549  QPen pen = painter->pen();
5550  pen.setWidth(4);
5551  painter->setPen(pen);
5552  }
5553  if (toolBar->toolBarArea == Qt::TopToolBarArea)
5554  painter->drawLine(rect.bottomLeft(), rect.bottomRight());
5555  else
5556  painter->drawLine(rect.topLeft(), rect.topRight());
5557  painter->restore();
5558  break; }
5559 #endif //QT_NO_TOOLBAR
5560  case CE_Header:
5561  if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(option)) {
5562  QRegion clipRegion = painter->clipRegion();
5563  painter->setClipRect(option->rect);
5564  proxy()->drawControl(CE_HeaderSection, header, painter, widget);
5565  QStyleOptionHeader subopt = *header;
5566  subopt.rect = proxy()->subElementRect(SE_HeaderLabel, header, widget);
5567  if (header->state & State_Sunken)
5568  subopt.palette.setColor(QPalette::ButtonText, header->palette.brightText().color());
5569  subopt.state |= QStyle::State_On;
5570  if (subopt.rect.isValid())
5571  proxy()->drawControl(CE_HeaderLabel, &subopt, painter, widget);
5572  if (header->sortIndicator != QStyleOptionHeader::None) {
5573  subopt.rect = proxy()->subElementRect(SE_HeaderArrow, option, widget);
5574  proxy()->drawPrimitive(PE_IndicatorHeaderArrow, &subopt, painter, widget);
5575  }
5576  painter->setClipRegion(clipRegion);
5577  }
5578  break;
5579 
5580  case CE_HeaderSection:
5581  if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(option)) {
5582  QBrush fill;
5583  QColor color;
5584  QRect rect = option->rect;
5585  painter->setPen(option->palette.shadow().color());
5586 
5587  int penSize = 1;
5588 
5589  if (d->doubleControls) {
5590  penSize = 2;
5591  QPen pen = painter->pen();
5592  pen.setWidth(2);
5593  pen.setCapStyle(Qt::FlatCap);
5594  painter->setPen(pen);
5595  }
5596 
5597  //fix Frame
5598 
5599  if (header->position == QStyleOptionHeader::End
5600  || (header->position == QStyleOptionHeader::OnlyOneSection
5601  && !header->text.isEmpty()))
5602  if (Qt::Horizontal == header->orientation )
5603  rect.adjust(0, 0, penSize, 0);
5604  else
5605  rect.adjust(0, 0, 0, penSize);
5606 
5607  if (option->state & State_Sunken) {
5608  fill = option->palette.brush(QPalette::Shadow);
5609  color = option->palette.light().color();
5610  painter->drawLine(rect.bottomLeft(), rect.bottomRight());
5611  painter->drawLine(rect.topRight(), rect.bottomRight());
5612  rect.adjust(0, 0, -penSize, -penSize);
5613  }
5614  else {
5615  fill = option->palette.brush(QPalette::Button);
5616  color = option->palette.shadow().color();
5617  if (Qt::Horizontal == header->orientation )
5618  rect.adjust(-penSize, 0, 0, 0);
5619  else
5620  rect.adjust(0, -penSize, 0, 0);
5621  }
5622  if (Qt::Horizontal == header->orientation )
5623  rect.adjust(0,-penSize,0,0);
5624  else
5625  rect.adjust(-penSize, 0, 0, 0);
5626 
5627  if (option->state & State_Sunken) {
5628  qDrawPlainRect(painter, rect, color, penSize, &fill);
5629  } else {
5630  //Corner
5631  rect.adjust(-penSize, 0, 0, 0);
5632  qDrawPlainRect(painter, rect, color, penSize, &fill);
5633  }
5634 
5635  //Hack to get rid of some double lines... StyleOptions need a clean flag for that
5636  rect = option->rect;
5637 #ifndef QT_NO_SCROLLAREA
5638  if (const QAbstractScrollArea *abstractScrollArea = qobject_cast<const QAbstractScrollArea *> (widget) ) {
5639  QRect rectScrollArea = abstractScrollArea->geometry();
5640  if (Qt::Horizontal == header->orientation )
5641  if ((rectScrollArea.right() - rect.right() ) > 1)
5642  painter->drawLine(rect.topRight(), rect.bottomRight());
5643  else ;
5644  else
5645  if ((rectScrollArea.bottom() - rect.bottom() ) > 1)
5646  painter->drawLine(rect.bottomLeft(), rect.bottomRight());
5647  }
5648 #endif // QT_NO_SCROLLAREA
5649  break;
5650  }
5651 #ifndef QT_NO_COMBOBOX
5652  case CE_ComboBoxLabel:
5653  // This is copied from qcommonstyle.cpp with the difference, that
5654  // the editRect isn't adjusted when calling drawItemText.
5655  if (const QStyleOptionComboBox *cb = qstyleoption_cast<const QStyleOptionComboBox *>(option)) {
5656  QRect editRect = proxy()->subControlRect(CC_ComboBox, cb, SC_ComboBoxEditField, widget);
5657  painter->save();
5658  painter->setClipRect(editRect);
5659  if (!cb->currentIcon.isNull()) {
5660  QIcon::Mode mode = cb->state & State_Enabled ? QIcon::Normal
5661  : QIcon::Disabled;
5662  QPixmap pixmap = cb->currentIcon.pixmap(cb->iconSize, mode);
5663  QRect iconRect(editRect);
5664  iconRect.setWidth(cb->iconSize.width() + 4);
5665  iconRect = alignedRect(cb->direction,
5667  iconRect.size(), editRect);
5668  if (cb->editable)
5669  painter->fillRect(iconRect, option->palette.brush(QPalette::Base));
5670  proxy()->drawItemPixmap(painter, iconRect, Qt::AlignCenter, pixmap);
5671 
5672  if (cb->direction == Qt::RightToLeft)
5673  editRect.translate(-4 - cb->iconSize.width(), 0);
5674  else
5675  editRect.translate(cb->iconSize.width() + 4, 0);
5676  }
5677  if (!cb->currentText.isEmpty() && !cb->editable) {
5678  proxy()->drawItemText(painter, editRect,
5679  visualAlignment(cb->direction, Qt::AlignLeft | Qt::AlignVCenter),
5680  cb->palette, cb->state & State_Enabled, cb->currentText);
5681  }
5682  painter->restore();
5683  }
5684  break;
5685 #endif // QT_NO_COMBOBOX
5686 #ifndef QT_NO_DOCKWIDGET
5687  case CE_DockWidgetTitle:
5688  if (const QStyleOptionDockWidget *dwOpt = qstyleoption_cast<const QStyleOptionDockWidget *>(option)) {
5689  const QStyleOptionDockWidgetV2 *v2
5690  = qstyleoption_cast<const QStyleOptionDockWidgetV2*>(option);
5691  bool verticalTitleBar = v2 == 0 ? false : v2->verticalTitleBar;
5692 
5693  QRect rect = dwOpt->rect;
5694  QRect r = rect;
5695 
5696  if (verticalTitleBar) {
5697  QSize s = r.size();
5698  s.transpose();
5699  r.setSize(s);
5700 
5701  painter->save();
5702  painter->translate(r.left(), r.top() + r.width());
5703  painter->rotate(-90);
5704  painter->translate(-r.left(), -r.top());
5705  }
5706 
5707  bool floating = false;
5708  bool active = dwOpt->state & State_Active;
5709  int menuOffset = 0; //used to center text when floated
5710  QColor inactiveCaptionTextColor = option->palette.highlightedText().color();
5711  if (dwOpt->movable) {
5712  QColor left, right;
5713 
5714  //Titlebar gradient
5715  if (widget && widget->isWindow()) {
5716  floating = true;
5717  if (active) {
5718  right = option->palette.highlight().color();
5719  left = right.lighter(125);
5720  } else {
5721  left = option->palette.highlight().color().lighter(125);
5722  right = QColor(0xff, 0xff, 0xff);
5723  }
5724  menuOffset = 2;
5725  QBrush fillBrush(left);
5726  if (left != right) {
5727  QPoint p1(r.x(), r.top() + r.height()/2);
5728  QPoint p2(rect.right(), r.top() + r.height()/2);
5729  QLinearGradient lg(p1, p2);
5730  lg.setColorAt(0, left);
5731  lg.setColorAt(1, right);
5732  fillBrush = lg;
5733  }
5734  painter->fillRect(r.adjusted(0, 0, 0, -3), fillBrush);
5735  } else {
5736  painter->fillRect(r.adjusted(0, 0, 0, -3), option->palette.button().color());
5737  }
5738  painter->setPen(dwOpt->palette.color(QPalette::Light));
5739  if (!widget || !widget->isWindow()) {
5740  painter->drawLine(r.topLeft(), r.topRight());
5741  painter->setPen(dwOpt->palette.color(QPalette::Dark));
5742  painter->drawLine(r.bottomLeft(), r.bottomRight()); }
5743  }
5744  if (!dwOpt->title.isEmpty()) {
5745  QFont oldFont = painter->font();
5746  QFont newFont = oldFont;
5747  if (newFont.pointSize() > 2)
5748  newFont.setPointSize(newFont.pointSize() - 2);
5749  if (floating)
5750  newFont.setBold(true);
5751  painter->setFont(newFont);
5752  QPalette palette = dwOpt->palette;
5753  palette.setColor(QPalette::Window, inactiveCaptionTextColor);
5754  QRect titleRect = proxy()->subElementRect(SE_DockWidgetTitleBarText, option, widget);
5755  if (verticalTitleBar) {
5756  titleRect = QRect(r.left() + rect.bottom()
5757  - titleRect.bottom(),
5758  r.top() + titleRect.left() - rect.left(),
5759  titleRect.height(), titleRect.width());
5760  }
5761  proxy()->drawItemText(painter, titleRect,
5763  dwOpt->state & State_Enabled, dwOpt->title,
5764  floating ? (active ? QPalette::BrightText : QPalette::Window) : QPalette::WindowText);
5765  painter->setFont(oldFont);
5766  }
5767  if (verticalTitleBar)
5768  painter->restore();
5769  }
5770  return;
5771 #endif // QT_NO_DOCKWIDGET
5772 
5773  case CE_PushButtonLabel:
5774  if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
5775  painter->save();
5776  QRect ir = button->rect;
5777  QPalette::ColorRole colorRole;
5779  if (!styleHint(SH_UnderlineShortcut, button, widget))
5780  tf |= Qt::TextHideMnemonic;
5781 
5782  if (button->state & (State_On | State_Sunken))
5783  colorRole = QPalette::Light;
5784  else
5785  colorRole = QPalette::ButtonText;
5786 
5787  if (!button->icon.isNull()) {
5788  QIcon::Mode mode = button->state & State_Enabled ? QIcon::Normal
5789  : QIcon::Disabled;
5790  if (mode == QIcon::Normal && button->state & State_HasFocus)
5791  mode = QIcon::Active;
5792  QIcon::State state = QIcon::Off;
5793  if (button->state & State_On)
5794  state = QIcon::On;
5795  QPixmap pixmap = button->icon.pixmap(button->iconSize, mode, state);
5796  int pixw = pixmap.width();
5797  int pixh = pixmap.height();
5798  //Center the icon if there is no text
5799 
5800  QPoint point;
5801  if (button->text.isEmpty()) {
5802  point = QPoint(ir.x() + ir.width() / 2 - pixw / 2,
5803  ir.y() + ir.height() / 2 - pixh / 2);
5804  } else {
5805  point = QPoint(ir.x() + 2, ir.y() + ir.height() / 2 - pixh / 2);
5806  }
5807  if (button->direction == Qt::RightToLeft)
5808  point.rx() += pixw;
5809 
5810  if ((button->state & (State_On | State_Sunken)) && button->direction == Qt::RightToLeft)
5811  point.rx() -= proxy()->pixelMetric(PM_ButtonShiftHorizontal, option, widget) * 2;
5812 
5813  painter->drawPixmap(visualPos(button->direction, button->rect, point), pixmap);
5814 
5815  if (button->direction == Qt::RightToLeft)
5816  ir.translate(-4, 0);
5817  else
5818  ir.translate(pixw + 4, 0);
5819  ir.setWidth(ir.width() - (pixw + 4));
5820  // left-align text if there is
5821  if (!button->text.isEmpty())
5822  tf |= Qt::AlignLeft;
5823  } else {
5824  tf |= Qt::AlignHCenter;
5825  }
5826  if (button->state & State_Enabled)
5827  proxy()->drawItemText(painter, ir, tf, button->palette, true, button->text, colorRole);
5828  else
5829  proxy()->drawItemText(painter, ir, tf, button->palette, true, button->text, QPalette::Mid);
5830  painter->restore();
5831  }
5832  break;
5833  default:
5834  QWindowsStyle::drawControl(element, option, painter, widget);
5835  break;
5836  }
5837 }
5838 
5840  QPainter *painter, const QWidget *widget) const {
5841 
5842  painter->setClipping(false);
5843  QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
5844 
5845  switch (control) {
5846 #ifndef QT_NO_SLIDER
5847  case CC_Slider:
5848  if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(option)) {
5849  int thickness = proxy()->pixelMetric(PM_SliderControlThickness, slider, widget);
5850  int len = proxy()->pixelMetric(PM_SliderLength, slider, widget);
5851  int ticks = slider->tickPosition;
5852  QRect groove = proxy()->subControlRect(CC_Slider, slider, SC_SliderGroove, widget);
5853  QRect handle = proxy()->subControlRect(CC_Slider, slider, SC_SliderHandle, widget);
5854 
5855  if ((slider->subControls & SC_SliderGroove) && groove.isValid()) {
5856  int mid = thickness / 2;
5857  if (ticks & QSlider::TicksAbove)
5858  mid += len / 8;
5859  if (ticks & QSlider::TicksBelow)
5860  mid -= len / 8;
5861 
5862  painter->setPen(slider->palette.shadow().color());
5863  if (slider->orientation == Qt::Horizontal) {
5864  qDrawPlainRect(painter, groove.x(), groove.y() + mid - 2,
5865  groove.width(), 4, option->palette.shadow().color(),1,0);
5866  } else {
5867  qDrawPlainRect(painter, groove.x()+mid-2, groove.y(),
5868  4, groove.height(), option->palette.shadow().color(),1,0);
5869  }
5870  }
5871  if (slider->subControls & SC_SliderTickmarks) {
5872  QStyleOptionSlider tmpSlider = *slider;
5873  tmpSlider.subControls = SC_SliderTickmarks;
5874  QCommonStyle::drawComplexControl(control, &tmpSlider, painter, widget);
5875  }
5876 
5877  if (slider->subControls & SC_SliderHandle) {
5878  const QColor c0 = slider->palette.shadow().color();
5879  const QColor c1 = slider->palette.dark().color();
5880  const QColor c3 = slider->palette.midlight().color();
5881  const QColor c4 = slider->palette.dark().color();
5882  QBrush handleBrush;
5883 
5884  if (slider->state & State_Enabled) {
5885  handleBrush = slider->palette.color(QPalette::Light);
5886  } else {
5887  handleBrush = QBrush(slider->palette.color(QPalette::Shadow),
5889  }
5890  int x = handle.x(), y = handle.y(),
5891  wi = handle.width(), he = handle.height();
5892  int x1 = x;
5893  int x2 = x+wi-1;
5894  int y1 = y;
5895  int y2 = y+he-1;
5896 
5897  Qt::Orientation orient = slider->orientation;
5898  bool tickAbove = slider->tickPosition == QSlider::TicksAbove;
5899  bool tickBelow = slider->tickPosition == QSlider::TicksBelow;
5900 
5901  if (slider->state & State_HasFocus) {
5902  QStyleOptionFocusRect fropt;
5903  fropt.QStyleOption::operator=(*slider);
5904  fropt.rect = proxy()->subElementRect(SE_SliderFocusRect, slider, widget);
5905  proxy()->drawPrimitive(PE_FrameFocusRect, &fropt, painter, widget);
5906  }
5907  if ((tickAbove && tickBelow) || (!tickAbove && !tickBelow)) {
5908  Qt::BGMode oldMode = painter->backgroundMode();
5910  qDrawPlainRect(painter, QRect(x, y, wi, he)
5911  ,slider->palette.shadow().color(),1,&handleBrush);
5912  painter->setBackgroundMode(oldMode);
5913  QBrush fill = QBrush(option->palette.light().color(), Qt::Dense4Pattern);
5914  if (slider->state & State_Sunken)
5915  painter->fillRect(QRectF(x1 + 2, y1 + 2, x2 - x1 - 3, y2 - y1 - 3),fill);
5916  return;
5917  }
5918  QSliderDirection dir;
5919  if (orient == Qt::Horizontal)
5920  if (tickAbove)
5921  dir = SliderUp;
5922  else
5923  dir = SliderDown;
5924  else
5925  if (tickAbove)
5926  dir = SliderLeft;
5927  else
5928  dir = SliderRight;
5929  QPolygon polygon;
5930  int d = 0;
5931  switch (dir) {
5932  case SliderUp:
5933  x2++;
5934  y1 = y1 + wi / 2;
5935  d = (wi + 1) / 2 - 1;
5936  polygon.setPoints(5, x1, y1, x1, y2, x2, y2, x2, y1, x1 + d,y1 - d);
5937  break;
5938  case SliderDown:
5939  x2++;
5940  y2 = y2 - wi/2;
5941  d = (wi + 1) / 2 - 1;
5942  polygon.setPoints(5, x1, y1, x1, y2, x1 + d,y2 + d, x2, y2, x2, y1);
5943  break;
5944  case SliderLeft:
5945  d = (he + 1) / 2 - 1;
5946  x1 = x1 + he/2;
5947  polygon.setPoints(5, x1, y1, x1 - d, y1 + d, x1,y2, x2, y2, x2, y1);
5948  y1--;
5949  break;
5950  case SliderRight:
5951  d = (he + 1) / 2 - 1;
5952  x2 = x2 - he/2;
5953  polygon.setPoints(5, x1, y1, x1, y2, x2,y2, x2 + d, y1 + d, x2, y1);
5954  y1--;
5955  break;
5956  }
5957  QBrush oldBrush = painter->brush();
5958  painter->setPen(Qt::NoPen);
5959  painter->setBrush(handleBrush);
5960  Qt::BGMode oldMode = painter->backgroundMode();
5962  painter->drawRect(x1, y1, x2-x1+1, y2-y1+1);
5963  painter->drawPolygon(polygon);
5964  QBrush fill = QBrush(option->palette.button().color(), Qt::Dense4Pattern);
5965  painter->setBrush(oldBrush);
5966  painter->setBackgroundMode(oldMode);
5967  if (slider->state & State_Sunken)
5968  painter->fillRect(QRectF(x1, y1, x2 - x1 + 1, y2 - y1 + 1),fill);
5969 
5970  if (dir != SliderUp) {
5971  painter->setPen(c0);
5972  painter->drawLine(x1, y1, x2, y1);
5973  }
5974  if (dir != SliderLeft) {
5975  painter->setPen(c0);
5976  painter->drawLine(x1, y1, x1, y2);
5977  }
5978  if (dir != SliderRight) {
5979  painter->setPen(c0);
5980  painter->drawLine(x2, y1, x2, y2);
5981  }
5982  if (dir != SliderDown) {
5983  painter->setPen(c0);
5984  painter->drawLine(x1, y2, x2, y2);
5985  }
5986  switch (dir) {
5987  case SliderUp:
5988  if (slider->state & State_Sunken)
5989  painter->fillRect(QRectF(x1 + 3, y1 - d + 2, x2 - x1 - 4, y1),fill);
5990  painter->setPen(c0);
5991  painter->drawLine(x1, y1, x1 + d, y1 - d);
5992  d = wi - d - 1;
5993  painter->drawLine(x2, y1, x2 -d , y1 -d );
5994  d--;
5995  break;
5996  case SliderDown:
5997  if (slider->state & State_Sunken)
5998  painter->fillRect(QRectF(x1+3, y2 - d, x2 - x1 -4,y2 - 8),fill);
5999  painter->setPen(c0);
6000  painter->drawLine(x1, y2, x1 + d, y2 + d);
6001  d = wi - d - 1;
6002  painter->drawLine(x2, y2, x2 - d, y2 + d);
6003  d--;
6004  break;
6005  case SliderLeft:
6006  if (slider->state & State_Sunken)
6007  painter->fillRect(QRectF(x1 - d + 2, y1 + 2, x1, y2 - y1 - 3),fill);
6008  painter->setPen(c0);
6009  painter->drawLine(x1, y1, x1 - d, y1 + d);
6010  d = he - d - 1;
6011  painter->drawLine(x1, y2, x1 - d, y2 - d);
6012  d--;
6013  break;
6014  case SliderRight:
6015  if (slider->state & State_Sunken)
6016  painter->fillRect(QRectF(x2 - d - 4, y1 + 2, x2 - 4, y2 - y1 - 3),fill);
6017  painter->setPen(c0);
6018  painter->drawLine(x2, y1, x2 + d, y1 + d);
6019  painter->setPen(c0);
6020  d = he - d - 1;
6021  painter->drawLine(x2, y2, x2 + d, y2 - d);
6022  d--;
6023  break;
6024  }
6025  }
6026  }
6027  break;
6028 #endif //QT_NO_SLIDER
6029 #ifndef QT_NO_SCROLLBAR
6030  case CC_ScrollBar:
6031  painter->save();
6032  painter->setPen(option->palette.shadow().color());
6033  if (d->doubleControls) {
6034  QPen pen = painter->pen();
6035  pen.setWidth(2);
6037  painter->setPen(pen);
6038  }
6039  if (const QStyleOptionSlider *scrollbar = qstyleoption_cast<const QStyleOptionSlider *>(option)) {
6040  d->drawScrollbarGroove(painter, scrollbar);
6041  // Make a copy here and reset it for each primitive.
6042  QStyleOptionSlider newScrollbar = *scrollbar;
6043  State saveFlags = scrollbar->state;
6044  //Check if the scrollbar is part of an abstractItemView and draw the frame according
6045  bool drawCompleteFrame = true;
6046  bool secondScrollBar = false;
6047  if (widget)
6048  if (QWidget *parent = widget->parentWidget()) {
6049  if (QAbstractScrollArea *abstractScrollArea = qobject_cast<QAbstractScrollArea *>(parent->parentWidget())) {
6050  drawCompleteFrame = (abstractScrollArea->frameStyle() == QFrame::NoFrame) || (abstractScrollArea->frameStyle() == QFrame::StyledPanel);
6051  secondScrollBar = (abstractScrollArea->horizontalScrollBar()->isVisible()
6052  && abstractScrollArea->verticalScrollBar()->isVisible()) ;
6053  }
6054 #ifndef QT_NO_LISTVIEW
6055  if (QListView *listView = qobject_cast<QListView *>(parent->parentWidget()))
6056  drawCompleteFrame = false;
6057 #endif
6058  }
6059  if (scrollbar->minimum == scrollbar->maximum)
6060  saveFlags |= State_Enabled;
6061  if (scrollbar->subControls & SC_ScrollBarSubLine) {
6062  newScrollbar.state = saveFlags;
6063  newScrollbar.rect = proxy()->subControlRect(control, &newScrollbar, SC_ScrollBarSubLine, widget);
6064  if (newScrollbar.rect.isValid()) {
6065  if (!(scrollbar->activeSubControls & SC_ScrollBarSubLine))
6066  newScrollbar.state &= ~(State_Sunken | State_MouseOver);
6067  d->drawScrollbarHandleUp(painter, &newScrollbar, drawCompleteFrame, secondScrollBar);
6068  }
6069  }
6070  if (scrollbar->subControls & SC_ScrollBarAddLine) {
6071  newScrollbar.rect = scrollbar->rect;
6072  newScrollbar.state = saveFlags;
6073  newScrollbar.rect = proxy()->subControlRect(control, &newScrollbar, SC_ScrollBarAddLine, widget);
6074  if (newScrollbar.rect.isValid()) {
6075  if (!(scrollbar->activeSubControls & SC_ScrollBarAddLine))
6076  newScrollbar.state &= ~(State_Sunken | State_MouseOver);
6077  d->drawScrollbarHandleDown(painter, &newScrollbar, drawCompleteFrame, secondScrollBar);
6078  }
6079  }
6080  if (scrollbar->subControls & SC_ScrollBarSlider) {
6081 
6082  newScrollbar.rect = scrollbar->rect;
6083  newScrollbar.state = saveFlags;
6084  newScrollbar.rect = proxy()->subControlRect(control, &newScrollbar, SC_ScrollBarSlider, widget);
6085 
6086  if (newScrollbar.rect.isValid()) {
6087  if (!(scrollbar->activeSubControls & SC_ScrollBarSlider))
6088  newScrollbar.state &= ~(State_Sunken | State_MouseOver);
6089  d->drawScrollbarGrip(painter, &newScrollbar, option, drawCompleteFrame);
6090  }
6091  }
6092  }
6093  painter->restore();
6094  break;
6095 #endif // QT_NO_SCROLLBAR
6096  case CC_ToolButton:
6097  if (const QStyleOptionToolButton *toolbutton
6098  = qstyleoption_cast<const QStyleOptionToolButton *>(option)) {
6099  QRect button, menuarea;
6100  bool isTabWidget = false;
6101 #ifndef QT_NO_TABWIDGET
6102  if (widget)
6103  if (QWidget *parent = widget->parentWidget())
6104  isTabWidget = (qobject_cast<QTabWidget *>(parent->parentWidget()));
6105 #endif //QT_NO_TABWIDGET
6106 
6107  button = proxy()->subControlRect(control, toolbutton, SC_ToolButton, widget);
6108  menuarea = proxy()->subControlRect(control, toolbutton, SC_ToolButtonMenu, widget);
6109  State buttonFlags = toolbutton->state;
6110  if (buttonFlags & State_AutoRaise) {
6111  if (!(buttonFlags & State_MouseOver)) {
6112  buttonFlags &= ~State_Raised;
6113  }
6114  }
6115  State menuFlags = buttonFlags;
6116  if (toolbutton->activeSubControls & SC_ToolButton)
6117  buttonFlags |= State_Sunken;
6118  if (toolbutton->activeSubControls & SC_ToolButtonMenu)
6119  menuFlags |= State_On;
6120  QStyleOption tool(0);
6121  tool.palette = toolbutton->palette;
6122  if (toolbutton->subControls & SC_ToolButton) {
6123  tool.rect = button;
6124  tool.state = buttonFlags;
6125  proxy()->drawPrimitive(PE_PanelButtonTool, &tool, painter, widget);
6126  }
6127  if (toolbutton->subControls & SC_ToolButtonMenu) {
6128  tool.rect = menuarea;
6129  tool.state = buttonFlags & State_Enabled;
6130  QStyleOption toolMenu(0);
6131  toolMenu = *toolbutton;
6132  toolMenu.state = menuFlags;
6133  if (buttonFlags & State_Sunken)
6134  proxy()->drawPrimitive(PE_PanelButtonTool, &toolMenu, painter, widget);
6135  QStyleOption arrowOpt(0);
6136  arrowOpt.rect = tool.rect;
6137  arrowOpt.palette = tool.palette;
6138  State flags = State_None;
6139  if (menuFlags & State_Enabled)
6140  flags |= State_Enabled;
6141  if ((menuFlags & State_On) && !(buttonFlags & State_Sunken)) {
6142  flags |= State_Sunken;
6143  painter->fillRect(menuarea, option->palette.shadow());
6144  }
6145  arrowOpt.state = flags;
6146  proxy()->drawPrimitive(PE_IndicatorArrowDown, &arrowOpt, painter, widget);
6147  }
6148  if (toolbutton->state & State_HasFocus) {
6149  QStyleOptionFocusRect focusRect;
6150  focusRect.QStyleOption::operator=(*toolbutton);
6151  focusRect.rect.adjust(3, 3, -3, -3);
6152  if (toolbutton->features & QStyleOptionToolButton::Menu)
6153  focusRect.rect.adjust(0, 0, -proxy()->pixelMetric(QStyle::PM_MenuButtonIndicator,
6154  toolbutton, widget), 0);
6155  proxy()->drawPrimitive(PE_FrameFocusRect, &focusRect, painter, widget);
6156  }
6157  QStyleOptionToolButton label = *toolbutton;
6158  if (isTabWidget)
6159  label.state = toolbutton->state;
6160  else
6161  label.state = toolbutton->state & State_Enabled;
6162  int fw = proxy()->pixelMetric(PM_DefaultFrameWidth, option, widget);
6163  label.rect = button.adjusted(fw, fw, -fw, -fw);
6164  proxy()->drawControl(CE_ToolButtonLabel, &label, painter, widget);
6165  }
6166  break;
6167 
6168 #ifndef QT_NO_GROUPBOX
6169  case CC_GroupBox:
6170  if (const QStyleOptionGroupBox *groupBox = qstyleoption_cast<const QStyleOptionGroupBox *>(option)) {
6171  // Draw frame
6172  painter->save();
6173  QFont font = painter->font();
6174  font.setBold(true);
6175  painter->setFont(font);
6176  QStyleOptionGroupBox groupBoxFont = *groupBox;
6177  groupBoxFont.fontMetrics = QFontMetrics(font);
6178  QRect textRect = proxy()->subControlRect(CC_GroupBox, &groupBoxFont, SC_GroupBoxLabel, widget);
6179  QRect checkBoxRect = proxy()->subControlRect(CC_GroupBox, option, SC_GroupBoxCheckBox, widget).adjusted(0,0,0,0);
6180  if (groupBox->subControls & QStyle::SC_GroupBoxFrame) {
6181  QStyleOptionFrameV2 frame;
6182  frame.QStyleOption::operator=(*groupBox);
6183  frame.features = groupBox->features;
6184  frame.lineWidth = groupBox->lineWidth;
6185  frame.midLineWidth = groupBox->midLineWidth;
6186  frame.rect = proxy()->subControlRect(CC_GroupBox, option, SC_GroupBoxFrame, widget);
6187  painter->save();
6188  QRegion region(groupBox->rect);
6189  if (!groupBox->text.isEmpty()) {
6190  bool ltr = groupBox->direction == Qt::LeftToRight;
6191  QRect finalRect = checkBoxRect.united(textRect);
6192  if (groupBox->subControls & QStyle::SC_GroupBoxCheckBox)
6193  finalRect.adjust(ltr ? -4 : 0, 0, ltr ? 0 : 4, 0);
6194  region -= finalRect;
6195  }
6196  proxy()->drawPrimitive(PE_FrameGroupBox, &frame, painter, widget);
6197  painter->restore();
6198  }
6199  // Draw checkbox
6200  if (groupBox->subControls & SC_GroupBoxCheckBox) {
6201  QStyleOptionButton box;
6202  box.QStyleOption::operator=(*groupBox);
6203  box.rect = checkBoxRect;
6204  proxy()->drawPrimitive(PE_IndicatorCheckBox, &box, painter, widget);
6205  }
6206  // Draw title
6207  if ((groupBox->subControls & QStyle::SC_GroupBoxLabel) && !groupBox->text.isEmpty()) {
6208  QColor textColor = groupBox->textColor;
6209  if (textColor.isValid())
6210  painter->setPen(textColor);
6211  else
6212  painter->setPen(groupBox->palette.link().color());
6213  painter->setPen(groupBox->palette.link().color());
6214 
6215  int alignment = int(groupBox->textAlignment);
6216  if (!styleHint(QStyle::SH_UnderlineShortcut, option, widget))
6217  alignment |= Qt::TextHideMnemonic;
6218 
6219  if (groupBox->state & State_Enabled)
6220  proxy()->drawItemText(painter, textRect, Qt::TextShowMnemonic | Qt::AlignHCenter | alignment,
6221  groupBox->palette, true, groupBox->text,
6222  textColor.isValid() ? QPalette::NoRole : QPalette::Link);
6223  else
6224  proxy()->drawItemText(painter, textRect, Qt::TextShowMnemonic | Qt::AlignHCenter | alignment,
6225  groupBox->palette, true, groupBox->text, QPalette::Mid);
6226  if (groupBox->state & State_HasFocus) {
6227  QStyleOptionFocusRect fropt;
6228  fropt.QStyleOption::operator=(*groupBox);
6229  fropt.rect = textRect;
6230  proxy()->drawPrimitive(PE_FrameFocusRect, &fropt, painter, widget);
6231  }
6232  }
6233  painter->restore();
6234  }
6235  break;
6236 #endif //QT_NO_GROUPBOX
6237 
6238 #ifndef QT_NO_COMBOBOX
6239  case CC_ComboBox:
6240  if (const QStyleOptionComboBox *cmb = qstyleoption_cast<const QStyleOptionComboBox *>(option)) {
6241  QBrush editBrush = cmb->palette.brush(QPalette::Base);
6242  if ((cmb->subControls & SC_ComboBoxFrame) && cmb->frame)
6243  qDrawPlainRect(painter, option->rect, option->palette.shadow().color(), proxy()->pixelMetric(PM_ComboBoxFrameWidth, option, widget), &editBrush);
6244  else
6245  painter->fillRect(option->rect, editBrush);
6246  State flags = State_None;
6247  QRect ar = proxy()->subControlRect(CC_ComboBox, cmb, SC_ComboBoxArrow, widget);
6248  if ((option->state & State_On)) {
6249  painter->fillRect(ar.adjusted(0, 0, 1, 1),cmb->palette.brush(QPalette::Shadow));
6250  }
6251  if (d->doubleControls)
6252  ar.adjust(5, 0, 5, 0);
6253  else
6254  ar.adjust(2, 0, -2, 0);
6255  if (option->state & State_Enabled)
6256  flags |= State_Enabled;
6257  if (option->state & State_On)
6258  flags |= State_Sunken;
6259  QStyleOption arrowOpt(0);
6260  arrowOpt.rect = ar;
6261  arrowOpt.palette = cmb->palette;
6262  arrowOpt.state = flags;
6263  proxy()->drawPrimitive(PrimitiveElement(PE_IndicatorArrowDownBig), &arrowOpt, painter, widget);
6264  if (cmb->subControls & SC_ComboBoxEditField) {
6265  QRect re = proxy()->subControlRect(CC_ComboBox, cmb, SC_ComboBoxEditField, widget);
6266  if (cmb->state & State_HasFocus && !cmb->editable)
6267  painter->fillRect(re.x(), re.y(), re.width(), re.height(),
6268  cmb->palette.brush(QPalette::Highlight));
6269  if (cmb->state & State_HasFocus) {
6270  painter->setPen(cmb->palette.highlightedText().color());
6271  painter->setBackground(cmb->palette.highlight());
6272  } else {
6273  painter->setPen(cmb->palette.text().color());
6274  painter->setBackground(cmb->palette.background());
6275  }
6276  if (cmb->state & State_HasFocus && !cmb->editable) {
6277  QStyleOptionFocusRect focus;
6278  focus.QStyleOption::operator=(*cmb);
6279  focus.rect = proxy()->subElementRect(SE_ComboBoxFocusRect, cmb, widget);
6280  focus.state |= State_FocusAtBorder;
6281  focus.backgroundColor = cmb->palette.highlight().color();
6282  if ((option->state & State_On))
6283  proxy()->drawPrimitive(PE_FrameFocusRect, &focus, painter, widget);
6284  }
6285  }
6286  }
6287  break;
6288 #endif // QT_NO_COMBOBOX
6289 
6290 
6291 #ifndef QT_NO_SPINBOX
6292  case CC_SpinBox:
6293  if (const QStyleOptionSpinBox *spinBox = qstyleoption_cast<const QStyleOptionSpinBox *>(option)) {
6294  QStyleOptionSpinBox copy = *spinBox;
6295  //PrimitiveElement primitiveElement;
6296  int primitiveElement;
6297 
6298  if (spinBox->frame && (spinBox->subControls & SC_SpinBoxFrame)) {
6299  QRect r = proxy()->subControlRect(CC_SpinBox, spinBox, SC_SpinBoxFrame, widget);
6300  qDrawPlainRect(painter, r, option->palette.shadow().color(), proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget),0);
6301  }
6302  QPalette shadePal(option->palette);
6303  shadePal.setColor(QPalette::Button, option->palette.light().color());
6304  shadePal.setColor(QPalette::Light, option->palette.base().color());
6305  if (spinBox->subControls & SC_SpinBoxUp) {
6306  copy.subControls = SC_SpinBoxUp;
6307  QPalette pal2 = spinBox->palette;
6308  if (!(spinBox->stepEnabled & QAbstractSpinBox::StepUpEnabled)) {
6310  copy.state &= ~State_Enabled;
6311  }
6312  copy.palette = pal2;
6313  if (spinBox->activeSubControls == SC_SpinBoxUp && (spinBox->state & State_Sunken)) {
6314  copy.state |= State_On;
6315  copy.state |= State_Sunken;
6316  } else {
6317  copy.state |= State_Raised;
6318  copy.state &= ~State_Sunken;
6319  }
6320  primitiveElement = (spinBox->buttonSymbols == QAbstractSpinBox::PlusMinus ? PE_IndicatorArrowUpBig
6322  copy.rect = proxy()->subControlRect(CC_SpinBox, spinBox, SC_SpinBoxUp, widget);
6323  if (copy.state & (State_Sunken | State_On))
6324  qDrawPlainRect(painter, copy.rect, option->palette.shadow().color(), proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), &copy.palette.brush(QPalette::Shadow));
6325  else
6326  qDrawPlainRect(painter, copy.rect, option->palette.shadow().color(), proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), &copy.palette.brush(QPalette::Base));
6327  copy.rect.adjust(proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), 0, -pixelMetric(PM_SpinBoxFrameWidth, option, widget), 0);
6328  proxy()->drawPrimitive(PrimitiveElement(primitiveElement), &copy, painter, widget);
6329  }
6330  if (spinBox->subControls & SC_SpinBoxDown) {
6331  copy.subControls = SC_SpinBoxDown;
6332  copy.state = spinBox->state;
6333  QPalette pal2 = spinBox->palette;
6334  if (!(spinBox->stepEnabled & QAbstractSpinBox::StepDownEnabled)) {
6336  copy.state &= ~State_Enabled;
6337  }
6338  copy.palette = pal2;
6339  if (spinBox->activeSubControls == SC_SpinBoxDown && (spinBox->state & State_Sunken)) {
6340  copy.state |= State_On;
6341  copy.state |= State_Sunken;
6342  } else {
6343  copy.state |= State_Raised;
6344  copy.state &= ~State_Sunken;
6345  }
6346  primitiveElement = (spinBox->buttonSymbols == QAbstractSpinBox::PlusMinus ? PE_IndicatorArrowDownBig
6348  copy.rect = proxy()->subControlRect(CC_SpinBox, spinBox, SC_SpinBoxDown, widget);
6349  qDrawPlainRect(painter, copy.rect, option->palette.shadow().color(), proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), &copy.palette.brush(QPalette::Base));
6350  if (copy.state & (State_Sunken | State_On))
6351  qDrawPlainRect(painter, copy.rect, option->palette.shadow().color(), proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), &copy.palette.brush(QPalette::Shadow));
6352  else
6353  qDrawPlainRect(painter, copy.rect, option->palette.shadow().color(), proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), &copy.palette.brush(QPalette::Base));
6354  copy.rect.adjust(3, 0, -4, 0);
6355  if (primitiveElement == PE_IndicatorArrowUp || primitiveElement == PE_IndicatorArrowDown) {
6356  int frameWidth = proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget);
6357  copy.rect = copy.rect.adjusted(frameWidth, frameWidth, -frameWidth, -frameWidth);
6358  proxy()->drawPrimitive(PrimitiveElement(primitiveElement), &copy, painter, widget);
6359  }
6360  else {
6361  proxy()->drawPrimitive(PrimitiveElement(primitiveElement), &copy, painter, widget);
6362  }
6363  if (spinBox->frame && (spinBox->subControls & SC_SpinBoxFrame)) {
6364  QRect r = proxy()->subControlRect(CC_SpinBox, spinBox, SC_SpinBoxEditField, widget);
6365  }
6366  }
6367  }
6368  break;
6369 #endif // QT_NO_SPINBOX
6370 
6371  default:
6372  QWindowsStyle::drawComplexControl(control, option, painter, widget);
6373  break;
6374  }
6375 }
6376 
6378  const QSize &size, const QWidget *widget) const {
6379 
6380  QSize newSize = QWindowsStyle::sizeFromContents(type, option, size, widget);
6381  switch (type) {
6382  case CT_PushButton:
6383  if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
6384  newSize = QCommonStyle::sizeFromContents(type, option, size, widget);
6385  int w = newSize.width(),
6386  h = newSize.height();
6387  int defwidth = 0;
6388  if (button->features & QStyleOptionButton::AutoDefaultButton)
6389  defwidth = 2 * proxy()->pixelMetric(PM_ButtonDefaultIndicator, button, widget);
6390 
6391  int minwidth = int(QStyleHelper::dpiScaled(55.0f));
6392  int minheight = int(QStyleHelper::dpiScaled(19.0f));
6393 
6394  if (w < minwidth + defwidth && button->icon.isNull())
6395  w = minwidth + defwidth;
6396  if (h < minheight + defwidth)
6397  h = minheight + defwidth;
6398  newSize = QSize(w + 4, h + 4);
6399  }
6400  break;
6401 
6402 #ifndef QT_NO_GROUPBOX
6403  case CT_GroupBox:
6404  if (const QGroupBox *grb = static_cast<const QGroupBox *>(widget)) {
6405  newSize = size + QSize(!grb->isFlat() ? 16 : 0, !grb->isFlat() ? 16 : 0);
6406  }
6407  break;
6408 #endif // QT_NO_GROUPBOX
6409 
6410  case CT_RadioButton:
6411  case CT_CheckBox:
6412  newSize = size;
6413  if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
6414  bool isRadio = (type == CT_RadioButton);
6415  QRect irect = visualRect(button->direction, button->rect,
6416  proxy()->subElementRect(isRadio ? SE_RadioButtonIndicator
6417  : SE_CheckBoxIndicator, button, widget));
6418  int h = proxy()->pixelMetric(isRadio ? PM_ExclusiveIndicatorHeight
6419  : PM_IndicatorHeight, button, widget);
6420  int margins = (!button->icon.isNull() && button->text.isEmpty()) ? 0 : 10;
6421  if (d_func()->doubleControls)
6422  margins *= 2;
6423  newSize += QSize(irect.right() + margins, 1);
6424  newSize.setHeight(qMax(newSize.height(), h));
6425  }
6426  break;
6427 #ifndef QT_NO_COMBOBOX
6428  case CT_ComboBox:
6429  if (const QStyleOptionComboBox *comboBox = qstyleoption_cast<const QStyleOptionComboBox *>(option)) {
6430  int fw = comboBox->frame ? proxy()->pixelMetric(PM_ComboBoxFrameWidth, option, widget) * 2 : 0;
6431  newSize = QSize(newSize.width() + fw + 9, newSize.height() + fw); //Nine is a magic Number - See CommonStyle for real magic (23)
6432  }
6433  break;
6434 #endif
6435 #ifndef QT_NO_SPINBOX
6436  case CT_SpinBox:
6437  if (const QStyleOptionSpinBox *spinBox = qstyleoption_cast<const QStyleOptionSpinBox *>(option)) {
6438  int fw = spinBox->frame ? proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget) * 2 : 0;
6439  newSize = QSize(newSize.width() + fw-5, newSize.height() + fw-6);
6440  }
6441  break;
6442 #endif
6443 #ifndef QT_NO_LINEEDIT
6444  case CT_LineEdit:
6445  newSize += QSize(0,1);
6446  break;
6447 #endif
6448  case CT_ToolButton:
6449  newSize = QSize(newSize.width() + 1, newSize.height());
6450  break;
6451  case CT_TabBarTab:
6452  if (d_func()->doubleControls)
6453  newSize = QSize(newSize.width(), 42);
6454  else
6455  newSize = QSize(newSize.width(), 21);
6456  break;
6457  case CT_HeaderSection:
6458  newSize += QSize(4, 2);
6459  break;
6460 #ifndef QT_NO_ITEMVIEWS
6461 #ifdef Q_WS_WINCE_WM
6462  case CT_ItemViewItem:
6463  if (d_func()->wm65)
6464  if (d_func()->doubleControls)
6465  newSize.setHeight(46);
6466  else
6467  newSize.setHeight(23);
6468  break;
6469 #endif //Q_WS_WINCE_WM
6470 #endif //QT_NO_ITEMVIEWS
6471  default:
6472  break;
6473  }
6474  return newSize;
6475 }
6476 
6477 QRect QWindowsMobileStyle::subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const {
6478 
6479  QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
6480  QRect rect = QWindowsStyle::subElementRect(element, option, widget);
6481  switch (element) {
6482 #ifndef QT_NO_TABWIDGET
6483  case SE_TabWidgetTabBar:
6484  if (d->doubleControls)
6485  rect.adjust(-2, 0, 2, 0);
6486  else
6487  rect.adjust(-2, 0, 2, 0);
6488  break;
6489 #endif //QT_NO_TABWIDGET
6490  case SE_CheckBoxFocusRect:
6491  rect.adjust(1,0,-2,-1);
6492  break;
6493  case SE_RadioButtonFocusRect:
6494  rect.adjust(1,1,-2,-2);
6495  break;
6496  default:
6497  break;
6498 #ifndef QT_NO_SLIDER
6499  case SE_SliderFocusRect:
6500  if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(option)) {
6501  rect = slider->rect;
6502  }
6503  break;
6504  case SE_PushButtonFocusRect:
6505  if (d->doubleControls)
6506  rect.adjust(-1, -1, 0, 0);
6507  break;
6508 #endif // QT_NO_SLIDER
6509 #ifndef QT_NO_ITEMVIEWS
6510  case SE_ItemViewItemFocusRect:
6511 #ifdef Q_WS_WINCE_WM
6512  if (d->wm65)
6513  rect = QRect();
6514 #endif
6515  break;
6516 #endif //QT_NO_ITEMVIEWS
6517  }
6518  return rect;
6519 }
6520 
6522  SubControl subControl, const QWidget *widget) const {
6523 
6524  QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
6525 
6526  QRect rect = QCommonStyle::subControlRect(control, option, subControl, widget);
6527  switch (control) {
6528 
6529 #ifndef QT_NO_SCROLLBAR
6530  case CC_ScrollBar:
6531  if (const QStyleOptionSlider *scrollbar = qstyleoption_cast<const QStyleOptionSlider *>(option)) {
6532  int sliderButtonExtent = proxy()->pixelMetric(PM_ScrollBarExtent, scrollbar, widget);
6533  float stretchFactor = 1.4f;
6534  int sliderButtonExtentDir = int (sliderButtonExtent * stretchFactor);
6535 
6536 #ifdef Q_WS_WINCE_WM
6537  if (d->wm65)
6538  {
6539  sliderButtonExtent = d->imageScrollbarHandleUp.width();
6540  sliderButtonExtentDir = d->imageScrollbarHandleUp.height();
6541  }
6542 #endif //Q_WS_WINCE_WM
6543 
6544  int sliderlen;
6545  int maxlen = ((scrollbar->orientation == Qt::Horizontal) ?
6546  scrollbar->rect.width() : scrollbar->rect.height()) - (sliderButtonExtentDir * 2);
6547  // calculate slider length
6548  if (scrollbar->maximum != scrollbar->minimum) {
6549  uint range = scrollbar->maximum - scrollbar->minimum;
6550  sliderlen = (qint64(scrollbar->pageStep) * maxlen) / (range + scrollbar->pageStep);
6551 
6552  int slidermin = proxy()->pixelMetric(PM_ScrollBarSliderMin, scrollbar, widget);
6553  if (sliderlen < slidermin || range > INT_MAX / 2)
6554  sliderlen = slidermin;
6555  if (sliderlen > maxlen)
6556  sliderlen = maxlen;
6557  } else {
6558  sliderlen = maxlen;
6559  }
6560  int sliderstart = sliderButtonExtentDir + sliderPositionFromValue(scrollbar->minimum,
6561  scrollbar->maximum,
6562  scrollbar->sliderPosition,
6563  maxlen - sliderlen,
6564  scrollbar->upsideDown);
6565  if (d->smartphone) {
6566  sliderstart -= sliderButtonExtentDir;
6567  sliderlen += 2*sliderButtonExtent;
6568  }
6569  switch (subControl) {
6570  case SC_ScrollBarSubLine: // top/left button
6571  if (scrollbar->orientation == Qt::Horizontal) {
6572  int buttonWidth = qMin(scrollbar->rect.width() / 2, sliderButtonExtentDir );
6573  rect.setRect(0, 0, buttonWidth, sliderButtonExtent);
6574  } else {
6575  int buttonHeight = qMin(scrollbar->rect.height() / 2, sliderButtonExtentDir);
6576  rect.setRect(0, 0, sliderButtonExtent, buttonHeight);
6577  }
6578  if (d->smartphone)
6579  rect.setRect(0, 0, 0, 0);
6580  break;
6581  case SC_ScrollBarAddLine: // bottom/right button
6582  if (scrollbar->orientation == Qt::Horizontal) {
6583  int buttonWidth = qMin(scrollbar->rect.width()/2, sliderButtonExtentDir);
6584  rect.setRect(scrollbar->rect.width() - buttonWidth, 0, buttonWidth, sliderButtonExtent);
6585  } else {
6586  int buttonHeight = qMin(scrollbar->rect.height()/2, sliderButtonExtentDir );
6587  rect.setRect(0, scrollbar->rect.height() - buttonHeight, sliderButtonExtent, buttonHeight);
6588  }
6589  if (d->smartphone)
6590  rect.setRect(0, 0, 0, 0);
6591  break;
6592  case SC_ScrollBarSubPage: // between top/left button and slider
6593  if (scrollbar->orientation == Qt::Horizontal)
6594  if (d->smartphone)
6595  rect.setRect(0, 0, sliderstart, sliderButtonExtent);
6596  else
6597  rect.setRect(sliderButtonExtent, 0, sliderstart - sliderButtonExtent, sliderButtonExtent);
6598  else
6599  if (d->smartphone)
6600  rect.setRect(0, 0, sliderButtonExtent, sliderstart);
6601  else
6602  rect.setRect(0, sliderButtonExtent, sliderButtonExtent, sliderstart - sliderButtonExtent);
6603  break;
6604  case SC_ScrollBarAddPage: // between bottom/right button and slider
6605  if (scrollbar->orientation == Qt::Horizontal)
6606  if (d->smartphone)
6607  rect.setRect(sliderstart + sliderlen, 0,
6608  maxlen - sliderstart - sliderlen + 2*sliderButtonExtent, sliderButtonExtent);
6609  else
6610  rect.setRect(sliderstart + sliderlen, 0,
6611  maxlen - sliderstart - sliderlen + sliderButtonExtent, sliderButtonExtent);
6612  else
6613  if (d->smartphone)
6614  rect.setRect(0, sliderstart + sliderlen, sliderButtonExtent,
6615  maxlen - sliderstart - sliderlen + 2*sliderButtonExtent);
6616  else
6617  rect.setRect(0, sliderstart + sliderlen, sliderButtonExtent,
6618  maxlen - sliderstart - sliderlen + sliderButtonExtent);
6619  break;
6620  case SC_ScrollBarGroove:
6621  if (scrollbar->orientation == Qt::Horizontal)
6622  rect.setRect(sliderButtonExtent, 0, scrollbar->rect.width() - sliderButtonExtent * 2,
6623  scrollbar->rect.height());
6624  else
6625  rect.setRect(0, sliderButtonExtent, scrollbar->rect.width(),
6626  scrollbar->rect.height() - sliderButtonExtent * 2);
6627  break;
6628  case SC_ScrollBarSlider:
6629  if (scrollbar->orientation == Qt::Horizontal)
6630  rect.setRect(sliderstart, 0, sliderlen, sliderButtonExtent);
6631  else
6632  rect.setRect(0, sliderstart, sliderButtonExtent, sliderlen);
6633  break;
6634  default:
6635  break;
6636  }
6637  rect = visualRect(scrollbar->direction, scrollbar->rect, rect);
6638  }
6639  break;
6640 #endif // QT_NO_SCROLLBAR
6641 
6642 
6643 
6644 #ifndef QT_NO_TOOLBUTTON
6645  case CC_ToolButton:
6646  if (const QStyleOptionToolButton *toolButton = qstyleoption_cast<const QStyleOptionToolButton *>(option)) {
6647  int mbi = proxy()->pixelMetric(PM_MenuButtonIndicator, toolButton, widget);
6648  rect = toolButton->rect;
6649  switch (subControl) {
6650  case SC_ToolButton:
6651  if ((toolButton->features
6654  rect.adjust(0, 0, -mbi, 0);
6655  break;
6656  case SC_ToolButtonMenu:
6657  if ((toolButton->features
6660  rect.adjust(rect.width() - mbi, 1, 0, 1);
6661  break;
6662  default:
6663  break;
6664  }
6665  rect = visualRect(toolButton->direction, toolButton->rect, rect);
6666  }
6667  break;
6668 #endif // QT_NO_TOOLBUTTON
6669 
6670 #ifndef QT_NO_SLIDER
6671  case CC_Slider:
6672  if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(option)) {
6673  int tickOffset = proxy()->pixelMetric(PM_SliderTickmarkOffset, slider, widget);
6674  int thickness = proxy()->pixelMetric(PM_SliderControlThickness, slider, widget);
6675  switch (subControl) {
6676  case SC_SliderHandle: {
6677  int sliderPos = 0;
6678  int len = proxy()->pixelMetric(PM_SliderLength, slider, widget);
6679  bool horizontal = slider->orientation == Qt::Horizontal;
6680  sliderPos = sliderPositionFromValue(slider->minimum, slider->maximum,
6681  slider->sliderPosition,
6682  (horizontal ? slider->rect.width()
6683  : slider->rect.height()) - len,
6684  slider->upsideDown);
6685  if (horizontal)
6686  rect.setRect(slider->rect.x() + sliderPos, slider->rect.y() + tickOffset, len, thickness);
6687  else
6688  rect.setRect(slider->rect.x() + tickOffset, slider->rect.y() + sliderPos, thickness, len);
6689  break; }
6690  default:
6691  break;
6692  }
6693  rect = visualRect(slider->direction, slider->rect, rect);
6694  }
6695  break;
6696 #endif //QT_NO_SLIDER
6697 #ifndef QT_NO_COMBOBOX
6698  case CC_ComboBox:
6699  if (const QStyleOptionComboBox *comboBox = qstyleoption_cast<const QStyleOptionComboBox *>(option)) {
6700  int x = comboBox->rect.x(),
6701  y = comboBox->rect.y(),
6702  wi = comboBox->rect.width(),
6703  he = comboBox->rect.height();
6704  int xpos = x;
6705  int margin = comboBox->frame ? (d->doubleControls ? 2 : 1) : 0;
6706  int bmarg = comboBox->frame ? (d->doubleControls ? 2 : 1) : 0;
6707  if (subControl == SC_ComboBoxArrow)
6708  xpos += wi - int((he - 2*bmarg)*0.9) - bmarg;
6709  else
6710  xpos += wi - (he - 2*bmarg) - bmarg;
6711  switch (subControl) {
6712  case SC_ComboBoxArrow:
6713  rect.setRect(xpos, y + bmarg, he - 2*bmarg, he - 2*bmarg);
6714  break;
6715  case SC_ComboBoxEditField:
6716  rect.setRect(x + margin, y + margin, wi - 2 * margin - int((he - 2*bmarg) * 0.84f), he - 2 * margin);
6717  if (d->doubleControls) {
6718  if (comboBox->editable)
6719  rect.adjust(2, 0, 0, 0);
6720  else
6721  rect.adjust(4, 2, 0, -2);
6722  } else if (!comboBox->editable) {
6723  rect.adjust(2, 1, 0, -1);
6724  }
6725  break;
6726  case SC_ComboBoxFrame:
6727  rect = comboBox->rect;
6728  break;
6729  default:
6730  break;
6731  }
6732  }
6733 #endif //QT_NO_COMBOBOX
6734 #ifndef QT_NO_SPINBOX
6735  case CC_SpinBox:
6736  if (const QStyleOptionSpinBox *spinBox = qstyleoption_cast<const QStyleOptionSpinBox *>(option)) {
6737  QSize bs;
6738  int fw = spinBox->frame ? proxy()->pixelMetric(PM_SpinBoxFrameWidth, spinBox, widget) : 0;
6739  bs.setHeight(qMax(d->doubleControls ? 28 : 14, (spinBox->rect.height())));
6740  // 1.6 -approximate golden mean
6741  bs.setWidth(qMax(d->doubleControls ? 28 : 14, qMin((bs.height()*7/8), (spinBox->rect.width() / 8))));
6743  int x, lx, rx;
6744  x = spinBox->rect.width() - bs.width()*2;
6745  lx = fw;
6746  rx = x - fw;
6747  switch (subControl) {
6748  case SC_SpinBoxUp:
6749  rect = QRect(x + proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), 0 , bs.width(), bs.height());
6750  break;
6751  case SC_SpinBoxDown:
6752  rect = QRect(x + bs.width(), 0, bs.width(), bs.height());
6753  break;
6754  case SC_SpinBoxEditField:
6755  if (spinBox->buttonSymbols == QAbstractSpinBox::NoButtons) {
6756  rect = QRect(lx, fw, spinBox->rect.width() - 2*fw - 2, spinBox->rect.height() - 2*fw);
6757  } else {
6758  rect = QRect(lx, fw, rx-2, spinBox->rect.height() - 2*fw);
6759  }
6760  break;
6761  case SC_SpinBoxFrame:
6762  rect = spinBox->rect;
6763  default:
6764  break;
6765  }
6766  rect = visualRect(spinBox->direction, spinBox->rect, rect);
6767  }
6768  break;
6769 #endif // Qt_NO_SPINBOX
6770 #ifndef QT_NO_GROUPBOX
6771  case CC_GroupBox: {
6772  if (const QStyleOptionGroupBox *groupBox = qstyleoption_cast<const QStyleOptionGroupBox *>(option)) {
6773  switch (subControl) {
6774  case SC_GroupBoxFrame:
6775  // FALL THROUGH
6776  case SC_GroupBoxContents: {
6777  int topMargin = 0;
6778  int topHeight = 0;
6779  int bottomMargin = 0;
6780  int labelMargin = 2;
6781 
6782  QRect frameRect = groupBox->rect;
6783  int verticalAlignment = styleHint(SH_GroupBox_TextLabelVerticalAlignment, groupBox, widget);
6784  if (groupBox->text.size()) {
6785  topHeight = groupBox->fontMetrics.height();
6786  if (verticalAlignment & Qt::AlignVCenter)
6787  topMargin = topHeight+5;
6788  else if (verticalAlignment & Qt::AlignTop)
6789  topMargin = -topHeight+5;
6790  }
6791  if (subControl == SC_GroupBoxFrame) {
6792  frameRect.setTop(topMargin);
6793  frameRect.setBottom(frameRect.height() + bottomMargin);
6794  rect = frameRect;
6795  break;
6796  }
6797  int frameWidth = 0;
6798  if (groupBox->text.size()) {
6799  frameWidth = proxy()->pixelMetric(PM_DefaultFrameWidth, groupBox, widget);
6800  rect = frameRect.adjusted(frameWidth, frameWidth + topHeight + labelMargin, -frameWidth, -frameWidth);
6801  }
6802  else {
6803  rect = groupBox->rect;
6804  }
6805  break;
6806  }
6807  case SC_GroupBoxCheckBox:
6808  // FALL THROUGH
6809  case SC_GroupBoxLabel: {
6810  QFontMetrics fontMetrics = groupBox->fontMetrics;
6811  int h = fontMetrics.height();
6812  int textWidth = fontMetrics.size(Qt::TextShowMnemonic, groupBox->text + QLatin1Char(' ')).width();
6813  int margX = (groupBox->features & QStyleOptionFrameV2::Flat) ? 0 : 2;
6814  int margY = (groupBox->features & QStyleOptionFrameV2::Flat) ? 0 : 2;
6815  rect = groupBox->rect.adjusted(margX, margY, -margX, 0);
6816  if (groupBox->text.size())
6817  rect.setHeight(h);
6818  else
6819  rect.setHeight(0);
6820  int indicatorWidth = proxy()->pixelMetric(PM_IndicatorWidth, option, widget);
6821  int indicatorSpace = proxy()->pixelMetric(PM_CheckBoxLabelSpacing, option, widget) - 1;
6822  bool hasCheckBox = groupBox->subControls & QStyle::SC_GroupBoxCheckBox;
6823  int checkBoxSize = hasCheckBox ? (indicatorWidth + indicatorSpace) : 0;
6824 
6825  // Adjusted rect for label + indicatorWidth + indicatorSpace
6826  QRect totalRect = alignedRect(groupBox->direction, groupBox->textAlignment,
6827  QSize(textWidth + checkBoxSize, h), rect);
6828 
6829  // Adjust totalRect if checkbox is set
6830  if (hasCheckBox) {
6831  bool ltr = groupBox->direction == Qt::LeftToRight;
6832  int left = 2;
6833  // Adjust for check box
6834  if (subControl == SC_GroupBoxCheckBox) {
6835  int indicatorHeight = proxy()->pixelMetric(PM_IndicatorHeight, option, widget);
6836  left = ltr ? totalRect.left() : (totalRect.right() - indicatorWidth);
6837  int top = totalRect.top() + (fontMetrics.height() - indicatorHeight) / 2;
6838  totalRect.setRect(left, top, indicatorWidth, indicatorHeight);
6839  // Adjust for label
6840  } else {
6841  left = ltr ? (totalRect.left() + checkBoxSize - 2) : totalRect.left();
6842  totalRect.setRect(left, totalRect.top(),
6843  totalRect.width() - checkBoxSize, totalRect.height());
6844  }
6845  }
6846  if ((subControl== SC_GroupBoxLabel))
6847  totalRect.adjust(-2,0,6,0);
6848  rect = totalRect;
6849  break;
6850  }
6851  default:
6852  break;
6853  }
6854  }
6855  break;
6856  }
6857 #endif // QT_NO_GROUPBOX
6858  default:
6859  break;
6860  }
6861  return rect;
6862 }
6863 
6865  QPalette palette (Qt::black,QColor(198, 195, 198), QColor(222, 223, 222 ),
6866  QColor(132, 130, 132), QColor(198, 195, 198), Qt::black, Qt::white, Qt::white, QColor(198, 195, 198));
6867  palette.setColor(QPalette::Window, QColor(206, 223, 239));
6868  palette.setColor(QPalette::Link, QColor(8,77,123)); //Alternate TextColor for labels...
6869  palette.setColor(QPalette::Base, Qt::white);
6870  palette.setColor(QPalette::Button, QColor(206, 223, 239));
6871  palette.setColor(QPalette::Highlight, QColor(49, 146, 214));
6873  palette.setColor(QPalette::Text, Qt::black);
6875  palette.setColor(QPalette::Midlight, QColor(222, 223, 222 ));
6876  palette.setColor(QPalette::Dark, QColor(132, 130, 132));
6877  palette.setColor(QPalette::Mid, QColor(189, 190, 189));
6878  palette.setColor(QPalette::Shadow, QColor(0, 0, 0));
6879  palette.setColor(QPalette::BrightText, QColor(33, 162, 33)); //color for ItemView checked indicator (arrow)
6880  return palette;
6881 }
6882 
6883 
6886  QWindowsStyle::polish(application);
6887 }
6888 
6891 
6892 #ifndef QT_NO_TOOLBAR
6893  if (QToolBar *toolBar = qobject_cast<QToolBar*>(widget)) {
6894  QPalette pal = toolBar->palette();
6895  pal.setColor(QPalette::Background, pal.button().color());
6896  toolBar->setPalette(pal);
6897  }
6898  else
6899 #endif //QT_NO_TOOLBAR
6900 
6901  QWindowsStyle::polish(widget);
6902 }
6903 
6905 {
6906  QWindowsStyle::unpolish(widget);
6907 }
6908 
6910 {
6912 }
6913 
6916  QWindowsStyle::polish(palette);
6917 }
6918 
6919 int QWindowsMobileStyle::pixelMetric(PixelMetric pm, const QStyleOption *opt, const QWidget *widget) const {
6920 
6921  QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
6922  int ret;
6923 
6924  switch (pm) {
6925  case PM_DefaultTopLevelMargin:
6926  ret =0;
6927  break;
6928  case PM_DefaultLayoutSpacing:
6929  d->doubleControls ? ret = 8 : ret = 4;
6930  break;
6931  case PM_HeaderMargin:
6932  d->doubleControls ? ret = 2 : ret = 1;
6933  break;
6934  case PM_DefaultChildMargin:
6935  d->doubleControls ? ret = 10 : ret = 5;
6936  break;
6937  case PM_ToolBarSeparatorExtent:
6938  d->doubleControls ? ret = 6 : ret = 3;
6939  break;
6940  case PM_DefaultFrameWidth:
6941  d->doubleControls ? ret = 2 : ret = 1;
6942  break;
6943  case PM_MenuVMargin:
6944  ret = 1;
6945  break;
6946  case PM_MenuHMargin:
6947  ret = 1;
6948  break;
6949  case PM_MenuButtonIndicator:
6950  ret = d->doubleControls ? 24 : 14;
6951  break;
6952  case PM_ComboBoxFrameWidth:
6953  d->doubleControls ? ret = 2 : ret = 1;
6954  break;
6955  case PM_SpinBoxFrameWidth:
6956  d->doubleControls ? ret = 2 : ret = 1;
6957  break;
6958  case PM_ButtonDefaultIndicator:
6959  case PM_ButtonShiftHorizontal:
6960  case PM_ButtonShiftVertical:
6961  d->doubleControls ? ret = 2 : ret = 1;
6962  break;
6963 #ifndef QT_NO_TABBAR
6964  case PM_TabBarTabShiftHorizontal:
6965  ret = 0;
6966  break;
6967  case PM_TabBarTabShiftVertical:
6968  ret = 0;
6969  break;
6970 #endif
6971  case PM_MaximumDragDistance:
6972  ret = 60;
6973  break;
6974  case PM_TabBarTabVSpace:
6975  ret = d->doubleControls ? 12 : 6;
6976  break;
6977  case PM_TabBarBaseHeight:
6978  ret = 0;
6979  break;
6980  case PM_IndicatorWidth:
6982  break;
6983  case PM_IndicatorHeight:
6985  break;
6986  case PM_ExclusiveIndicatorWidth:
6988  break;
6989  case PM_ExclusiveIndicatorHeight:
6991  break;
6992 #ifndef QT_NO_SLIDER
6993  case PM_SliderLength:
6994  ret = d->doubleControls ? 16 : 8;
6995  break;
6996  case PM_FocusFrameHMargin:
6997  ret = d->doubleControls ? 1 : 2;
6998  break;
6999  case PM_SliderThickness:
7001  break;
7002  case PM_TabBarScrollButtonWidth:
7003  ret = d->doubleControls ? 14 * 2 : 18;
7004  break;
7005  case PM_CheckBoxLabelSpacing:
7006  case PM_RadioButtonLabelSpacing:
7007  ret = d->doubleControls ? 6 * 2 : 6;
7008  break;
7009  // Returns the number of pixels to use for the business part of the
7010  // slider (i.e., the non-tickmark portion). The remaining space is shared
7011  // equally between the tickmark regions.
7012  case PM_SliderControlThickness:
7013  if (const QStyleOptionSlider *sl = qstyleoption_cast<const QStyleOptionSlider *>(opt)) {
7014  int space = (sl->orientation == Qt::Horizontal) ? sl->rect.height() : sl->rect.width();
7015  int ticks = sl->tickPosition;
7016  int n = 0;
7017  if (ticks & QSlider::TicksAbove)
7018  ++n;
7019  if (ticks & QSlider::TicksBelow)
7020  ++n;
7021  if (!n) {
7022  ret = space;
7023  break;
7024  }
7025  int thick = 8;
7026  if (ticks != QSlider::TicksBothSides && ticks != QSlider::NoTicks)
7027  thick += proxy()->pixelMetric(PM_SliderLength, sl, widget) / 4;
7028 
7029  space -= thick;
7030  if (space > 0)
7031  thick += (space * 2) / (n + 2);
7032  ret = thick;
7033  } else {
7034  ret = 0;
7035  }
7036  break;
7037 #endif // QT_NO_SLIDER
7038 #ifndef QT_NO_MENU
7039  case PM_SmallIconSize:
7041  break;
7042  case PM_ButtonMargin:
7043  d->doubleControls ? ret = 8 : ret = 4;
7044  break;
7045  case PM_LargeIconSize:
7046  d->doubleControls ? ret = 64 : ret = 32;
7047  break;
7048  case PM_IconViewIconSize:
7049  ret = proxy()->pixelMetric(PM_LargeIconSize, opt, widget);
7050  break;
7051  case PM_ToolBarIconSize:
7053  break;
7054  case PM_DockWidgetTitleMargin:
7055  ret = 2;
7056  break;
7057 #if defined(Q_WS_WIN)
7058 #else
7059  case PM_DockWidgetFrameWidth:
7060  ret = 4;
7061  break;
7062 #endif // Q_WS_WIN
7063  break;
7064 #endif // QT_NO_MENU
7065 
7066  case PM_TitleBarHeight:
7067  d->doubleControls ? ret = 42 : ret = 21;
7068  break;
7069  case PM_ScrollBarSliderMin:
7070 #ifdef Q_WS_WINCE_WM
7071  if (d->wm65)
7072 #else
7073  if (false)
7074 #endif
7075  {
7076  d->doubleControls ? ret = 68 : ret = 34;
7077  } else {
7078  d->doubleControls ? ret = 36 : ret = 18;
7079  }
7080  break;
7081  case PM_ScrollBarExtent: {
7082 
7083  if (d->smartphone)
7084  ret = 9;
7085  else
7086  d->doubleControls ? ret = 25 : ret = 13;
7087 
7088 #ifdef Q_WS_WINCE_WM
7089  if (d->wm65)
7090 #else
7091  if (false)
7092 #endif
7093  {
7094  d->doubleControls ? ret = 26 : ret = 13;
7095  break;
7096  }
7097 
7098 #ifndef QT_NO_SCROLLAREA
7099  //Check if the scrollbar is part of an abstractItemView and set size according
7100  if (widget)
7101  if (QWidget *parent = widget->parentWidget())
7102  if (qobject_cast<QAbstractScrollArea *>(parent->parentWidget()))
7103  if (d->smartphone)
7104  ret = 8;
7105  else
7106  d->doubleControls ? ret = 24 : ret = 12;
7107 #endif
7108  }
7109  break;
7110  case PM_SplitterWidth:
7111  ret = qMax(4, QApplication::globalStrut().width());
7112  break;
7113 
7114 #if defined(Q_WS_WIN)
7115  case PM_MDIFrameWidth:
7116  ret = 1;
7117  break;
7118 #endif
7119  case PM_ToolBarExtensionExtent:
7120  d->doubleControls ? ret = 32 : ret = 16;
7121  break;
7122  case PM_ToolBarItemMargin:
7123  d->doubleControls ? ret = 2 : ret = 1;
7124  break;
7125  case PM_ToolBarItemSpacing:
7126  d->doubleControls ? ret = 2 : ret = 1;
7127  break;
7128  case PM_ToolBarHandleExtent:
7129  d->doubleControls ? ret = 16 : ret = 8;
7130  break;
7131  case PM_ButtonIconSize:
7132  d->doubleControls ? ret = 32 : ret = 16;
7133  break;
7134  case PM_TextCursorWidth:
7135  ret = 2;
7136  break;
7137  case PM_TabBar_ScrollButtonOverlap:
7138  ret = 0;
7139  break;
7140  default:
7141  ret = QWindowsStyle::pixelMetric(pm, opt, widget);
7142  break;
7143  }
7144  return ret;
7145 }
7146 
7147 int QWindowsMobileStyle::styleHint(StyleHint hint, const QStyleOption *opt, const QWidget *widget,
7148  QStyleHintReturn *returnData) const {
7149 
7150  int ret;
7151  switch (hint) {
7152  case SH_Menu_MouseTracking:
7153  case SH_ComboBox_ListMouseTracking:
7154  case SH_EtchDisabledText:
7155  ret = 0;
7156  break;
7157  case SH_DitherDisabledText:
7158  ret = 0;
7159  break;
7160  case SH_ItemView_ShowDecorationSelected:
7161  ret = 0;
7162  break;
7163 #ifndef QT_NO_TABWIDGET
7164  case SH_TabWidget_DefaultTabPosition:
7165  ret = QTabWidget::South;
7166  break;
7167 #endif
7168  case SH_ToolBar_Movable:
7169  ret = false;
7170  break;
7171  case SH_ScrollBar_ContextMenu:
7172  ret = false;
7173  break;
7174  case SH_MenuBar_AltKeyNavigation:
7175  ret = false;
7176  break;
7177  case SH_RequestSoftwareInputPanel:
7178  ret = RSIP_OnMouseClick;
7179  break;
7180  default:
7181  ret = QWindowsStyle::styleHint(hint, opt, widget, returnData);
7182  break;
7183  }
7184  return ret;
7185 }
7186 
7188  const QWidget *widget) const {
7189 
7190  QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
7191  switch (sp) {
7192 #ifndef QT_NO_IMAGEFORMAT_XPM
7193  case SP_ToolBarHorizontalExtensionButton: {
7194  QPixmap pixmap = QCommonStyle::standardPixmap(sp, option, widget);
7195  if (d->doubleControls)
7196  return pixmap.scaledToHeight(pixmap.height() * 2);
7197  else
7198  return pixmap;
7199  }
7200  case SP_TitleBarMaxButton:
7201  case SP_TitleBarCloseButton:
7202  case SP_TitleBarNormalButton:
7203  case SP_TitleBarMinButton: {
7204  QImage image;
7205  switch (sp) {
7206  case SP_TitleBarMaxButton:
7207  image = d->imageMaximize;
7208  break;
7209  case SP_TitleBarCloseButton:
7210  image = d->imageClose;
7211  break;
7212  case SP_TitleBarNormalButton:
7213  image = d->imageNormalize;
7214  break;
7215  case SP_TitleBarMinButton:
7216  image = d->imageMinimize;
7217  break;
7218  default:
7219  break;
7220  }
7221  if (option) {
7222  image.setColor(0, option->palette.shadow().color().rgba());
7223  image.setColor(1, option->palette.highlight().color().rgba());
7224  image.setColor(2, option->palette.highlight().color().lighter(150).rgba());
7225  image.setColor(3, option->palette.highlightedText().color().rgba());
7226  }
7227 
7228  return QPixmap::fromImage(image);
7229  }
7230 
7231 #endif
7232  default:
7233  return QWindowsStyle::standardPixmap(sp, option, widget);
7234  }
7235 }
7236 
7238  const QStyleOption *option) const {
7239 
7240  switch (iconMode) {
7241  case QIcon::Selected: {
7242 #ifdef Q_WS_WINCE_WM
7243  if (d_func()->wm65)
7244  return pixmap;
7245 #endif //Q_WS_WINCE_WM
7247  int imgh = img.height();
7248  int imgw = img.width();
7249  for (int y = 0; y < imgh; y += 2) {
7250  for (int x = 0; x < imgw; x += 2) {
7251  QColor c = option->palette.highlight().color().rgb();
7252  c.setAlpha( qAlpha(img.pixel(x, y)));
7253  QRgb pixel = c.rgba();
7254  img.setPixel(x, y, pixel);
7255  }
7256  }
7257  return QPixmap::fromImage(img);
7258  }
7259  default:
7260  break;
7261  }
7262  return QWindowsStyle::generatedIconPixmap(iconMode, pixmap, option);
7263 }
7264 
7265 
7267 
7268  QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
7269 
7270  return d->doubleControls;
7271 }
7272 
7274 
7275  QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
7276 
7278 }
7279 
7281 
7282 #endif // QT_NO_STYLE_WINDOWSMOBILE
7283 
static QMessageBox::StandardButton newButton(int button)
void setBackgroundMode(Qt::BGMode mode)
Sets the background mode of the painter to the given mode.
Definition: qpainter.cpp:3998
The QPainter class performs low-level painting on widgets and other paint devices.
Definition: qpainter.h:86
The QColor class provides colors based on RGB, HSV or CMYK values.
Definition: qcolor.h:67
double d
Definition: qnumeric_p.h:62
void setPointSize(int)
Sets the point size to pointSize.
Definition: qfont.cpp:1099
void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w=0) const
Reimplemented Function
QRect subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const
Reimplemented Function
QPixmap scaledToHeight(int h, Qt::TransformationMode mode=Qt::FastTransformation) const
Definition: qpixmap.cpp:1673
static Qt::LayoutDirection layoutDirection()
void polish(QApplication *)
Reimplemented Function
void unpolish(QApplication *)
Reimplemented Function
QImage toImage() const
Converts the pixmap to a QImage.
Definition: qpixmap.cpp:542
const QBrush & highlight() const
Returns the highlight brush of the current color group.
Definition: qpalette.h:140
QWidget * parentWidget() const
Returns the parent of this widget, or 0 if it does not have any parent widget.
Definition: qwidget.h:1035
The QApplication class manages the GUI application&#39;s control flow and main settings.
Definition: qapplication.h:99
static QPixmap fromImage(const QImage &image, Qt::ImageConversionFlags flags=Qt::AutoColor)
Converts the given image to a pixmap using the specified flags to control the conversion.
Definition: qpixmap.cpp:2197
int pixelMetric(PixelMetric metric, const QStyleOption *option=0, const QWidget *widget=0) const
Reimplemented Function
#define Q_MAX_3(a, b, c)
Definition: qcolor.cpp:1773
static const int windowsMobileExclusiveIndicatorSize
static const char *const vertlines_xpm[]
void drawPath(const QPainterPath &path)
Draws the given painter path using the current pen for outline and the current brush for filling...
Definition: qpainter.cpp:3502
unsigned int QRgb
Definition: qrgb.h:53
QRect adjusted(int x1, int y1, int x2, int y2) const
Returns a new rectangle with dx1, dy1, dx2 and dy2 added respectively to the existing coordinates of ...
Definition: qrect.h:431
void setHeight(int h)
Sets the height of the rectangle to the given height.
Definition: qrect.h:445
const QBrush & base() const
Returns the base brush of the current color group.
Definition: qpalette.h:130
QPixmap standardPixmap(StandardPixmap sp, const QStyleOption *option, const QWidget *widget) const
Reimplemented Function
int type
Definition: qmetatype.cpp:239
SubControl
This enum describes the available sub controls.
Definition: qstyle.h:402
void setColor(int i, QRgb c)
Sets the color at the given index in the color table, to the given to colorValue. ...
Definition: qimage.cpp:1850
static const char *const arrowleft_big_xpm[]
StyleHint
This enum describes the available style hints.
Definition: qstyle.h:640
double qreal
Definition: qglobal.h:1193
The QStyleHintReturn class provides style hints that return more than basic data types.
Definition: qstyleoption.h:907
void setBottom(int pos)
Sets the bottom edge of the rectangle to the given y coordinate.
Definition: qrect.h:267
unsigned char c[8]
Definition: qnumeric_p.h:62
Q_DECL_CONSTEXPR const T & qMin(const T &a, const T &b)
Definition: qglobal.h:1215
The QFontMetrics class provides font metrics information.
Definition: qfontmetrics.h:65
#define QT_END_NAMESPACE
This macro expands to.
Definition: qglobal.h:90
The QStyleOptionDockWidget class is used to describe the parameters for drawing a dock widget...
Definition: qstyleoption.h:504
const QColor & color() const
Returns the brush color.
Definition: qbrush.h:183
int width() const
Returns the width of the pixmap.
Definition: qpixmap.cpp:630
static const char *const max_small_xpm[]
QPointer< QWidget > widget
ColorRole
The ColorRole enum defines the different symbolic color roles used in current GUIs.
Definition: qpalette.h:93
void qDrawPlainRect(QPainter *p, int x, int y, int w, int h, const QColor &c, int lineWidth, const QBrush *fill)
Definition: qdrawutil.cpp:511
void drawScrollbarGrip(QPainter *p, QStyleOptionSlider *newScrollbar, const QStyleOptionComplex *option, bool drawCompleteFrame)
static const char *const cross_small_xpm[]
const QBrush & dark() const
Returns the dark brush of the current color group.
Definition: qpalette.h:127
qreal valueF() const
Returns the value color component of this color.
Definition: qcolor.cpp:1416
The QDockWidget class provides a widget that can be docked inside a QMainWindow or floated as a top-l...
Definition: qdockwidget.h:60
qreal greenF() const
Returns the green color component of this color.
Definition: qcolor.cpp:1241
void setColorTable(const QVector< QRgb > colors)
Sets the color table used to translate color indexes to QRgb values, to the specified colors...
Definition: qimage.cpp:1744
const QBrush & background() const
Returns the current background brush.
Definition: qpainter.cpp:2482
static const char *const checkedlight_xpm[]
QStyle::State state
the style flags that are used when drawing the control
Definition: qstyleoption.h:88
The QStyleOptionHeader class is used to describe the parameters for drawing a header.
Definition: qstyleoption.h:251
static const int windowsMobileitemViewCheckBoxSize
bool isWindow() const
Returns true if the widget is an independent window, otherwise returns false.
Definition: qwidget.h:945
Q_GUI_EXPORT_INLINE int qAlpha(QRgb rgb)
Definition: qrgb.h:66
The QPainterPath class provides a container for painting operations, enabling graphical shapes to be ...
Definition: qpainterpath.h:67
int styleHint(StyleHint hint, const QStyleOption *opt=0, const QWidget *widget=0, QStyleHintReturn *returnData=0) const
Reimplemented Function
void setCapStyle(Qt::PenCapStyle pcs)
Sets the pen&#39;s cap style to the given style.
Definition: qpen.cpp:723
static QSize globalStrut()
void rotate(qreal a)
Rotates the coordinate system the given angle clockwise.
Definition: qpainter.cpp:3287
const QBrush & background() const
Use window() instead.
Definition: qpalette.h:134
ComplexControl
This enum describes the available complex controls.
Definition: qstyle.h:386
void drawPanelItemViewSelected(QPainter *painter, const QStyleOptionViewItemV4 *option, QRect rect=QRect())
QRect united(const QRect &other) const
Returns the bounding rectangle of this rectangle and the given rectangle.
Definition: qrect.h:491
static const int windowsMobileSliderThickness
void setClipRect(const QRectF &, Qt::ClipOperation op=Qt::ReplaceClip)
Enables clipping, and sets the clip region to the given rectangle using the given clip operation...
Definition: qpainter.cpp:2801
static const int PE_IndicatorArrowUpBig
The QPointF class defines a point in the plane using floating point precision.
Definition: qpoint.h:214
void restore()
Restores the current painter state (pops a saved state off the stack).
Definition: qpainter.cpp:1620
The QWidget class is the base class of all user interface objects.
Definition: qwidget.h:150
The QStyleOptionViewItemV4 class is used to describe the parameters necessary for drawing a frame in ...
Definition: qstyleoption.h:609
State
This enum describes the state for which a pixmap is intended to be used.
Definition: qicon.h:64
PixelMetric
This enum describes the various available pixel metrics.
Definition: qstyle.h:474
static QColor fromHsvF(qreal h, qreal s, qreal v, qreal a=1.0)
Static convenience function that returns a QColor constructed from the HSV color values, h (hue), s (saturation), v (value), and a (alpha-channel, i.
Definition: qcolor.cpp:2083
QSize expandedTo(const QSize &) const
Returns a size holding the maximum width and height of this size and the given otherSize.
Definition: qsize.h:187
int left() const
Returns the x-coordinate of the rectangle&#39;s left edge.
Definition: qrect.h:240
int width() const
Returns the width of the rectangle.
Definition: qrect.h:303
The QStyleOptionToolBar class is used to describe the parameters for drawing a toolbar.
Definition: qstyleoption.h:369
static const char *const radiochecked_xpm[]
QSliderDirection
static const char *const highlightedradiobutton_low_xpm[]
long ASN1_INTEGER_get ASN1_INTEGER * a
QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const
Reimplemented Function
TabPosition position
the position of the tab in the tab bar
Definition: qstyleoption.h:320
The QAbstractScrollArea widget provides a scrolling area with on-demand scroll bars.
static const char *const radiochecked_low_xpm[]
static const char *const checkedbold_low_xpm[]
The QPolygon class provides a vector of points using integer precision.
Definition: qpolygon.h:60
static const char *const arrowdown_big_xpm[]
qreal saturationF() const
Returns the saturation color component of this color.
Definition: qcolor.cpp:1392
void drawLine(const QLineF &line)
Draws a line defined by line.
Definition: qpainter.h:573
ushort red
Returns the red color component of this color.
Definition: qcolor.h:243
int height() const
Returns the height of the rectangle.
Definition: qrect.h:306
int bottom() const
Returns the y-coordinate of the rectangle&#39;s bottom edge.
Definition: qrect.h:249
QFontMetrics fontMetrics
the font metrics that should be used when drawing text in the control
Definition: qstyleoption.h:91
void setHeight(int h)
Sets the height to the given height.
Definition: qsize.h:135
static const char *const checkedbold_xpm[]
void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *w=0) const
Reimplemented Function
void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w=0) const
Reimplemented Function
The QPen class defines how a QPainter should draw lines and outlines of shapes.
Definition: qpen.h:64
void setBrushOrigin(int x, int y)
Sets the brush&#39;s origin to point (x, y).
Definition: qpainter.h:825
QRgb pixel(int x, int y) const
Returns the color of the pixel at coordinates (x, y).
Definition: qimage.cpp:4240
QPixmap standardPixmap(StandardPixmap sp, const QStyleOption *opt=0, const QWidget *widget=0) const
Reimplemented Function
void drawPoint(const QPointF &pt)
Draws a single point at the given position using the current pen&#39;s color.
Definition: qpainter.h:676
QTabBar::Shape shape
the tab shape used to draw the tab; by default QTabBar::RoundedNorth
Definition: qstyleoption.h:316
void moveTo(const QPointF &p)
Moves the current point to the given point, implicitly starting a new subpath and closing the previou...
Q_CORE_EXPORT QTextStream & right(QTextStream &s)
The QStyleOptionToolButton class is used to describe the parameters for drawing a tool button...
Definition: qstyleoption.h:768
void save()
Saves the current painter state (pushes the state onto a stack).
Definition: qpainter.cpp:1590
Q_DECL_CONSTEXPR const T & qMax(const T &a, const T &b)
Definition: qglobal.h:1217
StandardPixmap
This enum describes the available standard pixmaps.
Definition: qstyle.h:755
static const char *const min_small_xpm[]
ColorGroup
Definition: qpalette.h:92
The QLineF class provides a two-dimensional vector using floating point precision.
Definition: qline.h:212
static const char *const arrowleft_xpm[]
void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget=0) const
Reimplemented Function
void setWidth(int w)
Sets the width to the given width.
Definition: qsize.h:132
QColor backgroundColor
the background color on which the focus rectangle is being drawn
Definition: qstyleoption.h:109
void lineTo(const QPointF &p)
Adds a straight line from the current position to the given endPoint.
static const char *const radiobutton_low_xpm[]
void setCurrentColorGroup(ColorGroup cg)
Set the palette&#39;s current color group to cg.
Definition: qpalette.h:105
bool qt_wince_is_smartphone()
QPalette standardPalette() const
Returns the style&#39;s standard palette.
int lineWidth
the line width for drawing the frame
Definition: qstyleoption.h:124
The QStyleOptionProgressBarV2 class is used to describe the parameters necessary for drawing a progre...
Definition: qstyleoption.h:417
void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const
Reimplemented Function
int width() const
Returns the width.
Definition: qsize.h:126
static const int PE_IndicatorArrowDownBig
QRegion clipRegion() const
Returns the currently set clip region.
Definition: qpainter.cpp:2562
void setRenderHint(RenderHint hint, bool on=true)
Sets the given render hint on the painter if on is true; otherwise clears the render hint...
Definition: qpainter.cpp:7620
void setHsvF(qreal h, qreal s, qreal v, qreal a=1.0)
Sets a HSV color value; h is the hue, s is the saturation, v is the value and a is the alpha componen...
Definition: qcolor.cpp:706
const QPen & pen() const
Returns the painter&#39;s current pen.
Definition: qpainter.cpp:4152
#define QT_BEGIN_NAMESPACE
This macro expands to.
Definition: qglobal.h:89
The QRectF class defines a rectangle in the plane using floating point precision. ...
Definition: qrect.h:511
void setBold(bool)
If enable is true sets the font&#39;s weight to QFont::Bold ; otherwise sets the weight to QFont::Normal...
Definition: qfont.h:352
QPoint bottomRight() const
Returns the position of the rectangle&#39;s bottom-right corner.
Definition: qrect.h:291
QPoint brushOrigin() const
Returns the currently set brush origin.
Definition: qpainter.cpp:2168
const QBrush & light() const
Returns the light brush of the current color group.
Definition: qpalette.h:126
void drawLines(const QLineF *lines, int lineCount)
Draws the first lineCount lines in the array lines using the current pen.
Definition: qpainter.cpp:4873
QSize size(int flags, const QString &str, int tabstops=0, int *tabarray=0) const
Returns the size in pixels of text.
The QStyleOption class stores the parameters used by QStyle functions.
Definition: qstyleoption.h:67
#define qApp
ContentsType
This enum describes the available contents types.
Definition: qstyle.h:602
The QToolBar class provides a movable panel that contains a set of controls.
Definition: qtoolbar.h:62
The QStyleOptionSpinBox class is used to describe the parameters necessary for drawing a spin box...
Definition: qstyleoption.h:729
void setTop(int pos)
Sets the top edge of the rectangle to the given y coordinate.
Definition: qrect.h:261
const QFont & font() const
Returns the currently set font used for drawing text.
Definition: qpainter.cpp:4312
static const char *const radiobutton_xpm[]
QTransform & rotate(qreal a, Qt::Axis axis=Qt::ZAxis)
Rotates the coordinate system counterclockwise by the given angle about the specified axis and return...
Definition: qtransform.cpp:615
QSize size() const
Returns the size of the rectangle.
Definition: qrect.h:309
Mode
This enum type describes the mode for which a pixmap is intended to be used.
Definition: qicon.h:63
QColor dark(int f=200) const
Use darker(factor) instead.
Definition: qcolor.cpp:2447
void adjust(int x1, int y1, int x2, int y2)
Adds dx1, dy1, dx2 and dy2 respectively to the existing coordinates of the rectangle.
Definition: qrect.h:434
void setRight(int pos)
Sets the right edge of the rectangle to the given x coordinate.
Definition: qrect.h:264
const QBrush & mid() const
Returns the mid brush of the current color group.
Definition: qpalette.h:128
static const char *const normal_small_xpm[]
static const char *const horlines_xpm[]
The QStyleOptionFocusRect class is used to describe the parameters for drawing a focus rectangle with...
Definition: qstyleoption.h:103
const char * styleHint(const QFontDef &request)
QSize sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const
Reimplemented Function
int & rx()
Returns a reference to the x coordinate of this point.
Definition: qpoint.h:140
void setSize(const QSize &s)
Sets the size of the rectangle to the given size.
Definition: qrect.h:448
The QImage class provides a hardware-independent image representation that allows direct access to th...
Definition: qimage.h:87
void transpose()
Swaps the width and height values.
Definition: qsize.cpp:196
The QStyleOptionFrame class is used to describe the parameters for drawing a frame.
Definition: qstyleoption.h:118
unsigned int uint
Definition: qglobal.h:996
void setTopLeft(const QPoint &p)
Set the top-left corner of the rectangle to the given position.
Definition: qrect.h:270
int pixelMetric(PixelMetric pm, const QStyleOption *option=0, const QWidget *widget=0) const
Reimplemented Function
void drawScrollbarGroove(QPainter *p, const QStyleOptionSlider *opt)
void qDrawWinButton(QPainter *p, int x, int y, int w, int h, const QPalette &pal, bool sunken, const QBrush *fill)
Definition: qdrawutil.cpp:435
The QGroupBox widget provides a group box frame with a title.
Definition: qgroupbox.h:57
static const int windowsMobileIconSize
QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *widget=0) const
Reimplemented Function
void drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule=Qt::OddEvenFill)
Draws the polygon defined by the first pointCount points in the array points using the current pen an...
Definition: qpainter.cpp:5205
The QStyleOptionTabWidgetFrame class is used to describe the parameters for drawing the frame around ...
Definition: qstyleoption.h:175
void qDrawShadePanel(QPainter *p, int x, int y, int w, int h, const QPalette &pal, bool sunken, int lineWidth, const QBrush *fill)
Definition: qdrawutil.cpp:303
The QRegion class specifies a clip region for a painter.
Definition: qregion.h:68
static const char *const checkedlight_low_xpm[]
void polish(QApplication *)
Reimplemented Function
__int64 qint64
Definition: qglobal.h:942
The State element defines configurations of objects and properties.
void setCoords(int x1, int y1, int x2, int y2)
Sets the coordinates of the rectangle&#39;s top-left corner to (x1, y1), and the coordinates of its botto...
Definition: qrect.h:416
static const char *const max_big_xpm[]
static QColor fromRgbF(qreal r, qreal g, qreal b, qreal a=1.0)
Static convenience function that returns a QColor constructed from the RGB color values, r (red), g (green), b (blue), and a (alpha-channel, i.e.
Definition: qcolor.cpp:2017
void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *w=0) const
Reimplemented Function
QImage mirrored(bool horizontally=false, bool vertically=true) const
Returns a mirror of the image, mirrored in the horizontal and/or the vertical direction depending on ...
Definition: qimage.cpp:4922
QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, const QWidget *widget) const
Reimplemented Function
bool inherits(const char *classname) const
Returns true if this object is an instance of a class that inherits className or a QObject subclass t...
Definition: qobject.h:275
void drawTabBarTab(QPainter *p, const QStyleOptionTab *tab)
FrameFeatures features
a bitwise OR of the features that describe this frame.
Definition: qstyleoption.h:143
const QBrush & brush(ColorGroup cg, ColorRole cr) const
Returns the brush in the specified color group, used for the given color role.
Definition: qpalette.cpp:874
const T & at(int i) const
Returns the item at index position i in the vector.
Definition: qvector.h:350
#define QT_NO_TABWIDGET
int styleHint(StyleHint hint, const QStyleOption *opt=0, const QWidget *widget=0, QStyleHintReturn *returnData=0) const
Reimplemented Function
qreal hueF() const
Returns the hue color component of this color.
Definition: qcolor.cpp:1366
ViewItemPosition viewItemPosition
Gives the position of this view item relative to other items.
Definition: qstyleoption.h:619
qreal dpiScaled(qreal value)
QPoint topRight() const
Returns the position of the rectangle&#39;s top-right corner.
Definition: qrect.h:294
const QBrush & brush() const
Returns the painter&#39;s current brush.
Definition: qpainter.cpp:4232
QColor toRgb() const
Create and returns an RGB QColor based on this color.
Definition: qcolor.cpp:1636
QPalette palette
the palette that should be used when painting the control
Definition: qstyleoption.h:92
The QBrush class defines the fill pattern of shapes drawn by QPainter.
Definition: qbrush.h:76
QPoint center() const
Returns the center point of the rectangle.
Definition: qrect.h:300
const QBrush & shadow() const
Returns the shadow brush of the current color group.
Definition: qpalette.h:139
SelectedPosition selectedPosition
the position of the selected tab in relation to this tab
Definition: qstyleoption.h:321
void setPixel(int x, int y, uint index_or_rgb)
Sets the pixel index or color at (x, y) to index_or_rgb.
Definition: qimage.cpp:4311
#define Q_ASSERT_X(cond, where, what)
Definition: qglobal.h:1837
int top() const
Returns the y-coordinate of the rectangle&#39;s top edge.
Definition: qrect.h:243
int width() const
Returns the width of the image.
Definition: qimage.cpp:1557
QImage convertToFormat(Format f, Qt::ImageConversionFlags flags=Qt::AutoColor) const Q_REQUIRED_RESULT
Returns a copy of the image in the given format.
Definition: qimage.cpp:3966
The QListView class provides a list or icon view onto a model.
Definition: qlistview.h:57
ushort blue
Returns the blue color component of this color.
Definition: qcolor.h:245
void setClipRegion(const QRegion &, Qt::ClipOperation op=Qt::ReplaceClip)
Sets the clip region to the given region using the specified clip operation.
Definition: qpainter.cpp:2917
int right() const
Returns the x-coordinate of the rectangle&#39;s right edge.
Definition: qrect.h:246
QPoint bottomLeft() const
Returns the position of the rectangle&#39;s bottom-left corner.
Definition: qrect.h:297
PrimitiveElement
This enum describes the various primitive elements.
Definition: qstyle.h:145
void setLeft(int pos)
Sets the left edge of the rectangle to the given x coordinate.
Definition: qrect.h:258
void setClipping(bool enable)
Enables clipping if enable is true, or disables clipping if enable is false.
Definition: qpainter.cpp:2517
The QLinearGradient class is used in combination with QBrush to specify a linear gradient brush...
Definition: qbrush.h:280
The QFont class specifies a font used for drawing text.
Definition: qfont.h:64
int y() const
Returns the y-coordinate of the rectangle&#39;s top edge.
Definition: qrect.h:255
Qt::BGMode backgroundMode() const
Returns the current background mode.
Definition: qpainter.cpp:4026
const QBrush & highlightedText() const
Returns the highlighted text brush of the current color group.
Definition: qpalette.h:141
int midLineWidth
the mid-line width for drawing the frame
Definition: qstyleoption.h:125
T qstyleoption_cast(const QStyleOption *opt)
Definition: qstyleoption.h:885
QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *widget=0) const
Reimplemented Function
static const char *const normal_big_xpm[]
qreal redF() const
Returns the red color component of this color.
Definition: qcolor.cpp:1213
int x() const
Returns the x-coordinate of the rectangle&#39;s left edge.
Definition: qrect.h:252
QObject * parent() const
Returns a pointer to the parent object.
Definition: qobject.h:273
void setTextureImage(const QImage &image)
Sets the brush image to image.
Definition: qbrush.cpp:856
QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget=0) const
Reimplemented Function
void setRect(int x, int y, int w, int h)
Sets the coordinates of the rectangle&#39;s top-left corner to ({x}, {y}), and its size to the given widt...
Definition: qrect.h:400
The QPoint class defines a point in the plane using integer precision.
Definition: qpoint.h:53
void setColor(ColorGroup cg, ColorRole cr, const QColor &color)
Sets the color in the specified color group, used for the given color role, to the specified solid co...
Definition: qpalette.h:201
void setBrush(const QBrush &brush)
Sets the painter&#39;s brush to the given brush.
Definition: qpainter.cpp:4171
void setAlpha(int alpha)
Sets the alpha of this color to alpha.
Definition: qcolor.cpp:1094
The QStyleOptionGroupBox class describes the parameters for drawing a group box.
Definition: qstyleoption.h:834
The QStyleOptionComboBox class is used to describe the parameter for drawing a combobox.
Definition: qstyleoption.h:796
void setWidth(int w)
Sets the width of the rectangle to the given width.
Definition: qrect.h:442
void setPen(const QColor &color)
Sets the painter&#39;s pen to have style Qt::SolidLine, width 0 and the specified color.
Definition: qpainter.cpp:4047
int height() const
Returns the height.
Definition: qsize.h:129
Qt::LayoutDirection direction
the text layout direction that should be used when drawing text in the control
Definition: qstyleoption.h:89
qreal blueF() const
Returns the blue color component of this color.
Definition: qcolor.cpp:1269
The QRect class defines a rectangle in the plane using integer precision.
Definition: qrect.h:58
QFactoryLoader * l
static const char *const min_big_xpm[]
int height() const
Returns the height of the image.
Definition: qimage.cpp:1572
The QStyleOptionFrameV2 class is used to describe the parameters necessary for drawing a frame in Qt ...
Definition: qstyleoption.h:134
void drawRect(const QRectF &rect)
Draws the current rectangle with the current pen and brush.
Definition: qpainter.h:650
int y() const
Returns the y coordinate of this point.
Definition: qpoint.h:131
void drawImage(const QRectF &targetRect, const QImage &image, const QRectF &sourceRect, Qt::ImageConversionFlags flags=Qt::AutoColor)
Definition: qpainter.cpp:5936
void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w=0) const
Reimplemented Function
Qt::Orientation orientation
the slider&#39;s orientation (horizontal or vertical)
Definition: qstyleoption.h:707
The QPixmap class is an off-screen image representation that can be used as a paint device...
Definition: qpixmap.h:71
QObject * parent
Definition: qobject.h:92
return(isPopup||isToolTip)
bool qFuzzyCompare(const QMatrix &m1, const QMatrix &m2)
The qFuzzyCompare function is for comparing two matrices using a fuzziness factor.
Definition: qmatrix.h:172
QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *option) const
Reimplemented Function
The QStyleOptionTab class is used to describe the parameters for drawing a tab bar.
Definition: qstyleoption.h:304
void drawScrollbarHandleDown(QPainter *p, QStyleOptionSlider *opt, bool completeFrame=false, bool secondScrollBar=false)
void drawPixmap(const QRectF &targetRect, const QPixmap &pixmap, const QRectF &sourceRect)
Draws the rectangular portion source of the given pixmap into the given target in the paint device...
Definition: qpainter.cpp:5619
int height() const
Returns the height of the pixmap.
Definition: qpixmap.cpp:645
void unpolish(QApplication *)
Reimplemented Function
void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
Reimplemented Function
static const int windowsMobileFrameGroupBoxOffset
static Q_DECL_CONSTEXPR bool qFuzzyIsNull(double d)
Definition: qglobal.h:2043
ControlElement
This enum represents a control element.
Definition: qstyle.h:217
The QStyleOptionSlider class is used to describe the parameters needed for drawing a slider...
Definition: qstyleoption.h:701
static const int PE_IndicatorArrowRightBig
int pointSize() const
Returns the point size of the font.
Definition: qfont.cpp:981
The QSize class defines the size of a two-dimensional object using integer point precision.
Definition: qsize.h:53
void setFont(const QFont &f)
Sets the painter&#39;s font to the given font.
Definition: qpainter.cpp:4288
void setPoints(int nPoints, const int *points)
Resizes the polygon to nPoints and populates it with the given points.
Definition: qpolygon.cpp:350
static const char *const cross_big_xpm[]
const QBrush & buttonText() const
Returns the button text foreground brush of the current color group.
Definition: qpalette.h:138
QRect subElementRect(SubElement r, const QStyleOption *opt, const QWidget *widget=0) const
Reimplemented Function
void reserve(int size)
Attempts to allocate memory for at least size elements.
Definition: qvector.h:339
int x() const
Returns the x coordinate of this point.
Definition: qpoint.h:128
static const int PE_IndicatorArrowLeftBig
The QStyleOptionComplex class is used to hold parameters that are common to all complex controls...
Definition: qstyleoption.h:687
bool isValid() const
Returns true if the color is valid; otherwise returns false.
Definition: qcolor.h:295
QRgb rgba() const
Returns the RGB value of the color, including its alpha.
Definition: qcolor.cpp:1019
The QWindowsStyle class provides a Microsoft Windows-like look and feel.
Definition: qwindowsstyle.h:57
static const char *const arrowdown_xpm[]
QImage scaled(int w, int h, Qt::AspectRatioMode aspectMode=Qt::IgnoreAspectRatio, Qt::TransformationMode mode=Qt::FastTransformation) const
Definition: qimage.h:232
int height() const
Returns the height of the font.
QColor lighter(int f=150) const
Returns a lighter (or darker) color, but does not change this object.
Definition: qcolor.h:298
bool isValid() const
Returns true if the rectangle is valid, otherwise returns false.
Definition: qrect.h:237
#define Q_MIN_3(a, b, c)
Definition: qcolor.cpp:1774
void translate(int dx, int dy)
Moves the rectangle dx along the x axis and dy along the y axis, relative to the current position...
Definition: qrect.h:312
const QBrush & button() const
Returns the button brush of the current color group.
Definition: qpalette.h:125
Orientation
Definition: qnamespace.h:174
bool qt_wince_is_high_dpi()
Q_CORE_EXPORT QTextStream & left(QTextStream &s)
The QStyleOptionButton class is used to describe the parameters for drawing buttons.
Definition: qstyleoption.h:279
ushort green
Returns the green color component of this color.
Definition: qcolor.h:244
static const int windowsMobileIndicatorSize
static const char *const highlightedradiobutton_xpm[]
int size() const
Returns the number of items in the vector.
Definition: qvector.h:137
const QBrush & window() const
Returns the window (general background) brush of the current color group.
Definition: qpalette.h:135
BGMode
Definition: qnamespace.h:588
The QLatin1Char class provides an 8-bit ASCII/Latin-1 character.
Definition: qchar.h:55
QRect rect
the area that should be used for various calculations and painting
Definition: qstyleoption.h:90
#define INT_MAX
QVector< QRgb > colorTable() const
Returns a list of the colors contained in the image&#39;s color table, or an empty list if the image does...
Definition: qimage.cpp:1770
QStyle::SubControls subControls
This variable holds a bitwise OR of the sub-controls to be drawn for the complex control.
Definition: qstyleoption.h:693
QRgb rgb() const
Returns the RGB value of the color.
Definition: qcolor.cpp:1051
void drawScrollbarHandleUp(QPainter *p, QStyleOptionSlider *opt, bool completeFrame=false, bool secondScrollBar=false)
static const int windowsItemFrame
void setBackground(const QBrush &bg)
Sets the background brush of the painter to the given brush.
Definition: qpainter.cpp:4258
void fillRect(const QRectF &, const QBrush &)
Fills the given rectangle with the brush specified.
Definition: qpainter.cpp:7420
QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, const QWidget *w=0) const
Reimplemented Function
static bool isTabWidget(const QAInterface &interface)
const QBrush & text() const
Returns the text foreground brush of the current color group.
Definition: qpalette.h:129
SubElement
This enum represents a sub-area of a widget.
Definition: qstyle.h:289
The QTransform class specifies 2D transformations of a coordinate system.
Definition: qtransform.h:65
bool qt_wince_is_windows_mobile_65()
void setWidth(int width)
Sets the pen width to the given width in pixels with integer precision.
Definition: qpen.cpp:667
QPoint topLeft() const
Returns the position of the rectangle&#39;s top-left corner.
Definition: qrect.h:288
static void visualRect(QRectF *geom, Qt::LayoutDirection dir, const QRectF &contentsRect)
QTextStream & left(QTextStream &stream)
Calls QTextStream::setFieldAlignment(QTextStream::AlignLeft) on stream and returns stream...
void translate(const QPointF &offset)
Translates the coordinate system by the given offset; i.e.
Definition: qpainter.cpp:3311
The QPalette class contains color groups for each widget state.
Definition: qpalette.h:61