1 /****************************************************************************
2 **
3 ** Copyright (C) 2015 The Qt Company Ltd.
4 ** Contact: http://www.qt.io/licensing/
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 The Qt Company. For licensing terms
14 ** and conditions see http://www.qt.io/terms-conditions. For further
15 ** information use the contact form at http://www.qt.io/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 or version 3 as published by the Free
20 ** Software Foundation and appearing in the file LICENSE.LGPLv21 and
21 ** LICENSE.LGPLv3 included in the packaging of this file. Please review the
22 ** following information to ensure the GNU Lesser General Public License
23 ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
24 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
25 **
26 ** As a special exception, The Qt Company gives you certain additional
27 ** rights. These rights are described in The Qt Company LGPL Exception
28 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
29 **
30 ** GNU General Public License Usage
31 ** Alternatively, this file may be used under the terms of the GNU
32 ** General Public License version 3.0 as published by the Free Software
33 ** Foundation and appearing in the file LICENSE.GPL included in the
34 ** packaging of this file.  Please review the following information to
35 ** ensure the GNU General Public License version 3.0 requirements will be
36 ** met: http://www.gnu.org/copyleft/gpl.html.
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 
85 QT_BEGIN_NAMESPACE
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;
92 static const int windowsMobileExclusiveIndicatorSize = 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 
fromHsl(QColor c)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 
toHsl(QColor c)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 
tintColor(QColor & color,QColor tintColor,qreal _saturation)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 
tintImagePal(QImage * image,QColor color,qreal saturation)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 
tintImage(QImage * image,QColor color,qreal saturation)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 
4039 enum QSliderDirection { SliderUp, SliderDown, SliderLeft, SliderRight };
4040 
4041 #ifdef Q_WS_WINCE_WM
4042 
tintImagesButton(QColor color)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 
tintImagesHigh(QColor color)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 
tintListViewHighlight(QColor color)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 
setupWindowsMobileStyle65()4101 void QWindowsMobileStylePrivate::setupWindowsMobileStyle65()
4102 {
4103 #ifdef Q_WS_WINCE_WM
4104     wm65 = qt_wince_is_windows_mobile_65();
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 
drawTabBarTab(QPainter * painter,const QStyleOptionTab * tab)4125 void QWindowsMobileStylePrivate::drawTabBarTab(QPainter *painter, const QStyleOptionTab *tab)
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         }
4139         if  (tab->selectedPosition ==  QStyleOptionTab::NextIsSelected) {
4140             painter->drawImage(r, imageTabSelectedBegin);
4141         } else if (tab->position == QStyleOptionTab::End ||
4142             tab->position == QStyleOptionTab::OnlyOneTab) {
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         }
4151         if (tab->position == QStyleOptionTab::Beginning && ! (tab->state & QStyle::State_Selected)) {
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 
drawPanelItemViewSelected(QPainter * painter,const QStyleOptionViewItemV4 * option,QRect rect)4217 void QWindowsMobileStylePrivate::drawPanelItemViewSelected(QPainter *painter, const QStyleOptionViewItemV4 *option, QRect rect)
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 
4230         if (option->viewItemPosition ==  QStyleOptionViewItemV4::Middle) {
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 
4252         if ((option->viewItemPosition ==  QStyleOptionViewItemV4::Beginning) || (option->viewItemPosition ==  QStyleOptionViewItemV4::OnlyOne) || !option->viewItemPosition) {
4253             painter->drawImage(r.topLeft(), cornerLeft);
4254         }
4255         if ((option->viewItemPosition ==  QStyleOptionViewItemV4::End) || (option->viewItemPosition ==  QStyleOptionViewItemV4::OnlyOne) || !option->viewItemPosition) {
4256             painter->drawImage(r.topRight() - QPoint(cornerRight.width(),0), cornerRight);
4257         }
4258         return;
4259     }
4260 #endif //Q_WS_WINCE_WM
4261     QPalette::ColorGroup cg = option->state & QStyle::State_Enabled
4262                                       ? QPalette::Normal : QPalette::Disabled;
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 
drawScrollbarGrip(QPainter * p,QStyleOptionSlider * newScrollbar,const QStyleOptionComplex * option,bool drawCompleteFrame)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 
drawScrollbarHandleUp(QPainter * p,QStyleOptionSlider * opt,bool completeFrame,bool)4362 void QWindowsMobileStylePrivate::drawScrollbarHandleUp(QPainter *p, QStyleOptionSlider *opt, bool completeFrame, bool )
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 
drawScrollbarHandleDown(QPainter * p,QStyleOptionSlider * opt,bool completeFrame,bool secondScrollBar)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 
drawScrollbarGroove(QPainter * p,const QStyleOptionSlider * opt)4480 void QWindowsMobileStylePrivate::drawScrollbarGroove(QPainter *p,const QStyleOptionSlider *opt)
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 
QWindowsMobileStyle(QWindowsMobileStylePrivate & dd)4511 QWindowsMobileStyle::QWindowsMobileStyle(QWindowsMobileStylePrivate &dd) : QWindowsStyle(dd) {
4512     qApp->setEffectEnabled(Qt::UI_FadeMenu, false);
4513     qApp->setEffectEnabled(Qt::UI_AnimateMenu, false);
4514 }
4515 
QWindowsMobileStyle()4516 QWindowsMobileStyle::QWindowsMobileStyle() : QWindowsStyle(*new QWindowsMobileStylePrivate) {
4517     qApp->setEffectEnabled(Qt::UI_FadeMenu, false);
4518     qApp->setEffectEnabled(Qt::UI_AnimateMenu, false);
4519 }
4520 
QWindowsMobileStylePrivate()4521 QWindowsMobileStylePrivate::QWindowsMobileStylePrivate() :QWindowsStylePrivate() {
4522 
4523 #ifdef Q_WS_WINCE
4524    doubleControls = qt_wince_is_high_dpi();
4525    smartphone = qt_wince_is_smartphone();
4526 #else
4527    doubleControls = false;
4528    smartphone = false;
4529 #endif //Q_WS_WINCE
4530 
4531 #ifndef QT_NO_IMAGEFORMAT_XPM
4532 
4533    imageArrowDown = QImage(arrowdown_xpm);
4534    imageArrowUp = QImage(arrowdown_xpm).mirrored();
4535    imageArrowLeft = QImage(arrowleft_xpm);
4536    imageArrowRight = QImage(arrowleft_xpm).mirrored(true, false);
4537    if (doubleControls) {
4538        imageRadioButton = QImage(radiobutton_xpm);
4539        imageRadioButtonChecked = QImage(radiochecked_xpm);
4540        imageChecked = QImage(checkedlight_xpm);
4541        imageCheckedBold = QImage(checkedbold_xpm);
4542        imageRadioButtonHighlighted = QImage(highlightedradiobutton_xpm);
4543        imageClose = QImage(cross_big_xpm);
4544        imageMaximize = QImage(max_big_xpm);
4545        imageMinimize = QImage(min_big_xpm);
4546        imageNormalize = QImage(normal_big_xpm);
4547    } else {
4548        imageRadioButton = QImage(radiobutton_low_xpm);
4549        imageRadioButtonChecked = QImage(radiochecked_low_xpm);
4550        imageChecked = QImage(checkedlight_low_xpm);
4551        imageCheckedBold = QImage(checkedbold_low_xpm);
4552        imageRadioButtonHighlighted = QImage(highlightedradiobutton_low_xpm);
4553        imageClose = QImage(cross_small_xpm);
4554        imageMaximize = QImage(max_small_xpm);
4555        imageMinimize = QImage(min_small_xpm);
4556        imageNormalize = QImage(normal_small_xpm);
4557    }
4558 
4559    setupWindowsMobileStyle65();
4560 
4561 
4562    imageArrowDownBig = QImage(arrowdown_big_xpm);
4563    imageArrowUpBig = QImage(arrowdown_big_xpm).mirrored();
4564    imageArrowLeftBig = QImage(arrowleft_big_xpm);
4565    imageArrowRightBig = QImage(arrowleft_big_xpm).mirrored(true, false);
4566 
4567 #endif
4568 }
4569 
drawPrimitive(PrimitiveElement element,const QStyleOption * option,QPainter * painter,const QWidget * widget) const4570 void QWindowsMobileStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option,
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());
4605                         painter->fillRect(rect.adjusted(windowsItemFrame , windowsItemFrame ,
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());
4631             painter->setRenderHint(QPainter::Antialiasing);
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;
4666             if (QApplication::layoutDirection() == Qt::RightToLeft)
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();
4765             painter->setBackgroundMode(Qt::TransparentMode);
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,
4822                                 r.y() + r.height() - windowsMobileFrameGroupBoxOffset,
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) {
4890                 QRect r = QRect(option->rect.x(), option->rect.y(), windowsMobileitemViewCheckBoxSize * 2, windowsMobileitemViewCheckBoxSize * 2);
4891                 qDrawPlainRect(painter, r, option->palette.shadow().color(), 2);
4892             } else {
4893                 QRect r = QRect(option->rect.x(), option->rect.y(), windowsMobileitemViewCheckBoxSize, windowsMobileitemViewCheckBoxSize);
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) {
4928             d->imageRadioButtonHighlighted.setColor(1, option->palette.shadow().color().rgba());
4929             d->imageRadioButtonHighlighted.setColor(2, option->palette.highlight().color().rgba());
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)
4938                 d->imageRadioButtonChecked.setColor(1, option->palette.shadow().color().rgba());
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 
5062     case PE_IndicatorArrowUpBig:
5063     case PE_IndicatorArrowDownBig:
5064     case PE_IndicatorArrowLeftBig:
5065     case PE_IndicatorArrowRightBig:
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;
5106                      case PE_IndicatorArrowUpBig:
5107                           image = d->imageArrowUpBig;
5108                           xoffset = 3;
5109                           yoffset = 12;
5110                           break;
5111                     case PE_IndicatorArrowDownBig:
5112                           image = d->imageArrowDownBig;
5113                           xoffset = 2;
5114                           yoffset =12;
5115                           break;
5116                     case PE_IndicatorArrowLeftBig:
5117                           image = d->imageArrowLeftBig;
5118                           xoffset = 8;
5119                           yoffset = 2;
5120                           break;
5121                     case PE_IndicatorArrowRightBig:
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:
5136                      case PE_IndicatorArrowUpBig:
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:
5146                      case PE_IndicatorArrowDownBig:
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:
5156                      case PE_IndicatorArrowRightBig:
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:
5166                      case PE_IndicatorArrowLeftBig:
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;
5251             case QTabBar::TriangularWest:
5252             case QTabBar::TriangularEast:
5253             case QTabBar::TriangularSouth:
5254             case QTabBar::TriangularNorth:
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
5271                                       ? QPalette::Normal : QPalette::Disabled;
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
5286                                       ? QPalette::Normal : QPalette::Disabled;
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 
5331         QVector<QLineF> a;
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 
5429 void QWindowsMobileStyle::drawControl(ControlElement element, const QStyleOption *option,
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,
5666                                        Qt::AlignLeft | Qt::AlignVCenter,
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,
5762                             Qt::AlignLeft | Qt::AlignVCenter | Qt::TextShowMnemonic, palette,
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;
5778             uint tf = Qt::AlignVCenter | Qt::TextShowMnemonic;
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 
5839 void QWindowsMobileStyle::drawComplexControl(ComplexControl control, const QStyleOptionComplex *option,
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),
5888                         Qt::Dense4Pattern);
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();
5909                     painter->setBackgroundMode(Qt::OpaqueMode);
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();
5961                 painter->setBackgroundMode(Qt::OpaqueMode);
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);
6036             pen.setCapStyle(Qt::SquareCap);
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)) {
6309                     pal2.setCurrentColorGroup(QPalette::Disabled);
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
6321                     : 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)) {
6335                     pal2.setCurrentColorGroup(QPalette::Disabled);
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
6347                                                                        : 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 
6377 QSize QWindowsMobileStyle::sizeFromContents(ContentsType type, const QStyleOption *option,
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 
6521 QRect QWindowsMobileStyle::subControlRect(ComplexControl control, const QStyleOptionComplex *option,
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
6652                      & (QStyleOptionToolButton::Menu | QStyleOptionToolButton::PopupDelay))
6653                     == QStyleOptionToolButton::Menu)
6654                     rect.adjust(0, 0, -mbi, 0);
6655                 break;
6656             case SC_ToolButtonMenu:
6657                 if ((toolButton->features
6658                      & (QStyleOptionToolButton::Menu | QStyleOptionToolButton::PopupDelay))
6659                     == QStyleOptionToolButton::Menu)
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))));
6742             bs = bs.expandedTo(QApplication::globalStrut());
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 
6864 QPalette QWindowsMobileStyle::standardPalette() const {
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));
6872     palette.setColor(QPalette::Light, Qt::white);
6873     palette.setColor(QPalette::Text, Qt::black);
6874     palette.setColor(QPalette::ButtonText, 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 
6884 /*! \reimp */
6885 void QWindowsMobileStyle::polish(QApplication *application) {
6886     QWindowsStyle::polish(application);
6887 }
6888 
6889 /*! \reimp */
6890 void QWindowsMobileStyle::polish(QWidget *widget) {
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 
6904 void QWindowsMobileStyle::unpolish(QWidget *widget)
6905 {
6906     QWindowsStyle::unpolish(widget);
6907 }
6908 
6909 void QWindowsMobileStyle::unpolish(QApplication *app)
6910 {
6911     QWindowsStyle::unpolish(app);
6912 }
6913 
6914 /*! \reimp */
6915 void QWindowsMobileStyle::polish(QPalette &palette) {
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:
6981           ret = d->doubleControls ? windowsMobileIndicatorSize * 2 : windowsMobileIndicatorSize;
6982         break;
6983     case PM_IndicatorHeight:
6984         ret = d->doubleControls ? windowsMobileIndicatorSize * 2 : windowsMobileIndicatorSize;
6985         break;
6986     case PM_ExclusiveIndicatorWidth:
6987         ret = d->doubleControls ? windowsMobileExclusiveIndicatorSize * 2 + 4: windowsMobileExclusiveIndicatorSize + 2;
6988         break;
6989     case PM_ExclusiveIndicatorHeight:
6990         ret = d->doubleControls ? windowsMobileExclusiveIndicatorSize * 2 + 4: windowsMobileExclusiveIndicatorSize + 2;
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:
7000         ret = d->doubleControls ? windowsMobileSliderThickness * 2: windowsMobileSliderThickness;
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:
7040         d->doubleControls ? ret = windowsMobileIconSize * 2 : ret = windowsMobileIconSize;
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:
7052         d->doubleControls ? ret = 2 * windowsMobileIconSize : ret = windowsMobileIconSize;
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 
7187 QPixmap QWindowsMobileStyle::standardPixmap(StandardPixmap sp, const QStyleOption *option,
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 
7237 QPixmap QWindowsMobileStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap,
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
7246         QImage img = pixmap.toImage().convertToFormat(QImage::Format_ARGB32);
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 
7266 bool QWindowsMobileStyle::doubleControls() const {
7267 
7268     QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
7269 
7270     return d->doubleControls;
7271 }
7272 
7273 void QWindowsMobileStyle::setDoubleControls(bool doubleControls) {
7274 
7275    QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
7276 
7277    d->doubleControls = doubleControls;
7278 }
7279 
7280 QT_END_NAMESPACE
7281 
7282 #endif // QT_NO_STYLE_WINDOWSMOBILE
7283 
7284