src/gui/styles/qwindowsmobilestyle.cpp
changeset 0 1918ee327afb
child 3 41300fa6a67c
equal deleted inserted replaced
-1:000000000000 0:1918ee327afb
       
     1 /****************************************************************************
       
     2 **
       
     3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     4 ** All rights reserved.
       
     5 ** Contact: Nokia Corporation (qt-info@nokia.com)
       
     6 **
       
     7 ** This file is part of the QtGui module of the Qt Toolkit.
       
     8 **
       
     9 ** $QT_BEGIN_LICENSE:LGPL$
       
    10 ** No Commercial Usage
       
    11 ** This file contains pre-release code and may not be distributed.
       
    12 ** You may use this file in accordance with the terms and conditions
       
    13 ** contained in the Technology Preview License Agreement accompanying
       
    14 ** this package.
       
    15 **
       
    16 ** GNU Lesser General Public License Usage
       
    17 ** Alternatively, this file may be used under the terms of the GNU Lesser
       
    18 ** General Public License version 2.1 as published by the Free Software
       
    19 ** Foundation and appearing in the file LICENSE.LGPL included in the
       
    20 ** packaging of this file.  Please review the following information to
       
    21 ** ensure the GNU Lesser General Public License version 2.1 requirements
       
    22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
       
    23 **
       
    24 ** In addition, as a special exception, Nokia gives you certain additional
       
    25 ** rights.  These rights are described in the Nokia Qt LGPL Exception
       
    26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
       
    27 **
       
    28 ** If you have questions regarding the use of this file, please contact
       
    29 ** Nokia at qt-info@nokia.com.
       
    30 **
       
    31 **
       
    32 **
       
    33 **
       
    34 **
       
    35 **
       
    36 **
       
    37 **
       
    38 ** $QT_END_LICENSE$
       
    39 **
       
    40 ****************************************************************************/
       
    41 
       
    42 #include "qwindowsmobilestyle.h"
       
    43 #include "qwindowsmobilestyle_p.h"
       
    44 
       
    45 #if !defined(QT_NO_STYLE_WINDOWSMOBILE) || defined(QT_PLUGIN)
       
    46 
       
    47 #include "qpainterpath.h"
       
    48 #include "qapplication.h"
       
    49 #include "qdesktopwidget.h"
       
    50 #include "qwidget.h"
       
    51 #include "qdockwidget.h"
       
    52 #include "qframe.h"
       
    53 #include "qmenu.h"
       
    54 #include "qpaintengine.h"
       
    55 #include "qpainter.h"
       
    56 #include "qgroupbox.h"
       
    57 #include "qstyleoption.h"
       
    58 #include "qlistview.h"
       
    59 #include "qdrawutil.h"
       
    60 #include "qtoolbar.h"
       
    61 #include "qabstractscrollarea.h"
       
    62 #include "qabstractbutton.h"
       
    63 #include "qcombobox.h"
       
    64 #include "qabstractscrollarea.h"
       
    65 #include "qframe.h"
       
    66 #include "qscrollbar.h"
       
    67 #include "qabstractitemview.h"
       
    68 #include "qmenubar.h"
       
    69 #include "qtoolbutton.h"
       
    70 #include "qtextedit.h"
       
    71 #include "qdialog.h"
       
    72 #include "qdebug.h"
       
    73 #include "qtabwidget.h"
       
    74 
       
    75 #ifdef Q_WS_WINCE
       
    76 #include "qt_windows.h"
       
    77 #include "qguifunctions_wince.h"
       
    78 extern bool qt_wince_is_high_dpi();          //defined in qguifunctions_wince.cpp
       
    79 extern bool qt_wince_is_smartphone();        //defined in qguifunctions_wince.cpp
       
    80 extern bool qt_wince_is_windows_mobile_65(); //defined in qguifunctions_wince.cpp
       
    81 #endif // Q_WS_WINCE
       
    82 
       
    83 QT_BEGIN_NAMESPACE
       
    84 
       
    85 static const int windowsItemFrame        =  1; // menu item frame width
       
    86 
       
    87 static const int windowsMobileitemViewCheckBoxSize   = 13;
       
    88 static const int windowsMobileFrameGroupBoxOffset    = 9;
       
    89 static const int windowsMobileIndicatorSize          = 14;
       
    90 static const int windowsMobileExclusiveIndicatorSize = 14;
       
    91 static const int windowsMobileSliderThickness        = 6;
       
    92 static const int windowsMobileIconSize               = 16;
       
    93 static const int PE_IndicatorArrowUpBig         = 0xf000101;
       
    94 static const int PE_IndicatorArrowDownBig       = 0xf000102;  
       
    95 static const int PE_IndicatorArrowLeftBig       = 0xf000103;
       
    96 static const int PE_IndicatorArrowRightBig      = 0xf000104;
       
    97 
       
    98 /* XPM */
       
    99 static const char *const radiobutton_xpm[] = {
       
   100     "30 30 2 1",
       
   101     " 	c None",
       
   102     ".	c #000000",
       
   103     "           ........           ",
       
   104     "        ..............        ",
       
   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 /* XPM */
       
   135 static const char * const radiobutton_low_xpm[] = {
       
   136     "15 15 2 1",
       
   137     " 	c None",
       
   138     ".	c #000000",
       
   139     "     .....     ",
       
   140     "   ..     ..   ",
       
   141     "  .         .  ",
       
   142     " .           . ",
       
   143     " .           . ",
       
   144     ".             .",
       
   145     ".             .",
       
   146     ".             .",
       
   147     ".             .",
       
   148     ".             .",
       
   149     " .           . ",
       
   150     " .           . ",
       
   151     "  .         .  ",
       
   152     "   ..     ..   ",
       
   153     "     .....     "};
       
   154 
       
   155 /* XPM */
       
   156     static const char * const arrowleft_big_xpm[] = {
       
   157         "9 17 2 1",
       
   158         "  c None",
       
   159         ". c #000000",
       
   160         "        .",
       
   161         "       ..",
       
   162         "      ...",
       
   163         "     ....",
       
   164         "    .....",
       
   165         "   ......",
       
   166         "  .......",
       
   167         " ........",
       
   168         ".........",
       
   169         " ........",
       
   170         "  .......",
       
   171         "   ......",
       
   172         "    .....",
       
   173         "     ....",
       
   174         "      ...",
       
   175         "       ..",
       
   176         "        ."};
       
   177 
       
   178 /* XPM */
       
   179      static const char * const arrowleft_xpm[] = {
       
   180         "8 15 2 1",
       
   181         "  c None",
       
   182         ". c #000000",
       
   183         "       .",
       
   184         "      ..",
       
   185         "     ...",
       
   186         "    ....",
       
   187         "   .....",
       
   188         "  ......",
       
   189         " .......",
       
   190         "........",
       
   191         " .......",
       
   192         "  ......",
       
   193         "   .....",
       
   194         "    ....",
       
   195         "     ...",
       
   196         "      ..",
       
   197         "       ."};
       
   198 
       
   199 
       
   200 
       
   201 /* XPM */
       
   202 static const char *const horlines_xpm[] = {
       
   203     "2 2 2 1",
       
   204     "  c None",
       
   205     ". c #000000",
       
   206     "  ",
       
   207     ".."};
       
   208 
       
   209 /* XPM */
       
   210 static const char *const vertlines_xpm[] = {
       
   211     "2 2 2 1",
       
   212     "  c None",
       
   213     ". c #000000",
       
   214     ". ",
       
   215     ". "};
       
   216 
       
   217 /* XPM */
       
   218 static const char *const radiochecked_xpm[] = {
       
   219     "18 18 2 1",
       
   220     " 	c None",
       
   221     ".	c #000000",
       
   222     "      ......      ",
       
   223     "    ..........    ",
       
   224     "  ..............  ",
       
   225     "  ..............  ",
       
   226     " ................ ",
       
   227     " ................ ",
       
   228     "..................",
       
   229     "..................",
       
   230     "..................",
       
   231     "..................",
       
   232     "..................",
       
   233     "..................",
       
   234     " ................ ",
       
   235     " ................ ",
       
   236     "  ..............  ",
       
   237     "  ..............  ",
       
   238     "    ..........    ",
       
   239     "      ......      "};
       
   240 
       
   241 /* XPM */
       
   242 static const char * const radiochecked_low_xpm[] = {
       
   243     "9 9 2 1",
       
   244     "         c None",
       
   245     ".        c #000000", 
       
   246     "   ...   ",
       
   247     " ....... ",
       
   248     " ....... ",
       
   249     ".........",
       
   250     ".........",
       
   251     ".........",
       
   252     " ....... ",
       
   253     " ....... ",
       
   254     "   ...   "};
       
   255 
       
   256 static const char *const arrowdown_xpm[] = {
       
   257     "15 8 2 1",
       
   258     " 	c None",
       
   259     ".	c #000000",
       
   260     "...............",
       
   261     " ............. ",
       
   262     "  ...........  ",
       
   263     "   .........   ",
       
   264     "    .......    ",
       
   265     "     .....     ",
       
   266     "      ...      ",
       
   267     "       .       "};
       
   268 
       
   269 
       
   270 static const char *const arrowdown_big_xpm[] = {
       
   271     "17 9 2 1",
       
   272     " 	c None",
       
   273     ".	c #000000",
       
   274     ".................",
       
   275     " ............... ",
       
   276     "  .............  ",
       
   277     "   ...........   ",
       
   278     "    .........    ",
       
   279     "     .......     ",
       
   280     "      .....      ",
       
   281     "       ...       ",
       
   282     "        .        "};
       
   283 
       
   284 
       
   285 /* XPM */
       
   286 static const char *const checkedlight_xpm[] = {
       
   287     "24 24 2 1",
       
   288     " 	c None",
       
   289     ".	c #000000",
       
   290     "                        ",
       
   291     "                        ",
       
   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 /* XPM */
       
   317 static const char *const checkedbold_xpm[] = {
       
   318     "26 26 2 1",
       
   319     " 	c None",
       
   320     ".	c #000000",
       
   321     "                          ",
       
   322     "                          ",
       
   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 /* XPM */
       
   349 static const char * const checkedbold_low_xpm[] = {
       
   350     "9 8 2 1",
       
   351     " 	c None",
       
   352     ".	c #000000",
       
   353     "        .",
       
   354     "       ..",
       
   355     ".     ...",
       
   356     "..   ... ",
       
   357     "... ...  ",
       
   358     " .....   ",
       
   359     "  ...    ",
       
   360     "   .     "};
       
   361 
       
   362 /* XPM */
       
   363 static const char * const checkedlight_low_xpm[] = {
       
   364     "8 8 2 1",
       
   365     " 	c None",
       
   366     ".	c #000000",
       
   367     "       .",
       
   368     "      ..",
       
   369     "     ...",
       
   370     ".   ... ",
       
   371     ".. ...  ",
       
   372     ".....   ",
       
   373     " ...    ",
       
   374     "  .     "};
       
   375 
       
   376 /* XPM */
       
   377 static const char * const highlightedradiobutton_xpm[] = {
       
   378     "30 30 3 1",
       
   379     " 	c None",
       
   380     ".	c #000000",
       
   381     "+	c #0078CC",
       
   382     "           ........           ",
       
   383     "        ..............        ",
       
   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 /* XPM */
       
   414 static const char * const highlightedradiobutton_low_xpm[] = {
       
   415     "15 15 3 1",
       
   416     " 	c None",
       
   417     ".	c #000000",
       
   418     "+	c #3192D6",
       
   419     "     .....     ",
       
   420     "   ..+++++..   ",
       
   421     "  .++     ++.  ",
       
   422     " .+         +. ",
       
   423     " .+         +. ",
       
   424     ".+           +.",
       
   425     ".+           +.",
       
   426     ".+           +.",
       
   427     ".+           +.",
       
   428     ".+           +.",
       
   429     " .+         +. ",
       
   430     " .+         +. ",
       
   431     "  .++     ++.  ",
       
   432     "   ..+++++..   ",
       
   433     "     .....     "};
       
   434 
       
   435 /* XPM */
       
   436 static const char * const cross_big_xpm[] = {
       
   437 "28 28 4 1",
       
   438 " 	c #09454A",
       
   439 ".	c #218C98",
       
   440 "+	c #47D8E5",
       
   441 "@	c #FDFFFC",
       
   442 "                            ",
       
   443 "                            ",
       
   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 /* XPM */
       
   472 static const char * const cross_small_xpm[] = {
       
   473 "14 14 4 1",
       
   474 " 	c #09454A",
       
   475 ".	c #218C98",
       
   476 "+	c #47D8E5",
       
   477 "@	c #FCFFFC",
       
   478 "              ",
       
   479 " ++++++++++++ ",
       
   480 " +..........+ ",
       
   481 " +.@@....@@.+ ",
       
   482 " +.@@@..@@@.+ ",
       
   483 " +..@@@@@@..+ ",
       
   484 " +...@@@@...+ ",
       
   485 " +...@@@@...+ ",
       
   486 " +..@@@@@@..+ ",
       
   487 " +.@@@..@@@.+ ",
       
   488 " +.@@....@@.+ ",
       
   489 " +..........+ ",
       
   490 " ++++++++++++ ",
       
   491 "              "};
       
   492 
       
   493 /* XPM */
       
   494 static const char * const max_big_xpm[] = {
       
   495 "28 28 4 1",
       
   496 " 	c #09454A",
       
   497 ".	c #218C98",
       
   498 "+	c #47D8E5",
       
   499 "@	c #FDFFFC",
       
   500 "                            ",
       
   501 "                            ",
       
   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 /* XPM */
       
   530 static const char * const max_small_xpm[] = {
       
   531 "14 14 4 1",
       
   532 " 	c #09454A",
       
   533 ".	c #218C98",
       
   534 "+	c #47D8E5",
       
   535 "@	c #FCFFFC",
       
   536 "              ",
       
   537 " ++++++++++++ ",
       
   538 " +..........+ ",
       
   539 " +..........+ ",
       
   540 " +.@@@@@@@@.+ ",
       
   541 " +.@@@@@@@@.+ ",
       
   542 " +.@......@.+ ",
       
   543 " +.@......@.+ ",
       
   544 " +.@......@.+ ",
       
   545 " +.@@@@@@@@.+ ",
       
   546 " +..........+ ",
       
   547 " +..........+ ",
       
   548 " ++++++++++++ ",
       
   549 "              "};
       
   550 
       
   551 /* XPM */
       
   552 static const char * const normal_big_xpm[] = {
       
   553 "28 28 4 1",
       
   554 " 	c #09454A",
       
   555 ".	c #218C98",
       
   556 "+	c #47D8E5",
       
   557 "@	c #FDFFFC",
       
   558 "                            ",
       
   559 "                            ",
       
   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 /* XPM */
       
   588 static const char * const normal_small_xpm[] = {
       
   589 "14 14 4 1",
       
   590 " 	c #09454A",
       
   591 ".	c #218C98",
       
   592 "+	c #47D8E5",
       
   593 "@	c #FCFFFC",
       
   594 "              ",
       
   595 " ++++++++++++ ",
       
   596 " +..........+ ",
       
   597 " +.@@@@@@@@.+ ",
       
   598 " +.@......@.+ ",
       
   599 " +.@......@.+ ",
       
   600 " +.@......@.+ ",
       
   601 " +.@......@.+ ",
       
   602 " +.@......@.+ ",
       
   603 " +.@......@.+ ",
       
   604 " +.@@@@@@@@.+ ",
       
   605 " +..........+ ",
       
   606 " ++++++++++++ ",
       
   607 "              "};
       
   608 
       
   609 
       
   610 /* XPM */
       
   611 static const char * const min_big_xpm[] = {
       
   612 "28 28 4 1",
       
   613 " 	c #09454A",
       
   614 ".	c #218C98",
       
   615 "+	c #47D8E5",
       
   616 "@	c #FDFFFC",
       
   617 "                            ",
       
   618 "                            ",
       
   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 /* XPM */
       
   647 static const char * const min_small_xpm[] = {
       
   648 "14 14 4 1",
       
   649 " 	c #09454A",
       
   650 ".	c #218C98",
       
   651 "+	c #47D8E5",
       
   652 "@	c #FCFFFC",
       
   653 "              ",
       
   654 " ++++++++++++ ",
       
   655 " +..........+ ",
       
   656 " +..........+ ",
       
   657 " +..........+ ",
       
   658 " +..........+ ",
       
   659 " +..........+ ",
       
   660 " +..........+ ",
       
   661 " +..........+ ",
       
   662 " +.@@@@@@@@.+ ",
       
   663 " +..........+ ",
       
   664 " +..........+ ",
       
   665 " ++++++++++++ ",
       
   666 "              "};
       
   667 
       
   668 #ifdef Q_WS_WINCE_WM
       
   669 
       
   670 static char * sbhandleup_xpm[] = {
       
   671 "26 41 45 1",
       
   672 " 	c None",
       
   673 ".	c #000000",
       
   674 "+	c #E7E7E7",
       
   675 "@	c #D6D7D6",
       
   676 "#	c #949294",
       
   677 "$	c #737573",
       
   678 "%	c #636563",
       
   679 "&	c #636163",
       
   680 "*	c #5A5D5A",
       
   681 "=	c #5A595A",
       
   682 "-	c #525552",
       
   683 ";	c #525152",
       
   684 ">	c #4A4D4A",
       
   685 ",	c #7B797B",
       
   686 "'	c #CECFCE",
       
   687 ")	c #CED3CE",
       
   688 "!	c #6B6D6B",
       
   689 "~	c #6B696B",
       
   690 "{	c #737173",
       
   691 "]	c #7B7D7B",
       
   692 "^	c #848684",
       
   693 "/	c #848284",
       
   694 "(	c #8C8A8C",
       
   695 "_	c #8C8E8C",
       
   696 ":	c #B5B2B5",
       
   697 "<	c #FFFFFF",
       
   698 "[	c #949694",
       
   699 "}	c #B5B6B5",
       
   700 "|	c #9C9A9C",
       
   701 "1	c #ADAEAD",
       
   702 "2	c #9C9E9C",
       
   703 "3	c #BDBABD",
       
   704 "4	c #BDBEBD",
       
   705 "5	c #F7F3F7",
       
   706 "6	c #C6C3C6",
       
   707 "7	c #C6C7C6",
       
   708 "8	c #A5A2A5",
       
   709 "9	c #CECBCE",
       
   710 "0	c #FFFBFF",
       
   711 "a	c #ADAAAD",
       
   712 "b	c #A5A6A5",
       
   713 "c	c #D6D3D6",
       
   714 "d	c #B5BAB5",
       
   715 "e	c #DEDFDE",
       
   716 "f	c #DEDBDE",
       
   717 "..........................",
       
   718 "+@#$%%&&&**===---;;;;>=,'+",
       
   719 "+@#$%%&&&**===---;;;;>=$'+",
       
   720 ")$!!~~%%&&&**===---;;;;>;'",
       
   721 "#{$]],,$${{{!!~~%%%&&&*-;]",
       
   722 "#{$]],,$${{{!!~~%%%&&&*-;]",
       
   723 ",$^//]],,$${{{!!~~%%%&&*;*",
       
   724 ",,(^^//]],$${!!!!!~~%%%&-*",
       
   725 ",,(^^//]],$${!!!!!~~%%%&-*",
       
   726 "]]_((^^//]$!%%~!{{!!~~%%-*",
       
   727 "//#__((^^]{:<<:~!{{{!!~~=*",
       
   728 "//#__((^^]{:<<:~!{{{!!~~=&",
       
   729 "//###__(/$:<<<<:~{${{!!~*&",
       
   730 "^^[[##_^]:<<<<<<}!{$${{!*%",
       
   731 "^^[[##_^]:<<<<<<}!{$${{!*%",
       
   732 "((|[[#_/:<<<<<<<<}!$$${{&~",
       
   733 "((||[#^1<<<<1:<<<<}!$$$$&~",
       
   734 "((||[#^1<<<<1:<<<<}!$$$$&~",
       
   735 "__2|#(1<<<<}],}<<<<}{$,$%~",
       
   736 "##2|_1<<<<}^((]3<<<<}{$,~!",
       
   737 "##2|_1<<<<}^((]3<<<<}{$,~!",
       
   738 "##2#1<<<<3^###(/4<<<<}{,~{",
       
   739 "##2#1<<<<3^###(/4<<<<}{,~!",
       
   740 "[[2_5<<<4(#|[[#_/6<<<<,,!{",
       
   741 "[|2_5<<4_[||||[[_/7<<<,]{$",
       
   742 "[|2_5<<4_[||||[[_/7<<<,]{$",
       
   743 "||8_5<6#|2222|||[_/9<<,]{$",
       
   744 "228#06[28888222||[_/'<,/$,",
       
   745 "228#06[28888222||[_/'<,/$,",
       
   746 "22a|6[8bbbb88822||[(/c](,]",
       
   747 "881b8baaabbbb88222|[(^(_,]",
       
   748 "881b8baaabbbb88222|[(^(_,]",
       
   749 "88111111aaabbb88822|[###]/",
       
   750 "bb:::11111aaabbb8822||[[/^",
       
   751 "bb:::11111aaabbb8822||[[//",
       
   752 "bb:::::1111aaabbb8822||[/(",
       
   753 "3a1::::::1111aaabb8822|_^8",
       
   754 "da1::::::1111aaabb8822|_^8",
       
   755 "e1aaabbbb888822||[[##__((@",
       
   756 "+e4:aaabbbb88822||[[[#[b@+",
       
   757 "+e4:aaabbbb88822||[[[#[bf+"};
       
   758 
       
   759 static char * sbhandledown_xpm[] = {
       
   760 "26 40 46 1",
       
   761 " 	c None",
       
   762 ".	c #E7E7E7",
       
   763 "+	c #DEDFDE",
       
   764 "@	c #BDBEBD",
       
   765 "#	c #B5B2B5",
       
   766 "$	c #ADAAAD",
       
   767 "%	c #A5A6A5",
       
   768 "&	c #A5A2A5",
       
   769 "*	c #9C9E9C",
       
   770 "=	c #9C9A9C",
       
   771 "-	c #949694",
       
   772 ";	c #949294",
       
   773 ">	c #D6D7D6",
       
   774 ",	c #DEDBDE",
       
   775 "'	c #D6DBD6",
       
   776 ")	c #ADAEAD",
       
   777 "!	c #8C8E8C",
       
   778 "~	c #8C8A8C",
       
   779 "{	c #BDBABD",
       
   780 "]	c #848684",
       
   781 "^	c #B5BAB5",
       
   782 "/	c #848284",
       
   783 "(	c #848A84",
       
   784 "_	c #7B7D7B",
       
   785 ":	c #7B797B",
       
   786 "<	c #C6C3C6",
       
   787 "[	c #D6D3D6",
       
   788 "}	c #FFFBFF",
       
   789 "|	c #CECFCE",
       
   790 "1	c #FFFFFF",
       
   791 "2	c #737573",
       
   792 "3	c #F7F3F7",
       
   793 "4	c #CECBCE",
       
   794 "5	c #737173",
       
   795 "6	c #C6C7C6",
       
   796 "7	c #6B6D6B",
       
   797 "8	c #B5B6B5",
       
   798 "9	c #6B696B",
       
   799 "0	c #636563",
       
   800 "a	c #636163",
       
   801 "b	c #5A5D5A",
       
   802 "c	c #5A595A",
       
   803 "d	c #525552",
       
   804 "e	c #525152",
       
   805 "f	c #4A4D4A",
       
   806 "g	c #C6CBC6",
       
   807 ".+@#$$$%%%%&&&**==---;-%>.",
       
   808 ".+@#$$$%%%%&&&**==---;-%,.",
       
   809 "')$$$%%%%&&&&**==--;;!!~~>",
       
   810 "{$)######))))$$$%%&&**=!]&",
       
   811 "^$)######))))$$$%%&&**=!]&",
       
   812 "%%#####))))$$$%%%&&**==-/(",
       
   813 "%%###)))))$$$%%%&&**==--/]",
       
   814 "%%###)))))$$$%%%&&**==--//",
       
   815 "&&))))))$$$%%%&&&**=-;;;_/",
       
   816 "&&)%&%$$$%%%%&&***=-~]~!:_",
       
   817 "&&)%&%$$$%%%%&&***=-~]~!:_",
       
   818 "**$=<-&%%%%&&&**==-~/[_~:_",
       
   819 "**&;}<-*&&&&***==-!/|1:/2:",
       
   820 "**&;}<-*&&&&***==-!/|1:/2:",
       
   821 "==&!31<;=****===-!/411:_5:",
       
   822 "-=*!311@!-====--!/6111:_52",
       
   823 "-=*!311@!-====--!/6111:_52",
       
   824 "--*!3111@~;=--;!/<1111::75",
       
   825 ";;*;)1111{];;;~/@111185:95",
       
   826 ";;*;)1111{];;;~/@111185:97",
       
   827 ";;*=!)11118]~~_{1111852:97",
       
   828 ";;*=!)11118]~~_{1111852:97",
       
   829 "!!*=;~)11118_:81111852:207",
       
   830 "~~==-;])1111)#1111872222a9",
       
   831 "~~==-;])1111)#1111872222a9",
       
   832 "~~=--;!/#111111118722255a0",
       
   833 "]]--;;!]_#11111187522557b0",
       
   834 "]]--;;!]_#11111187522557b0",
       
   835 "//;;;!!~/2#1111#95255779ba",
       
   836 "//;!!~~]]_5#11#975557799cb",
       
   837 "//;!!~~]]_5#11#975557799ca",
       
   838 "__!~~]]//_27009755779900db",
       
   839 "::~]]//__:2257777799000adb",
       
   840 "::~]]//__:2257777799000adb",
       
   841 ":2]//__::225557799000aabeb",
       
   842 ";52__::225557799000aaabde_",
       
   843 ";52__::225557799000aaabde_",
       
   844 "[2779900aaabbcccdddeeeefeg",
       
   845 ".>;200aaabbcccdddeeeefc:|.",
       
   846 ".>;200aaabbcccdddeeeefc2|."};
       
   847 
       
   848 static char * sbgripdown_xpm[] = {
       
   849 "26 34 39 1",
       
   850 " 	c None",
       
   851 ".	c #949294",
       
   852 "+	c #9C9E9C",
       
   853 "@	c #9C9A9C",
       
   854 "#	c #949694",
       
   855 "$	c #8C8E8C",
       
   856 "%	c #8C8A8C",
       
   857 "&	c #848684",
       
   858 "*	c #848284",
       
   859 "=	c #7B7D7B",
       
   860 "-	c #7B797B",
       
   861 ";	c #6B696B",
       
   862 ">	c #636563",
       
   863 ",	c #737573",
       
   864 "'	c #636163",
       
   865 ")	c #737173",
       
   866 "!	c #5A5D5A",
       
   867 "~	c #6B6D6B",
       
   868 "{	c #5A595A",
       
   869 "]	c #B5B6B5",
       
   870 "^	c #BDBEBD",
       
   871 "/	c #ADAEAD",
       
   872 "(	c #BDBABD",
       
   873 "_	c #525552",
       
   874 ":	c #313031",
       
   875 "<	c #525152",
       
   876 "[	c #ADAAAD",
       
   877 "}	c #BDBAB5",
       
   878 "|	c #4A4D4A",
       
   879 "1	c #4A494A",
       
   880 "2	c #C6C3C6",
       
   881 "3	c #C6CBC6",
       
   882 "4	c #E7E7E7",
       
   883 "5	c #DEDFDE",
       
   884 "6	c #E7E3E7",
       
   885 "7	c #DEE3DE",
       
   886 "8	c #CECBCE",
       
   887 "9	c #8C928C",
       
   888 "0	c #CECFCE",
       
   889 "..+++@@@###...$$%&&**==-;>",
       
   890 "$.++@@@@##...$$%%&**==-->>",
       
   891 "$$+@@@@###..$$%%&&*==--,>>",
       
   892 "$$@@@@###..$$%%&&**==-,,>'",
       
   893 "%%@@@###..$$$%&&**==--,,''",
       
   894 "%%@@###..$$$%&&**==--,,)''",
       
   895 "%%@###...$$%%&&*==--,,))'!",
       
   896 "&&###...$$%%&&**==--,)))!!",
       
   897 "&&##...$$%%&&**==--,,))~!!",
       
   898 "&&#...$$%%&&**==--,,))~~!{",
       
   899 "**...$$%%&&**==--,,))~~;!{",
       
   900 "**..$$%%&&**===--,)))~~;{{",
       
   901 "**.$$%%&]^&===//,,))~~;;{{",
       
   902 "==$$%%&&]^*==-((,))~~;;>{_",
       
   903 "==$%%&&***::--,,::~~;;;>__",
       
   904 "==%%&&&**=::-,,)::~~;;>>__",
       
   905 "--%&&&**==--,,)))~~;;>>>__",
       
   906 "--&&&**==--,,)))~~;;>>>'_<",
       
   907 ",-&&**==]^-,))[[~;;>>>''<<",
       
   908 ",,&**==-]^-)))}};;>>>'''<<",
       
   909 ",,**==--,,::)~~;::>>'''!<<",
       
   910 "))*==--,,)::~~;;::>'''!!<|",
       
   911 "))==--,,)))~~;;;>>'''!!!||",
       
   912 "))=--,,)))~~;;;>>'''!!!{||",
       
   913 "~~--,,)))~~;;;>>'''!!!{{||",
       
   914 "~~-,,)))~~;;>>>'''!!!{{{|1",
       
   915 ";;,,)))~~;;>>>'''!!!{{{_1<",
       
   916 "~;,)))~~;;>>>'''!!!{{{__1'",
       
   917 "%>~))~~;;>>>'''!!!{{{__|1$",
       
   918 "2>>~~~;;>>>''!!!{{{{__<113",
       
   919 "4%'';;;>>>''!!!{{{{__<11%4",
       
   920 "45-!!'>>>''!!!{{{{_<|11)64",
       
   921 "447+!{{___<<<||||1111|+444",
       
   922 "444489~__<<<||||111>$04444"};
       
   923 
       
   924 static char * sbgripup_xpm[] = {
       
   925 "26 34 38 1",
       
   926 " 	c None",
       
   927 ".	c #E7E7E7",
       
   928 "+	c #D6DBD6",
       
   929 "@	c #C6C7C6",
       
   930 "#	c #B5B6B5",
       
   931 "$	c #ADAEAD",
       
   932 "%	c #ADAAAD",
       
   933 "&	c #A5A6A5",
       
   934 "*	c #A5A2A5",
       
   935 "=	c #BDBEBD",
       
   936 "-	c #DEDFDE",
       
   937 ";	c #C6CBC6",
       
   938 ">	c #9C9E9C",
       
   939 ",	c #E7E3E7",
       
   940 "'	c #BDBABD",
       
   941 ")	c #B5B2B5",
       
   942 "!	c #9C9A9C",
       
   943 "~	c #DEE3DE",
       
   944 "{	c #949694",
       
   945 "]	c #D6D7D6",
       
   946 "^	c #949294",
       
   947 "/	c #DEDBDE",
       
   948 "(	c #8C8E8C",
       
   949 "_	c #8C8A8C",
       
   950 ":	c #848684",
       
   951 "<	c #D6D3CE",
       
   952 "[	c #CECBCE",
       
   953 "}	c #D6D3D6",
       
   954 "|	c #848284",
       
   955 "1	c #313031",
       
   956 "2	c #7B7D7B",
       
   957 "3	c #CECFCE",
       
   958 "4	c #CECBC6",
       
   959 "5	c #7B797B",
       
   960 "6	c #737573",
       
   961 "7	c #737173",
       
   962 "8	c #6B6D6B",
       
   963 "9	c #6B696B",
       
   964 "....+@#$$%%%%&&&***$=-....",
       
   965 "...;$$$$$%%%&&&&**>>>>@...",
       
   966 ".,'$$)#'#####)))$$$%*!!$~.",
       
   967 ".=$)#'''####))))$$$%%*!{'.",
       
   968 "]$$''''#####)))$$$%%%&*{^/",
       
   969 "=$#'''#####)))$$$$%%&&&!^#",
       
   970 "$$'''#####))))$$$%%%&&*>(!",
       
   971 "$$''#####))))$$$%%%&&&*>(^",
       
   972 "$$######))))$$$$%%&&&**>(_",
       
   973 "%$#####))))$$$$%%%&&***>__",
       
   974 "%$####))))$$$$%%%&&&**>>__",
       
   975 "%%###)))))$$$%%%&&&**>>>_:",
       
   976 "%%##))))<])$$%[[&&***>>!::",
       
   977 "%%#)))))<]$$%%}<&&**>>!!:|",
       
   978 "&%)))))$$$11%%&&11*>>>!!:|",
       
   979 "&&))))$$$$11%&&&11*>>!!{||",
       
   980 "&&)))$$$$$%%%&&&**>>!!!{|2",
       
   981 "&&))$$$$$%%%&&&**>>>!!{{|2",
       
   982 "*&)$$$$$3]%&&&4@*>>!!{{{22",
       
   983 "**$$$$$%3]%&&&<<>>!!!{{^25",
       
   984 "**$$$$%%%%11&**>11!!{{^^25",
       
   985 "**$$$%%%%&11***>11!!{{^^55",
       
   986 "**$$%%%%&&&***>>!!!{{^^(55",
       
   987 ">>$%%%%&&&***>>>!!{{^^((56",
       
   988 ">>%%%%&&&&***>>!!!{{^^((66",
       
   989 ">>%%%&&&&***>>!!!{{^^((_67",
       
   990 "!>%%&&&&***>>>!!{{{^^(__67",
       
   991 "!!%&&&&***>>>!!!{{^^((_:77",
       
   992 "!!&&&&***>>>!!!{{^^((__:77",
       
   993 "!!&&&****>>!!!{{^^^(__::78",
       
   994 "{!&&****>>>!!{{{^^((_::|88",
       
   995 "{{&****>>>!!!{{^^((__:||88",
       
   996 "{{****>>>!!!{{^^^(__::|289",
       
   997 "{{***>>>!!!{{{^^((_::||289"};
       
   998 
       
   999 static char * sbgripmiddle_xpm[] = {
       
  1000 "26 2 12 1",
       
  1001 " 	c None",
       
  1002 ".	c #949294",
       
  1003 "+	c #A5A2A5",
       
  1004 "@	c #9C9E9C",
       
  1005 "#	c #9C9A9C",
       
  1006 "$	c #949694",
       
  1007 "%	c #8C8E8C",
       
  1008 "&	c #8C8A8C",
       
  1009 "*	c #848684",
       
  1010 "=	c #848284",
       
  1011 "-	c #7B7D7B",
       
  1012 ";	c #6B696B",
       
  1013 "..++@@@###$$$..%%&&*==--;;",
       
  1014 "..++@@@###$$$..%%&&*==--;;"};
       
  1015 
       
  1016 
       
  1017 static char * listviewhighmiddle_xpm[] = {
       
  1018 "8 46 197 2",
       
  1019 "  	c None",
       
  1020 ". 	c #66759E",
       
  1021 "+ 	c #6C789D",
       
  1022 "@ 	c #6A789E",
       
  1023 "# 	c #6B789E",
       
  1024 "$ 	c #6A779D",
       
  1025 "% 	c #6C789C",
       
  1026 "& 	c #6F7D9B",
       
  1027 "* 	c #6F7D9A",
       
  1028 "= 	c #9DB6EE",
       
  1029 "- 	c #9DB6ED",
       
  1030 "; 	c #9CB6ED",
       
  1031 "> 	c #A1B6EF",
       
  1032 ", 	c #A2B6F0",
       
  1033 "' 	c #93AAE9",
       
  1034 ") 	c #95ABEA",
       
  1035 "! 	c #94ABEA",
       
  1036 "~ 	c #94A9E8",
       
  1037 "{ 	c #8BA8EA",
       
  1038 "] 	c #8BA7EA",
       
  1039 "^ 	c #8AA7EA",
       
  1040 "/ 	c #8EAAE8",
       
  1041 "( 	c #8FAAE8",
       
  1042 "_ 	c #88A2E7",
       
  1043 ": 	c #8CA3E8",
       
  1044 "< 	c #8BA3E7",
       
  1045 "[ 	c #8BA3E8",
       
  1046 "} 	c #8BA2E7",
       
  1047 "| 	c #8CA2E7",
       
  1048 "1 	c #8DA2E7",
       
  1049 "2 	c #87A1E8",
       
  1050 "3 	c #87A1E9",
       
  1051 "4 	c #86A0E8",
       
  1052 "5 	c #86A1E7",
       
  1053 "6 	c #87A2E7",
       
  1054 "7 	c #859EE9",
       
  1055 "8 	c #849DE9",
       
  1056 "9 	c #869EE9",
       
  1057 "0 	c #869FE9",
       
  1058 "a 	c #7C9BEA",
       
  1059 "b 	c #7C9CEA",
       
  1060 "c 	c #7B9CEA",
       
  1061 "d 	c #7C9BE9",
       
  1062 "e 	c #7E9CE9",
       
  1063 "f 	c #7B9AEA",
       
  1064 "g 	c #7C99E9",
       
  1065 "h 	c #7C9AEA",
       
  1066 "i 	c #7B9AE8",
       
  1067 "j 	c #7A9AEA",
       
  1068 "k 	c #7996E1",
       
  1069 "l 	c #7C96E4",
       
  1070 "m 	c #7B96E3",
       
  1071 "n 	c #7B95E3",
       
  1072 "o 	c #7E95E5",
       
  1073 "p 	c #7E95E6",
       
  1074 "q 	c #7292E1",
       
  1075 "r 	c #7490DF",
       
  1076 "s 	c #7591E0",
       
  1077 "t 	c #7590DF",
       
  1078 "u 	c #7392E1",
       
  1079 "v 	c #6D8CDE",
       
  1080 "w 	c #6F8EDD",
       
  1081 "x 	c #6E8DDD",
       
  1082 "y 	c #6E8DDE",
       
  1083 "z 	c #6F8EDE",
       
  1084 "A 	c #6E8EDE",
       
  1085 "B 	c #718EDD",
       
  1086 "C 	c #728EDD",
       
  1087 "D 	c #6B89E0",
       
  1088 "E 	c #6C89DF",
       
  1089 "F 	c #6D89E0",
       
  1090 "G 	c #6D89DF",
       
  1091 "H 	c #6C88DF",
       
  1092 "I 	c #6D88DF",
       
  1093 "J 	c #6D86DD",
       
  1094 "K 	c #6086E0",
       
  1095 "L 	c #6686E0",
       
  1096 "M 	c #6586E0",
       
  1097 "N 	c #6486E0",
       
  1098 "O 	c #6485E0",
       
  1099 "P 	c #6786DF",
       
  1100 "Q 	c #5F85E0",
       
  1101 "R 	c #6583DE",
       
  1102 "S 	c #6683DE",
       
  1103 "T 	c #6682DD",
       
  1104 "U 	c #6086DF",
       
  1105 "V 	c #5F86E0",
       
  1106 "W 	c #567ED7",
       
  1107 "X 	c #567ED8",
       
  1108 "Y 	c #557DD7",
       
  1109 "Z 	c #5A7FD8",
       
  1110 "` 	c #6281DA",
       
  1111 " .	c #5379D9",
       
  1112 "..	c #5278D9",
       
  1113 "+.	c #547BD8",
       
  1114 "@.	c #4C73D7",
       
  1115 "#.	c #4B72D2",
       
  1116 "$.	c #4C73D4",
       
  1117 "%.	c #4C73D3",
       
  1118 "&.	c #4B72D4",
       
  1119 "*.	c #4F75D3",
       
  1120 "=.	c #5074D2",
       
  1121 "-.	c #4971D0",
       
  1122 ";.	c #4871D0",
       
  1123 ">.	c #335ECF",
       
  1124 ",.	c #325ECB",
       
  1125 "'.	c #335ECD",
       
  1126 ").	c #335ECE",
       
  1127 "!.	c #325DCD",
       
  1128 "~.	c #2E59C9",
       
  1129 "{.	c #3059C9",
       
  1130 "].	c #2F59C9",
       
  1131 "^.	c #2F59C8",
       
  1132 "/.	c #2B59CA",
       
  1133 "(.	c #3355C6",
       
  1134 "_.	c #3354C5",
       
  1135 ":.	c #3156C7",
       
  1136 "<.	c #3056C7",
       
  1137 "[.	c #3355C7",
       
  1138 "}.	c #3355C5",
       
  1139 "|.	c #254EBF",
       
  1140 "1.	c #1F51C1",
       
  1141 "2.	c #234FC0",
       
  1142 "3.	c #234FBF",
       
  1143 "4.	c #2350C0",
       
  1144 "5.	c #1E50BE",
       
  1145 "6.	c #1D50C0",
       
  1146 "7.	c #264DBE",
       
  1147 "8.	c #264CBD",
       
  1148 "9.	c #254DBE",
       
  1149 "0.	c #244EBF",
       
  1150 "a.	c #254DBF",
       
  1151 "b.	c #234CBF",
       
  1152 "c.	c #244CC0",
       
  1153 "d.	c #244BC0",
       
  1154 "e.	c #234BC0",
       
  1155 "f.	c #234BBF",
       
  1156 "g.	c #234CBE",
       
  1157 "h.	c #2049B7",
       
  1158 "i.	c #2A49B5",
       
  1159 "j.	c #2749B5",
       
  1160 "k.	c #2749B6",
       
  1161 "l.	c #2D49B4",
       
  1162 "m.	c #2649B6",
       
  1163 "n.	c #2946B5",
       
  1164 "o.	c #2A48B6",
       
  1165 "p.	c #2947B5",
       
  1166 "q.	c #2946B6",
       
  1167 "r.	c #2848B6",
       
  1168 "s.	c #2549B5",
       
  1169 "t.	c #2648B6",
       
  1170 "u.	c #2744B5",
       
  1171 "v.	c #2744B4",
       
  1172 "w.	c #2744AF",
       
  1173 "x.	c #2543B4",
       
  1174 "y.	c #2543B2",
       
  1175 "z.	c #2442B2",
       
  1176 "A.	c #2442B3",
       
  1177 "B.	c #2442B5",
       
  1178 "C.	c #2543B3",
       
  1179 "D.	c #1F40B1",
       
  1180 "E.	c #1E40B1",
       
  1181 "F.	c #243EAE",
       
  1182 "G.	c #273BAC",
       
  1183 "H.	c #263DAC",
       
  1184 "I.	c #253CAB",
       
  1185 "J.	c #273CAB",
       
  1186 "K.	c #273CAC",
       
  1187 "L.	c #263BAA",
       
  1188 "M.	c #253CAE",
       
  1189 "N.	c #263BA6",
       
  1190 "O.	c #253BA5",
       
  1191 "P.	c #253AA5",
       
  1192 "Q.	c #253BA6",
       
  1193 "R.	c #253CA7",
       
  1194 "S.	c #263AA6",
       
  1195 "T.	c #243CA6",
       
  1196 "U.	c #253CA5",
       
  1197 "V.	c #273BA8",
       
  1198 "W.	c #2F4DA4",
       
  1199 "X.	c #2F4DA3",
       
  1200 "Y.	c #1B2F85",
       
  1201 "Z.	c #B5B5B6",
       
  1202 "`.	c #B5B5B5",
       
  1203 " +	c #B5B6B6",
       
  1204 ".+	c #B5B4B6",
       
  1205 "++	c #C2C3C5",
       
  1206 "@+	c #C0C3C3",
       
  1207 "#+	c #C1C3C4",
       
  1208 "$+	c #E3E3E3",
       
  1209 "%+	c #E3E3E4",
       
  1210 "&+	c #E4E3E4",
       
  1211 "*+	c #E2E3E4",
       
  1212 "=+	c #ECEEEB",
       
  1213 "-+	c #EBEDEA",
       
  1214 ";+	c #EEF0ED",
       
  1215 ">+	c #EFF0EE",
       
  1216 ". + @ @ # # $ % ",
       
  1217 "& & * & & & & & ",
       
  1218 "= = - = = ; > , ",
       
  1219 "' ) ! ! ! ) ' ~ ",
       
  1220 "{ ] { { { ^ / ( ",
       
  1221 "_ : < [ : } | 1 ",
       
  1222 "2 2 2 3 2 4 5 6 ",
       
  1223 "7 7 7 7 7 8 9 0 ",
       
  1224 "a b a a a c d e ",
       
  1225 "f g h h h h i j ",
       
  1226 "k l m m m n o p ",
       
  1227 "q q q q q q q q ",
       
  1228 "r r s s s t q u ",
       
  1229 "v w x y z A B C ",
       
  1230 "D E F F G F H I ",
       
  1231 "J K L M N O P Q ",
       
  1232 "R R S S S T U V ",
       
  1233 "W W X X X Y Z ` ",
       
  1234 " . . . . ...+.W ",
       
  1235 " . . . . ..... .",
       
  1236 "@.#.$.$.%.&.*.=.",
       
  1237 "-.-.;.-.-.-.-.-.",
       
  1238 ">.,.'.).).!.!.>.",
       
  1239 "~.{.].^.].^././.",
       
  1240 "(.(.(.(.(._.:.<.",
       
  1241 "(.(.[.[.[.[.(.}.",
       
  1242 "|.1.2.3.3.4.5.6.",
       
  1243 "7.7.7.7.7.8.9.0.",
       
  1244 "a.b.c.d.c.e.f.g.",
       
  1245 "h.i.j.k.j.k.l.m.",
       
  1246 "n.o.p.q.r.p.s.t.",
       
  1247 "u.u.v.u.u.u.u.u.",
       
  1248 "w.x.y.z.A.y.B.C.",
       
  1249 "D.D.E.D.D.D.D.D.",
       
  1250 "D.D.E.D.D.D.D.D.",
       
  1251 "F.G.H.I.J.K.L.M.",
       
  1252 "N.N.O.N.N.P.Q.R.",
       
  1253 "N.N.S.N.N.N.N.N.",
       
  1254 "T.N.T.T.T.U.N.V.",
       
  1255 "W.W.X.W.W.W.W.W.",
       
  1256 "W.W.W.W.W.W.W.W.",
       
  1257 "Y.Y.Y.Y.Y.Y.Y.Y.",
       
  1258 "Z.`. + +.+Z.`.`.",
       
  1259 "++@+#+#+#+#+@+@+",
       
  1260 "$+%+&+&+*+%+%+%+",
       
  1261 "=+-+;+-+-+>+-+-+"};
       
  1262 
       
  1263 
       
  1264 
       
  1265 static char * listviewhighcornerleft_xpm[] = {
       
  1266 "100 46 1475 2",
       
  1267 "  	c None",
       
  1268 ". 	c #FBFBFC",
       
  1269 "+ 	c #E8EAE7",
       
  1270 "@ 	c #758DC3",
       
  1271 "# 	c #42599E",
       
  1272 "$ 	c #28418A",
       
  1273 "% 	c #19418F",
       
  1274 "& 	c #3F5695",
       
  1275 "* 	c #415896",
       
  1276 "= 	c #435A98",
       
  1277 "- 	c #445C99",
       
  1278 "; 	c #465E9B",
       
  1279 "> 	c #48609B",
       
  1280 ", 	c #49629C",
       
  1281 "' 	c #4A639D",
       
  1282 ") 	c #49639D",
       
  1283 "! 	c #4A629D",
       
  1284 "~ 	c #4B639D",
       
  1285 "{ 	c #4B649D",
       
  1286 "] 	c #4C659D",
       
  1287 "^ 	c #4D669D",
       
  1288 "/ 	c #4E689D",
       
  1289 "( 	c #506A9D",
       
  1290 "_ 	c #516A9D",
       
  1291 ": 	c #536B9C",
       
  1292 "< 	c #546C9C",
       
  1293 "[ 	c #566D9B",
       
  1294 "} 	c #576D9B",
       
  1295 "| 	c #586E9C",
       
  1296 "1 	c #5B6F9D",
       
  1297 "2 	c #61739D",
       
  1298 "3 	c #63749E",
       
  1299 "4 	c #64749E",
       
  1300 "5 	c #68769E",
       
  1301 "6 	c #6A779E",
       
  1302 "7 	c #6B789E",
       
  1303 "8 	c #66759E",
       
  1304 "9 	c #6C789D",
       
  1305 "0 	c #EEF0ED",
       
  1306 "a 	c #D0D3DC",
       
  1307 "b 	c #3E51A3",
       
  1308 "c 	c #28428B",
       
  1309 "d 	c #29428C",
       
  1310 "e 	c #425996",
       
  1311 "f 	c #455C99",
       
  1312 "g 	c #485F9C",
       
  1313 "h 	c #49619E",
       
  1314 "i 	c #4A63A0",
       
  1315 "j 	c #4B64A1",
       
  1316 "k 	c #4B65A1",
       
  1317 "l 	c #4C66A2",
       
  1318 "m 	c #4D67A2",
       
  1319 "n 	c #4F69A1",
       
  1320 "o 	c #516AA1",
       
  1321 "p 	c #536CA0",
       
  1322 "q 	c #556DA1",
       
  1323 "r 	c #576EA0",
       
  1324 "s 	c #586F9F",
       
  1325 "t 	c #586E9F",
       
  1326 "u 	c #596F9E",
       
  1327 "v 	c #5A6F9E",
       
  1328 "w 	c #5C709E",
       
  1329 "x 	c #5E719E",
       
  1330 "y 	c #5F729F",
       
  1331 "z 	c #62739F",
       
  1332 "A 	c #63739E",
       
  1333 "B 	c #64749D",
       
  1334 "C 	c #65749E",
       
  1335 "D 	c #69769D",
       
  1336 "E 	c #6C799E",
       
  1337 "F 	c #6D799F",
       
  1338 "G 	c #707D9F",
       
  1339 "H 	c #717F9E",
       
  1340 "I 	c #6E7AA1",
       
  1341 "J 	c #6C789E",
       
  1342 "K 	c #6F7C9C",
       
  1343 "L 	c #6F7D9B",
       
  1344 "M 	c #2A4AA0",
       
  1345 "N 	c #4971D0",
       
  1346 "O 	c #4C72D8",
       
  1347 "P 	c #5472C0",
       
  1348 "Q 	c #5573BF",
       
  1349 "R 	c #5774BF",
       
  1350 "S 	c #5875BF",
       
  1351 "T 	c #5976C1",
       
  1352 "U 	c #5A76C1",
       
  1353 "V 	c #5C78C2",
       
  1354 "W 	c #5E7AC2",
       
  1355 "X 	c #607CC3",
       
  1356 "Y 	c #627EC3",
       
  1357 "Z 	c #637FC4",
       
  1358 "` 	c #6581C5",
       
  1359 " .	c #6682C6",
       
  1360 "..	c #6783C7",
       
  1361 "+.	c #6984C8",
       
  1362 "@.	c #6B85C9",
       
  1363 "#.	c #6D87CA",
       
  1364 "$.	c #6F89CB",
       
  1365 "%.	c #718CCD",
       
  1366 "&.	c #748ECF",
       
  1367 "*.	c #7690D0",
       
  1368 "=.	c #7992D2",
       
  1369 "-.	c #7A93D3",
       
  1370 ";.	c #7C95D5",
       
  1371 ">.	c #7F98D7",
       
  1372 ",.	c #8099D8",
       
  1373 "'.	c #859CDB",
       
  1374 ").	c #8AA0DD",
       
  1375 "!.	c #8DA3DF",
       
  1376 "~.	c #8FA5E0",
       
  1377 "{.	c #90A5E0",
       
  1378 "].	c #91A6E1",
       
  1379 "^.	c #91A5E1",
       
  1380 "/.	c #90A4E0",
       
  1381 "(.	c #8EA3DE",
       
  1382 "_.	c #92A6E2",
       
  1383 ":.	c #8FA4DF",
       
  1384 "<.	c #90A5DE",
       
  1385 "[.	c #90A5DC",
       
  1386 "}.	c #90A6DB",
       
  1387 "|.	c #91A6E0",
       
  1388 "1.	c #93A7E2",
       
  1389 "2.	c #95AAE6",
       
  1390 "3.	c #99AEEA",
       
  1391 "4.	c #9AB2EA",
       
  1392 "5.	c #99B1E9",
       
  1393 "6.	c #99B1E7",
       
  1394 "7.	c #98AFE6",
       
  1395 "8.	c #93A8E2",
       
  1396 "9.	c #97ACE7",
       
  1397 "0.	c #9AB3EB",
       
  1398 "a.	c #9DB5ED",
       
  1399 "b.	c #9DB6EE",
       
  1400 "c.	c #375095",
       
  1401 "d.	c #4056AD",
       
  1402 "e.	c #506DCD",
       
  1403 "f.	c #4360CC",
       
  1404 "g.	c #345ED6",
       
  1405 "h.	c #335ECF",
       
  1406 "i.	c #355ED6",
       
  1407 "j.	c #355FD6",
       
  1408 "k.	c #365FD6",
       
  1409 "l.	c #355FD0",
       
  1410 "m.	c #3760D5",
       
  1411 "n.	c #3A63D4",
       
  1412 "o.	c #3C63D1",
       
  1413 "p.	c #3B63CD",
       
  1414 "q.	c #3B63C9",
       
  1415 "r.	c #3B62C9",
       
  1416 "s.	c #3D63C8",
       
  1417 "t.	c #4065C5",
       
  1418 "u.	c #4567C5",
       
  1419 "v.	c #496BC5",
       
  1420 "w.	c #4F70C7",
       
  1421 "x.	c #5273C8",
       
  1422 "y.	c #5475CA",
       
  1423 "z.	c #5777CB",
       
  1424 "A.	c #5879CD",
       
  1425 "B.	c #5A7BCE",
       
  1426 "C.	c #5D7DCF",
       
  1427 "D.	c #5F7ECF",
       
  1428 "E.	c #617FD0",
       
  1429 "F.	c #6381D1",
       
  1430 "G.	c #6583D2",
       
  1431 "H.	c #6785D2",
       
  1432 "I.	c #6886D3",
       
  1433 "J.	c #6A88D4",
       
  1434 "K.	c #6C89D5",
       
  1435 "L.	c #6E8BD6",
       
  1436 "M.	c #708CD7",
       
  1437 "N.	c #718DD8",
       
  1438 "O.	c #738EDA",
       
  1439 "P.	c #748FDB",
       
  1440 "Q.	c #7691DC",
       
  1441 "R.	c #7893DD",
       
  1442 "S.	c #7994DD",
       
  1443 "T.	c #7A96DE",
       
  1444 "U.	c #7B97DF",
       
  1445 "V.	c #7C98E0",
       
  1446 "W.	c #7E9AE2",
       
  1447 "X.	c #7F9BE3",
       
  1448 "Y.	c #829DE4",
       
  1449 "Z.	c #849FE5",
       
  1450 "`.	c #87A0E6",
       
  1451 " +	c #88A1E7",
       
  1452 ".+	c #89A2E6",
       
  1453 "++	c #8CA3E7",
       
  1454 "@+	c #8EA5E9",
       
  1455 "#+	c #8EA6E9",
       
  1456 "$+	c #8FA7E9",
       
  1457 "%+	c #8FA8E8",
       
  1458 "&+	c #8FA9E8",
       
  1459 "*+	c #91A9E8",
       
  1460 "=+	c #90A7E8",
       
  1461 "-+	c #8FA8EA",
       
  1462 ";+	c #90AAEA",
       
  1463 ">+	c #93ABEA",
       
  1464 ",+	c #95ABEA",
       
  1465 "'+	c #93ABE9",
       
  1466 ")+	c #94ABEA",
       
  1467 "!+	c #90A9EA",
       
  1468 "~+	c #93AAE9",
       
  1469 "{+	c #273E7E",
       
  1470 "]+	c #345ED5",
       
  1471 "^+	c #3D60CE",
       
  1472 "/+	c #3D60CF",
       
  1473 "(+	c #345ECF",
       
  1474 "_+	c #335ED0",
       
  1475 ":+	c #355FD3",
       
  1476 "<+	c #3A60CE",
       
  1477 "[+	c #3A5FCB",
       
  1478 "}+	c #385FC9",
       
  1479 "|+	c #3B60C8",
       
  1480 "1+	c #3C63CB",
       
  1481 "2+	c #3E64CB",
       
  1482 "3+	c #4166CA",
       
  1483 "4+	c #4568C9",
       
  1484 "5+	c #4A6CC7",
       
  1485 "6+	c #4F71C8",
       
  1486 "7+	c #5172CA",
       
  1487 "8+	c #5475CE",
       
  1488 "9+	c #5678D3",
       
  1489 "0+	c #597CD6",
       
  1490 "a+	c #5C7ED7",
       
  1491 "b+	c #5E7FD8",
       
  1492 "c+	c #6181D9",
       
  1493 "d+	c #6383DA",
       
  1494 "e+	c #6585DA",
       
  1495 "f+	c #6786DB",
       
  1496 "g+	c #6988DC",
       
  1497 "h+	c #6B8ADD",
       
  1498 "i+	c #6D8BDE",
       
  1499 "j+	c #6F8DDE",
       
  1500 "k+	c #718EDF",
       
  1501 "l+	c #728FE0",
       
  1502 "m+	c #7390E1",
       
  1503 "n+	c #7390E2",
       
  1504 "o+	c #7491E3",
       
  1505 "p+	c #7592E4",
       
  1506 "q+	c #7693E4",
       
  1507 "r+	c #7794E5",
       
  1508 "s+	c #7894E5",
       
  1509 "t+	c #7995E6",
       
  1510 "u+	c #7B96E6",
       
  1511 "v+	c #7C97E7",
       
  1512 "w+	c #7D9AE8",
       
  1513 "x+	c #7F9CE9",
       
  1514 "y+	c #829DE9",
       
  1515 "z+	c #849EE9",
       
  1516 "A+	c #859EE9",
       
  1517 "B+	c #87A0E7",
       
  1518 "C+	c #8AA2E7",
       
  1519 "D+	c #8BA3E8",
       
  1520 "E+	c #89A2E7",
       
  1521 "F+	c #8CA6EA",
       
  1522 "G+	c #8BA6EA",
       
  1523 "H+	c #8BA7EA",
       
  1524 "I+	c #8CA3E8",
       
  1525 "J+	c #8BA8EA",
       
  1526 "K+	c #8CA7EA",
       
  1527 "L+	c #8CA8EA",
       
  1528 "M+	c #4659C7",
       
  1529 "N+	c #355ECF",
       
  1530 "O+	c #3660CF",
       
  1531 "P+	c #3860CE",
       
  1532 "Q+	c #3961CD",
       
  1533 "R+	c #3B61CB",
       
  1534 "S+	c #3B61CA",
       
  1535 "T+	c #3D62CA",
       
  1536 "U+	c #3D63CA",
       
  1537 "V+	c #4165CB",
       
  1538 "W+	c #456ACB",
       
  1539 "X+	c #4B6FCD",
       
  1540 "Y+	c #5174CE",
       
  1541 "Z+	c #5275D1",
       
  1542 "`+	c #5477D4",
       
  1543 " @	c #5678D9",
       
  1544 ".@	c #587ADB",
       
  1545 "+@	c #597BDB",
       
  1546 "@@	c #5B7DDC",
       
  1547 "#@	c #5E7FDC",
       
  1548 "$@	c #6081DD",
       
  1549 "%@	c #6283DE",
       
  1550 "&@	c #6484DF",
       
  1551 "*@	c #6787E0",
       
  1552 "=@	c #6989E1",
       
  1553 "-@	c #6B8BE1",
       
  1554 ";@	c #6D8DE2",
       
  1555 ">@	c #6F8EE3",
       
  1556 ",@	c #718FE4",
       
  1557 "'@	c #7290E4",
       
  1558 ")@	c #7491E5",
       
  1559 "!@	c #7692E6",
       
  1560 "~@	c #7793E5",
       
  1561 "{@	c #7894E6",
       
  1562 "]@	c #7895E7",
       
  1563 "^@	c #7996E8",
       
  1564 "/@	c #7A97E8",
       
  1565 "(@	c #7B98E9",
       
  1566 "_@	c #7D99E8",
       
  1567 ":@	c #7F9AE8",
       
  1568 "<@	c #7F9BE9",
       
  1569 "[@	c #7F9CEA",
       
  1570 "}@	c #859EE8",
       
  1571 "|@	c #859FE8",
       
  1572 "1@	c #85A0E9",
       
  1573 "2@	c #869FE9",
       
  1574 "3@	c #86A1E7",
       
  1575 "4@	c #86A0E9",
       
  1576 "5@	c #87A1E7",
       
  1577 "6@	c #88A2E7",
       
  1578 "7@	c #87A1E9",
       
  1579 "8@	c #5A6FCA",
       
  1580 "9@	c #365FCF",
       
  1581 "0@	c #345ED0",
       
  1582 "a@	c #385FCC",
       
  1583 "b@	c #385FCE",
       
  1584 "c@	c #3A61CC",
       
  1585 "d@	c #3B62CD",
       
  1586 "e@	c #3E64CD",
       
  1587 "f@	c #4167CF",
       
  1588 "g@	c #4469CF",
       
  1589 "h@	c #486CD1",
       
  1590 "i@	c #4D71D2",
       
  1591 "j@	c #5175D4",
       
  1592 "k@	c #5376D6",
       
  1593 "l@	c #5578DA",
       
  1594 "m@	c #5679DC",
       
  1595 "n@	c #587BDD",
       
  1596 "o@	c #5A7DDE",
       
  1597 "p@	c #5D80DE",
       
  1598 "q@	c #5F82DF",
       
  1599 "r@	c #6284DF",
       
  1600 "s@	c #6585E0",
       
  1601 "t@	c #6787E1",
       
  1602 "u@	c #6988E2",
       
  1603 "v@	c #6B8AE2",
       
  1604 "w@	c #6D8CE3",
       
  1605 "x@	c #6E8DE3",
       
  1606 "y@	c #708EE4",
       
  1607 "z@	c #718FE3",
       
  1608 "A@	c #7391E4",
       
  1609 "B@	c #7592E5",
       
  1610 "C@	c #7895E5",
       
  1611 "D@	c #7996E6",
       
  1612 "E@	c #7A97E6",
       
  1613 "F@	c #7B98E7",
       
  1614 "G@	c #7A98E8",
       
  1615 "H@	c #7B99E9",
       
  1616 "I@	c #7E9AE9",
       
  1617 "J@	c #7D9AE9",
       
  1618 "K@	c #7E9AEA",
       
  1619 "L@	c #809CE9",
       
  1620 "M@	c #819DE8",
       
  1621 "N@	c #7F9BEA",
       
  1622 "O@	c #819DE9",
       
  1623 "P@	c #819CE9",
       
  1624 "Q@	c #839EE9",
       
  1625 "R@	c #839EE8",
       
  1626 "S@	c #839DEA",
       
  1627 "T@	c #859FE9",
       
  1628 "U@	c #87A0E8",
       
  1629 "V@	c #86A0E8",
       
  1630 "W@	c #87A1E8",
       
  1631 "X@	c #3760CF",
       
  1632 "Y@	c #3A61CE",
       
  1633 "Z@	c #3A62CD",
       
  1634 "`@	c #3F66CE",
       
  1635 " #	c #4368D0",
       
  1636 ".#	c #466CD2",
       
  1637 "+#	c #496DD5",
       
  1638 "@#	c #4E72D6",
       
  1639 "##	c #5175D8",
       
  1640 "$#	c #5276DA",
       
  1641 "%#	c #5578DC",
       
  1642 "&#	c #577ADC",
       
  1643 "*#	c #597CDD",
       
  1644 "=#	c #5B7DDD",
       
  1645 "-#	c #5D7FDE",
       
  1646 ";#	c #5E81DE",
       
  1647 ">#	c #6183DF",
       
  1648 ",#	c #6386DF",
       
  1649 "'#	c #6687E0",
       
  1650 ")#	c #6888E0",
       
  1651 "!#	c #6A89E1",
       
  1652 "~#	c #6C8AE1",
       
  1653 "{#	c #6E8CE2",
       
  1654 "]#	c #6F8DE2",
       
  1655 "^#	c #7390E4",
       
  1656 "/#	c #7390E3",
       
  1657 "(#	c #7491E4",
       
  1658 "_#	c #7693E5",
       
  1659 ":#	c #7895E6",
       
  1660 "<#	c #7896E6",
       
  1661 "[#	c #7997E7",
       
  1662 "}#	c #7B97E7",
       
  1663 "|#	c #7B98E8",
       
  1664 "1#	c #7C98E8",
       
  1665 "2#	c #7E9BE9",
       
  1666 "3#	c #809CEA",
       
  1667 "4#	c #819CEA",
       
  1668 "5#	c #839DE9",
       
  1669 "6#	c #365FD0",
       
  1670 "7#	c #3660D0",
       
  1671 "8#	c #3961CF",
       
  1672 "9#	c #3B63CF",
       
  1673 "0#	c #3D64D0",
       
  1674 "a#	c #4067D0",
       
  1675 "b#	c #4469D2",
       
  1676 "c#	c #466BD3",
       
  1677 "d#	c #496ED5",
       
  1678 "e#	c #4C71D6",
       
  1679 "f#	c #4E72D8",
       
  1680 "g#	c #5074D9",
       
  1681 "h#	c #5376DB",
       
  1682 "i#	c #5578DB",
       
  1683 "j#	c #587ADC",
       
  1684 "k#	c #5B7CDC",
       
  1685 "l#	c #5D7EDD",
       
  1686 "m#	c #5F80DD",
       
  1687 "n#	c #6081DE",
       
  1688 "o#	c #6383DE",
       
  1689 "p#	c #6686DF",
       
  1690 "q#	c #6887E0",
       
  1691 "r#	c #6988E0",
       
  1692 "s#	c #6B89E1",
       
  1693 "t#	c #6C8AE0",
       
  1694 "u#	c #6E8CE1",
       
  1695 "v#	c #708EE2",
       
  1696 "w#	c #718FE2",
       
  1697 "x#	c #7290E3",
       
  1698 "y#	c #7391E2",
       
  1699 "z#	c #7492E1",
       
  1700 "A#	c #7592E2",
       
  1701 "B#	c #7691E3",
       
  1702 "C#	c #7591E3",
       
  1703 "D#	c #7692E3",
       
  1704 "E#	c #7693E3",
       
  1705 "F#	c #7793E4",
       
  1706 "G#	c #7893E4",
       
  1707 "H#	c #7994E5",
       
  1708 "I#	c #7D97E8",
       
  1709 "J#	c #7E98E8",
       
  1710 "K#	c #7D98E8",
       
  1711 "L#	c #7D99E9",
       
  1712 "M#	c #7D9BEA",
       
  1713 "N#	c #7D9CEA",
       
  1714 "O#	c #7E99E8",
       
  1715 "P#	c #7D9AEA",
       
  1716 "Q#	c #7C9BEA",
       
  1717 "R#	c #7C9CEA",
       
  1718 "S#	c #355FCF",
       
  1719 "T#	c #3860D0",
       
  1720 "U#	c #3A62D0",
       
  1721 "V#	c #3C64D1",
       
  1722 "W#	c #4167D1",
       
  1723 "X#	c #4369D3",
       
  1724 "Y#	c #466BD4",
       
  1725 "Z#	c #486DD5",
       
  1726 "`#	c #4A6ED7",
       
  1727 " $	c #4C70D8",
       
  1728 ".$	c #5478D9",
       
  1729 "+$	c #577BDA",
       
  1730 "@$	c #597DDB",
       
  1731 "#$	c #5B7EDB",
       
  1732 "$$	c #5D7FDC",
       
  1733 "%$	c #6182DE",
       
  1734 "&$	c #6284DE",
       
  1735 "*$	c #6485DF",
       
  1736 "=$	c #6586DF",
       
  1737 "-$	c #6787DF",
       
  1738 ";$	c #6888DF",
       
  1739 ">$	c #6A8ADF",
       
  1740 ",$	c #6C8BE0",
       
  1741 "'$	c #6D8CE0",
       
  1742 ")$	c #6E8DE1",
       
  1743 "!$	c #6F8DE1",
       
  1744 "~$	c #708EE1",
       
  1745 "{$	c #718FE0",
       
  1746 "]$	c #728FE1",
       
  1747 "^$	c #7390E0",
       
  1748 "/$	c #738FE0",
       
  1749 "($	c #7490E1",
       
  1750 "_$	c #7590E1",
       
  1751 ":$	c #7591E1",
       
  1752 "<$	c #7592E1",
       
  1753 "[$	c #7692E2",
       
  1754 "}$	c #7794E2",
       
  1755 "|$	c #7894E3",
       
  1756 "1$	c #7996E3",
       
  1757 "2$	c #7A96E5",
       
  1758 "3$	c #7B98E6",
       
  1759 "4$	c #7B9AE8",
       
  1760 "5$	c #7C99E8",
       
  1761 "6$	c #7C96E5",
       
  1762 "7$	c #7D97E7",
       
  1763 "8$	c #7C99E9",
       
  1764 "9$	c #7B9AE9",
       
  1765 "0$	c #7B9AEA",
       
  1766 "a$	c #5B6DCF",
       
  1767 "b$	c #305EC8",
       
  1768 "c$	c #335ECE",
       
  1769 "d$	c #305ECA",
       
  1770 "e$	c #345FCF",
       
  1771 "f$	c #3761D0",
       
  1772 "g$	c #3A62D1",
       
  1773 "h$	c #3C64D2",
       
  1774 "i$	c #4066D3",
       
  1775 "j$	c #466BD5",
       
  1776 "k$	c #486ED6",
       
  1777 "l$	c #4A6ED6",
       
  1778 "m$	c #4D71D8",
       
  1779 "n$	c #4F72D9",
       
  1780 "o$	c #5073D9",
       
  1781 "p$	c #4F72D8",
       
  1782 "q$	c #5074D8",
       
  1783 "r$	c #5276D9",
       
  1784 "s$	c #587ADA",
       
  1785 "t$	c #5B7CDB",
       
  1786 "u$	c #5D7EDC",
       
  1787 "v$	c #5F7FDD",
       
  1788 "w$	c #6081DC",
       
  1789 "x$	c #6182DD",
       
  1790 "y$	c #6283DD",
       
  1791 "z$	c #6484DE",
       
  1792 "A$	c #6585DD",
       
  1793 "B$	c #6787DE",
       
  1794 "C$	c #6988DF",
       
  1795 "D$	c #6A89DE",
       
  1796 "E$	c #6C8ADF",
       
  1797 "F$	c #6D8BDF",
       
  1798 "G$	c #6E8CE0",
       
  1799 "H$	c #6F8DE0",
       
  1800 "I$	c #718EE0",
       
  1801 "J$	c #728FDF",
       
  1802 "K$	c #728FDE",
       
  1803 "L$	c #7290E0",
       
  1804 "M$	c #7190E0",
       
  1805 "N$	c #7291E0",
       
  1806 "O$	c #7191E0",
       
  1807 "P$	c #7392E1",
       
  1808 "Q$	c #7493E1",
       
  1809 "R$	c #7594E1",
       
  1810 "S$	c #7594E2",
       
  1811 "T$	c #7694E2",
       
  1812 "U$	c #7695E2",
       
  1813 "V$	c #7A96E4",
       
  1814 "W$	c #7895E2",
       
  1815 "X$	c #7A96E2",
       
  1816 "Y$	c #7A96E3",
       
  1817 "Z$	c #7B96E3",
       
  1818 "`$	c #7996E1",
       
  1819 " %	c #7C96E4",
       
  1820 ".%	c #305EC9",
       
  1821 "+%	c #315ECC",
       
  1822 "@%	c #325ECE",
       
  1823 "#%	c #3760D0",
       
  1824 "$%	c #3962D1",
       
  1825 "%%	c #3E66D3",
       
  1826 "&%	c #4268D4",
       
  1827 "*%	c #446BD5",
       
  1828 "=%	c #476CD6",
       
  1829 "-%	c #496ED7",
       
  1830 ";%	c #4B6FD7",
       
  1831 ">%	c #4C70D7",
       
  1832 ",%	c #4E71D7",
       
  1833 "'%	c #5074D7",
       
  1834 ")%	c #5276D8",
       
  1835 "!%	c #5376D8",
       
  1836 "~%	c #5779DA",
       
  1837 "{%	c #597ADA",
       
  1838 "]%	c #5A7BDB",
       
  1839 "^%	c #5B7CDA",
       
  1840 "/%	c #5D7EDB",
       
  1841 "(%	c #5E7FDB",
       
  1842 "_%	c #6182DB",
       
  1843 ":%	c #6384DC",
       
  1844 "<%	c #6586DD",
       
  1845 "[%	c #6686DC",
       
  1846 "}%	c #6887DD",
       
  1847 "|%	c #6988DD",
       
  1848 "1%	c #6A8ADE",
       
  1849 "2%	c #6B8BDE",
       
  1850 "3%	c #6C8CDE",
       
  1851 "4%	c #6E8DDF",
       
  1852 "5%	c #6E8CDF",
       
  1853 "6%	c #6D8DDF",
       
  1854 "7%	c #6C8BDF",
       
  1855 "8%	c #6F8DDF",
       
  1856 "9%	c #718FDF",
       
  1857 "0%	c #7290DF",
       
  1858 "a%	c #7391E0",
       
  1859 "b%	c #7491E0",
       
  1860 "c%	c #7292E1",
       
  1861 "d%	c #3959C5",
       
  1862 "e%	c #345BC5",
       
  1863 "f%	c #315EC8",
       
  1864 "g%	c #355BC5",
       
  1865 "h%	c #325EC8",
       
  1866 "i%	c #315ECB",
       
  1867 "j%	c #345DCC",
       
  1868 "k%	c #335ECD",
       
  1869 "l%	c #345ECD",
       
  1870 "m%	c #355FCE",
       
  1871 "n%	c #3862D0",
       
  1872 "o%	c #3E66D2",
       
  1873 "p%	c #456BD5",
       
  1874 "q%	c #476CD5",
       
  1875 "r%	c #4B6ED7",
       
  1876 "s%	c #4B6FD6",
       
  1877 "t%	c #4B6FD5",
       
  1878 "u%	c #4D71D6",
       
  1879 "v%	c #5073D7",
       
  1880 "w%	c #5174D7",
       
  1881 "x%	c #5275D8",
       
  1882 "y%	c #5577D8",
       
  1883 "z%	c #5678D8",
       
  1884 "A%	c #5779D9",
       
  1885 "B%	c #587AD8",
       
  1886 "C%	c #597CD9",
       
  1887 "D%	c #5B7DD9",
       
  1888 "E%	c #5D7FDA",
       
  1889 "F%	c #5F80DB",
       
  1890 "G%	c #6182DC",
       
  1891 "H%	c #6484DC",
       
  1892 "I%	c #6585DC",
       
  1893 "J%	c #6787DD",
       
  1894 "K%	c #6988DE",
       
  1895 "L%	c #6B8ADE",
       
  1896 "M%	c #6B8ADF",
       
  1897 "N%	c #6989DE",
       
  1898 "O%	c #6B89DE",
       
  1899 "P%	c #6E8BDF",
       
  1900 "Q%	c #708CDE",
       
  1901 "R%	c #708DDF",
       
  1902 "S%	c #708FDF",
       
  1903 "T%	c #728EDF",
       
  1904 "U%	c #6F8EDD",
       
  1905 "V%	c #728EDD",
       
  1906 "W%	c #7390DF",
       
  1907 "X%	c #7490DF",
       
  1908 "Y%	c #335DC8",
       
  1909 "Z%	c #3759C5",
       
  1910 "`%	c #3859C5",
       
  1911 " &	c #335EC8",
       
  1912 ".&	c #325DCA",
       
  1913 "+&	c #345CCB",
       
  1914 "@&	c #335DCC",
       
  1915 "#&	c #345DCD",
       
  1916 "$&	c #355FCD",
       
  1917 "%&	c #3861D0",
       
  1918 "&&	c #3B64D1",
       
  1919 "*&	c #3E65D2",
       
  1920 "=&	c #4168D3",
       
  1921 "-&	c #456AD5",
       
  1922 ";&	c #4B6ED5",
       
  1923 ">&	c #4C6FD4",
       
  1924 ",&	c #4D70D5",
       
  1925 "'&	c #4F72D6",
       
  1926 ")&	c #5173D6",
       
  1927 "!&	c #5375D7",
       
  1928 "~&	c #5476D8",
       
  1929 "{&	c #5577D7",
       
  1930 "]&	c #5477D8",
       
  1931 "^&	c #5677D8",
       
  1932 "/&	c #5879D9",
       
  1933 "(&	c #597AD9",
       
  1934 "_&	c #5C7DDA",
       
  1935 ":&	c #6080DC",
       
  1936 "<&	c #6080DB",
       
  1937 "[&	c #6181DC",
       
  1938 "}&	c #6282DC",
       
  1939 "|&	c #6383DD",
       
  1940 "1&	c #6484DD",
       
  1941 "2&	c #6686DE",
       
  1942 "3&	c #6685DE",
       
  1943 "4&	c #6786DE",
       
  1944 "5&	c #6687DE",
       
  1945 "6&	c #6887DE",
       
  1946 "7&	c #6987DE",
       
  1947 "8&	c #6788DF",
       
  1948 "9&	c #6785DF",
       
  1949 "0&	c #6B89DF",
       
  1950 "a&	c #6C89DF",
       
  1951 "b&	c #6F8DDD",
       
  1952 "c&	c #6D8CDE",
       
  1953 "d&	c #445BBB",
       
  1954 "e&	c #3759BE",
       
  1955 "f&	c #375AC6",
       
  1956 "g&	c #355CC8",
       
  1957 "h&	c #345CCA",
       
  1958 "i&	c #355ECC",
       
  1959 "j&	c #365FCD",
       
  1960 "k&	c #3761CE",
       
  1961 "l&	c #3A63D0",
       
  1962 "m&	c #3D65D1",
       
  1963 "n&	c #466AD4",
       
  1964 "o&	c #476BD4",
       
  1965 "p&	c #486CD3",
       
  1966 "q&	c #4A6ED4",
       
  1967 "r&	c #4B6ED4",
       
  1968 "s&	c #4E71D6",
       
  1969 "t&	c #4F71D5",
       
  1970 "u&	c #5072D6",
       
  1971 "v&	c #5274D7",
       
  1972 "w&	c #5273D7",
       
  1973 "x&	c #5274D6",
       
  1974 "y&	c #5476D7",
       
  1975 "z&	c #5779D8",
       
  1976 "A&	c #587AD9",
       
  1977 "B&	c #5A7CDA",
       
  1978 "C&	c #5C7DDB",
       
  1979 "D&	c #5D7EDA",
       
  1980 "E&	c #6081DA",
       
  1981 "F&	c #6181DB",
       
  1982 "G&	c #6283DC",
       
  1983 "H&	c #6483DD",
       
  1984 "I&	c #6483DE",
       
  1985 "J&	c #6585DE",
       
  1986 "K&	c #6786DF",
       
  1987 "L&	c #6886DE",
       
  1988 "M&	c #6887DF",
       
  1989 "N&	c #6987DF",
       
  1990 "O&	c #6A88DF",
       
  1991 "P&	c #6786E0",
       
  1992 "Q&	c #6A86DE",
       
  1993 "R&	c #6B89E0",
       
  1994 "S&	c #365BC8",
       
  1995 "T&	c #365CC8",
       
  1996 "U&	c #375DCA",
       
  1997 "V&	c #375FCB",
       
  1998 "W&	c #3860CD",
       
  1999 "X&	c #3C63D0",
       
  2000 "Y&	c #4167D2",
       
  2001 "Z&	c #4268D2",
       
  2002 "`&	c #4368D2",
       
  2003 " *	c #4367D2",
       
  2004 ".*	c #4568D2",
       
  2005 "+*	c #466AD2",
       
  2006 "@*	c #496CD3",
       
  2007 "#*	c #4A6DD3",
       
  2008 "$*	c #4A6DD4",
       
  2009 "%*	c #4D70D4",
       
  2010 "&*	c #4F72D5",
       
  2011 "**	c #4C70D4",
       
  2012 "=*	c #4E72D5",
       
  2013 "-*	c #5173D5",
       
  2014 ";*	c #5375D6",
       
  2015 ">*	c #597BDA",
       
  2016 ",*	c #5B7DDA",
       
  2017 "'*	c #5C7EDB",
       
  2018 ")*	c #5D7FDB",
       
  2019 "!*	c #5E80DB",
       
  2020 "~*	c #5E81DA",
       
  2021 "{*	c #5F81DB",
       
  2022 "]*	c #5F82DB",
       
  2023 "^*	c #6384DD",
       
  2024 "/*	c #6384DE",
       
  2025 "(*	c #6585DF",
       
  2026 "_*	c #6486E0",
       
  2027 ":*	c #6583DD",
       
  2028 "<*	c #6386E0",
       
  2029 "[*	c #6686E0",
       
  2030 "}*	c #6B86DD",
       
  2031 "|*	c #6D86DD",
       
  2032 "1*	c #6086E0",
       
  2033 "2*	c #5573CD",
       
  2034 "3*	c #3959C3",
       
  2035 "4*	c #3959C4",
       
  2036 "5*	c #3759C0",
       
  2037 "6*	c #375BC7",
       
  2038 "7*	c #365CC7",
       
  2039 "8*	c #395FCC",
       
  2040 "9*	c #3B62CE",
       
  2041 "0*	c #3E64D0",
       
  2042 "a*	c #4066D1",
       
  2043 "b*	c #4166D1",
       
  2044 "c*	c #4064CF",
       
  2045 "d*	c #4065CF",
       
  2046 "e*	c #4266D0",
       
  2047 "f*	c #4468D1",
       
  2048 "g*	c #4569D1",
       
  2049 "h*	c #476BD2",
       
  2050 "i*	c #466AD1",
       
  2051 "j*	c #476AD2",
       
  2052 "k*	c #456AD1",
       
  2053 "l*	c #496DD2",
       
  2054 "m*	c #4A6FD3",
       
  2055 "n*	c #496ED2",
       
  2056 "o*	c #4B70D4",
       
  2057 "p*	c #4D71D4",
       
  2058 "q*	c #4E72D4",
       
  2059 "r*	c #5073D4",
       
  2060 "s*	c #5174D5",
       
  2061 "t*	c #5175D5",
       
  2062 "u*	c #5276D6",
       
  2063 "v*	c #5377D6",
       
  2064 "w*	c #5478D7",
       
  2065 "x*	c #5579D7",
       
  2066 "y*	c #567AD8",
       
  2067 "z*	c #577BD9",
       
  2068 "A*	c #597CD8",
       
  2069 "B*	c #5A7DD9",
       
  2070 "C*	c #5A7ED9",
       
  2071 "D*	c #5B7FDA",
       
  2072 "E*	c #5C80DA",
       
  2073 "F*	c #5D80DA",
       
  2074 "G*	c #5E81DB",
       
  2075 "H*	c #5D80DB",
       
  2076 "I*	c #6082DC",
       
  2077 "J*	c #6183DD",
       
  2078 "K*	c #6183DE",
       
  2079 "L*	c #6082DB",
       
  2080 "M*	c #6282DE",
       
  2081 "N*	c #6682DE",
       
  2082 "O*	c #6583DE",
       
  2083 "P*	c #3759BF",
       
  2084 "Q*	c #375AC2",
       
  2085 "R*	c #375AC1",
       
  2086 "S*	c #375AC4",
       
  2087 "T*	c #395DCA",
       
  2088 "U*	c #3A5ECA",
       
  2089 "V*	c #3C60CC",
       
  2090 "W*	c #3D61CD",
       
  2091 "X*	c #3D61CC",
       
  2092 "Y*	c #3C61CD",
       
  2093 "Z*	c #3E62CD",
       
  2094 "`*	c #3F64CE",
       
  2095 " =	c #4266CF",
       
  2096 ".=	c #4468D0",
       
  2097 "+=	c #4267CF",
       
  2098 "@=	c #4166CE",
       
  2099 "#=	c #4065CE",
       
  2100 "$=	c #4166CD",
       
  2101 "%=	c #4267CE",
       
  2102 "&=	c #456AD0",
       
  2103 "*=	c #4368CE",
       
  2104 "==	c #4468CF",
       
  2105 "-=	c #4569D0",
       
  2106 ";=	c #486BD1",
       
  2107 ">=	c #4B6FD3",
       
  2108 ",=	c #4C70D3",
       
  2109 "'=	c #4F73D4",
       
  2110 ")=	c #5275D5",
       
  2111 "!=	c #5477D6",
       
  2112 "~=	c #577BD7",
       
  2113 "{=	c #587CD8",
       
  2114 "]=	c #577CD8",
       
  2115 "^=	c #597DD9",
       
  2116 "/=	c #5A7DDA",
       
  2117 "(=	c #597DDA",
       
  2118 "_=	c #587CDA",
       
  2119 ":=	c #5A7EDA",
       
  2120 "<=	c #567BD8",
       
  2121 "[=	c #557AD9",
       
  2122 "}=	c #567BD9",
       
  2123 "|=	c #577CD9",
       
  2124 "1=	c #587DD9",
       
  2125 "2=	c #587ED9",
       
  2126 "3=	c #577ED8",
       
  2127 "4=	c #587DD8",
       
  2128 "5=	c #587ED8",
       
  2129 "6=	c #567ED7",
       
  2130 "7=	c #526ABD",
       
  2131 "8=	c #3759C1",
       
  2132 "9=	c #385BC7",
       
  2133 "0=	c #395CC8",
       
  2134 "a=	c #3B5DC9",
       
  2135 "b=	c #3B5ECA",
       
  2136 "c=	c #3A5FCA",
       
  2137 "d=	c #3B60CC",
       
  2138 "e=	c #3C61CC",
       
  2139 "f=	c #3D62CD",
       
  2140 "g=	c #3E63CD",
       
  2141 "h=	c #3C61CB",
       
  2142 "i=	c #3C61CA",
       
  2143 "j=	c #3D62CB",
       
  2144 "k=	c #3F64CC",
       
  2145 "l=	c #4065CD",
       
  2146 "m=	c #4669D0",
       
  2147 "n=	c #476AD0",
       
  2148 "o=	c #496BD1",
       
  2149 "p=	c #4A6DD2",
       
  2150 "q=	c #4B6ED2",
       
  2151 "r=	c #4D71D3",
       
  2152 "s=	c #4E73D4",
       
  2153 "t=	c #4F74D4",
       
  2154 "u=	c #5075D5",
       
  2155 "v=	c #5276D5",
       
  2156 "w=	c #5377D7",
       
  2157 "x=	c #5278D7",
       
  2158 "y=	c #5277D6",
       
  2159 "z=	c #5378D7",
       
  2160 "A=	c #5379D8",
       
  2161 "B=	c #5379D9",
       
  2162 "C=	c #5278D8",
       
  2163 "D=	c #5178D7",
       
  2164 "E=	c #3355C0",
       
  2165 "F=	c #3556C1",
       
  2166 "G=	c #395AC6",
       
  2167 "H=	c #385AC7",
       
  2168 "I=	c #395BC7",
       
  2169 "J=	c #395EC9",
       
  2170 "K=	c #395FCA",
       
  2171 "L=	c #3B60CA",
       
  2172 "M=	c #3B60CB",
       
  2173 "N=	c #375DC7",
       
  2174 "O=	c #385EC8",
       
  2175 "P=	c #395FC9",
       
  2176 "Q=	c #3A60CA",
       
  2177 "R=	c #3D63CC",
       
  2178 "S=	c #4367CF",
       
  2179 "T=	c #476BD1",
       
  2180 "U=	c #4A6ED2",
       
  2181 "V=	c #4B6FD2",
       
  2182 "W=	c #4C6FD2",
       
  2183 "X=	c #4D70D1",
       
  2184 "Y=	c #4E71D2",
       
  2185 "Z=	c #4E72D2",
       
  2186 "`=	c #4E74D4",
       
  2187 " -	c #4E75D5",
       
  2188 ".-	c #4E75D4",
       
  2189 "+-	c #4F75D3",
       
  2190 "@-	c #5075D2",
       
  2191 "#-	c #5075D3",
       
  2192 "$-	c #5177D7",
       
  2193 "%-	c #5178D8",
       
  2194 "&-	c #4F75D5",
       
  2195 "*-	c #5076D5",
       
  2196 "=-	c #4F76D6",
       
  2197 "--	c #5279D9",
       
  2198 ";-	c #3C52B1",
       
  2199 ">-	c #3656C3",
       
  2200 ",-	c #3757C5",
       
  2201 "'-	c #3758C6",
       
  2202 ")-	c #3759C6",
       
  2203 "!-	c #375BC6",
       
  2204 "~-	c #385CC7",
       
  2205 "{-	c #385DC8",
       
  2206 "]-	c #365CC6",
       
  2207 "^-	c #355BC6",
       
  2208 "/-	c #355CC6",
       
  2209 "(-	c #365DC7",
       
  2210 "_-	c #375EC8",
       
  2211 ":-	c #375CC6",
       
  2212 "<-	c #385EC6",
       
  2213 "[-	c #3A5FC7",
       
  2214 "}-	c #3C60C8",
       
  2215 "|-	c #3D61C9",
       
  2216 "1-	c #3E62CA",
       
  2217 "2-	c #4063CC",
       
  2218 "3-	c #4165CE",
       
  2219 "4-	c #4268D0",
       
  2220 "5-	c #4269D1",
       
  2221 "6-	c #436AD2",
       
  2222 "7-	c #446AD2",
       
  2223 "8-	c #456BD2",
       
  2224 "9-	c #496CD1",
       
  2225 "0-	c #4C6CD0",
       
  2226 "a-	c #4D6CCF",
       
  2227 "b-	c #4E6DD0",
       
  2228 "c-	c #4F6ECF",
       
  2229 "d-	c #4E6FCF",
       
  2230 "e-	c #4C70CF",
       
  2231 "f-	c #4A71D0",
       
  2232 "g-	c #4F6FCF",
       
  2233 "h-	c #4B71D0",
       
  2234 "i-	c #4A72D1",
       
  2235 "j-	c #4B73D4",
       
  2236 "k-	c #4F70D0",
       
  2237 "l-	c #4C73D3",
       
  2238 "m-	c #4C73D6",
       
  2239 "n-	c #4B72D2",
       
  2240 "o-	c #4B71D1",
       
  2241 "p-	c #4C73D7",
       
  2242 "q-	c #3354C0",
       
  2243 "r-	c #3152BE",
       
  2244 "s-	c #3052BE",
       
  2245 "t-	c #3051BF",
       
  2246 "u-	c #2E4FBF",
       
  2247 "v-	c #2E4FBE",
       
  2248 "w-	c #2E50BF",
       
  2249 "x-	c #2F50BF",
       
  2250 "y-	c #3156C4",
       
  2251 "z-	c #2F56C5",
       
  2252 "A-	c #2E57C5",
       
  2253 "B-	c #2F57C5",
       
  2254 "C-	c #3057C6",
       
  2255 "D-	c #3258C6",
       
  2256 "E-	c #3459C7",
       
  2257 "F-	c #365AC7",
       
  2258 "G-	c #385BC8",
       
  2259 "H-	c #3B5DCA",
       
  2260 "I-	c #3B5DCB",
       
  2261 "J-	c #3C5ECC",
       
  2262 "K-	c #3C60CD",
       
  2263 "L-	c #3C62CE",
       
  2264 "M-	c #3D65D0",
       
  2265 "N-	c #3D66D1",
       
  2266 "O-	c #4166D2",
       
  2267 "P-	c #4667D2",
       
  2268 "Q-	c #4A67D1",
       
  2269 "R-	c #4C68D0",
       
  2270 "S-	c #4C69CF",
       
  2271 "T-	c #4D6BCE",
       
  2272 "U-	c #4E6DCD",
       
  2273 "V-	c #4E6ECE",
       
  2274 "W-	c #4E6DCE",
       
  2275 "X-	c #4970D0",
       
  2276 "Y-	c #4770D0",
       
  2277 "Z-	c #4B6BCE",
       
  2278 "`-	c #4A6CCE",
       
  2279 " ;	c #496DCF",
       
  2280 ".;	c #476FD0",
       
  2281 "+;	c #4870D0",
       
  2282 "@;	c #486DCF",
       
  2283 "#;	c #242F79",
       
  2284 "$;	c #2F41AC",
       
  2285 "%;	c #2040B8",
       
  2286 "&;	c #2041B8",
       
  2287 "*;	c #2243B3",
       
  2288 "=;	c #2243B8",
       
  2289 "-;	c #2343B8",
       
  2290 ";;	c #2444B8",
       
  2291 ">;	c #2445B8",
       
  2292 ",;	c #2445B6",
       
  2293 "';	c #2445B7",
       
  2294 ");	c #2444B9",
       
  2295 "!;	c #2949BE",
       
  2296 "~;	c #2649BF",
       
  2297 "{;	c #234BBF",
       
  2298 "];	c #224CBF",
       
  2299 "^;	c #224AC0",
       
  2300 "/;	c #244CC0",
       
  2301 "(;	c #254DC0",
       
  2302 "_;	c #254DC1",
       
  2303 ":;	c #264DC2",
       
  2304 "<;	c #274EC3",
       
  2305 "[;	c #274CC3",
       
  2306 "};	c #274DC4",
       
  2307 "|;	c #254DC5",
       
  2308 "1;	c #214EC5",
       
  2309 "2;	c #204FC6",
       
  2310 "3;	c #1F50C8",
       
  2311 "4;	c #2151C9",
       
  2312 "5;	c #2B53C8",
       
  2313 "6;	c #3154C7",
       
  2314 "7;	c #3255C6",
       
  2315 "8;	c #2F57C7",
       
  2316 "9;	c #2C58C9",
       
  2317 "0;	c #2D59CA",
       
  2318 "a;	c #2D58C9",
       
  2319 "b;	c #2E5BCC",
       
  2320 "c;	c #325ECC",
       
  2321 "d;	c #325ECB",
       
  2322 "e;	c #1F40B1",
       
  2323 "f;	c #1F40B2",
       
  2324 "g;	c #1F40B3",
       
  2325 "h;	c #2A44BD",
       
  2326 "i;	c #2845BE",
       
  2327 "j;	c #2745BE",
       
  2328 "k;	c #2646BF",
       
  2329 "l;	c #2546BE",
       
  2330 "m;	c #2347BF",
       
  2331 "n;	c #2147BF",
       
  2332 "o;	c #2048C0",
       
  2333 "p;	c #1D48C0",
       
  2334 "q;	c #1C48C0",
       
  2335 "r;	c #1B47C0",
       
  2336 "s;	c #1C48BF",
       
  2337 "t;	c #1E49BE",
       
  2338 "u;	c #214ABD",
       
  2339 "v;	c #244CBD",
       
  2340 "w;	c #264DBE",
       
  2341 "x;	c #254EC0",
       
  2342 "y;	c #214FC2",
       
  2343 "z;	c #1B51C5",
       
  2344 "A;	c #1C51C7",
       
  2345 "B;	c #2250C8",
       
  2346 "C;	c #2A52C8",
       
  2347 "D;	c #3254C6",
       
  2348 "E;	c #3355C5",
       
  2349 "F;	c #3154C8",
       
  2350 "G;	c #3355C6",
       
  2351 "H;	c #2F57C8",
       
  2352 "I;	c #2E58C9",
       
  2353 "J;	c #2E59C9",
       
  2354 "K;	c #3059C9",
       
  2355 "L;	c #2040B6",
       
  2356 "M;	c #2743BB",
       
  2357 "N;	c #2844BC",
       
  2358 "O;	c #2743BD",
       
  2359 "P;	c #2844BE",
       
  2360 "Q;	c #2844BD",
       
  2361 "R;	c #2346BE",
       
  2362 "S;	c #2047BF",
       
  2363 "T;	c #1E48C0",
       
  2364 "U;	c #1D47C0",
       
  2365 "V;	c #1D49BF",
       
  2366 "W;	c #1F49BF",
       
  2367 "X;	c #204ABE",
       
  2368 "Y;	c #254DBF",
       
  2369 "Z;	c #234EC0",
       
  2370 "`;	c #2050C1",
       
  2371 " >	c #1C51C3",
       
  2372 ".>	c #1F51C6",
       
  2373 "+>	c #2651C8",
       
  2374 "@>	c #2D53C7",
       
  2375 "#>	c #3155C6",
       
  2376 "$>	c #3155C7",
       
  2377 "%>	c #3355C7",
       
  2378 "&>	c #3254C7",
       
  2379 "*>	c #1E40B1",
       
  2380 "=>	c #2141B8",
       
  2381 "->	c #2442B9",
       
  2382 ";>	c #2744BB",
       
  2383 ">>	c #2945BB",
       
  2384 ",>	c #2A45BB",
       
  2385 "'>	c #2944BA",
       
  2386 ")>	c #2745BB",
       
  2387 "!>	c #2545BC",
       
  2388 "~>	c #2246BD",
       
  2389 "{>	c #2047BE",
       
  2390 "]>	c #1F47BD",
       
  2391 "^>	c #1D48BE",
       
  2392 "/>	c #1E49C0",
       
  2393 "(>	c #1F4AC0",
       
  2394 "_>	c #214BBF",
       
  2395 ":>	c #244CBE",
       
  2396 "<>	c #254DBE",
       
  2397 "[>	c #244DBE",
       
  2398 "}>	c #224FBF",
       
  2399 "|>	c #2051C1",
       
  2400 "1>	c #2151C3",
       
  2401 "2>	c #2252C5",
       
  2402 "3>	c #2151C1",
       
  2403 "4>	c #2851C6",
       
  2404 "5>	c #2A50C6",
       
  2405 "6>	c #2E54C6",
       
  2406 "7>	c #1F51C2",
       
  2407 "8>	c #1D52C5",
       
  2408 "9>	c #2651C9",
       
  2409 "0>	c #2950C7",
       
  2410 "a>	c #2D40A5",
       
  2411 "b>	c #2040B0",
       
  2412 "c>	c #1F40B0",
       
  2413 "d>	c #223CAE",
       
  2414 "e>	c #233CAE",
       
  2415 "f>	c #253BAC",
       
  2416 "g>	c #253BAD",
       
  2417 "h>	c #233CB0",
       
  2418 "i>	c #213EB2",
       
  2419 "j>	c #1F3FB4",
       
  2420 "k>	c #1E40B6",
       
  2421 "l>	c #1F3FB7",
       
  2422 "m>	c #1E3EB8",
       
  2423 "n>	c #1F3FB8",
       
  2424 "o>	c #2040B7",
       
  2425 "p>	c #2141B6",
       
  2426 "q>	c #2140B7",
       
  2427 "r>	c #2241B6",
       
  2428 "s>	c #2342B5",
       
  2429 "t>	c #2442B6",
       
  2430 "u>	c #2543B5",
       
  2431 "v>	c #2643B4",
       
  2432 "w>	c #2544B6",
       
  2433 "x>	c #2346B8",
       
  2434 "y>	c #2247B9",
       
  2435 "z>	c #2048BC",
       
  2436 "A>	c #1F48BF",
       
  2437 "B>	c #2049C0",
       
  2438 "C>	c #214AC0",
       
  2439 "D>	c #224BBF",
       
  2440 "E>	c #234CBE",
       
  2441 "F>	c #244DBF",
       
  2442 "G>	c #234CBF",
       
  2443 "H>	c #264DC0",
       
  2444 "I>	c #274EBF",
       
  2445 "J>	c #264DBF",
       
  2446 "K>	c #254EBF",
       
  2447 "L>	c #2050C0",
       
  2448 "M>	c #1F51C1",
       
  2449 "N>	c #1E42A4",
       
  2450 "O>	c #263BA6",
       
  2451 "P>	c #253BA7",
       
  2452 "Q>	c #253CA7",
       
  2453 "R>	c #1E41A5",
       
  2454 "S>	c #1F40AF",
       
  2455 "T>	c #273AAC",
       
  2456 "U>	c #1E40B0",
       
  2457 "V>	c #1F40B5",
       
  2458 "W>	c #1F40B6",
       
  2459 "X>	c #1F40B8",
       
  2460 "Y>	c #1E40B8",
       
  2461 "Z>	c #1F3EB8",
       
  2462 "`>	c #203FB7",
       
  2463 " ,	c #2240B6",
       
  2464 ".,	c #2341B7",
       
  2465 "+,	c #2345B9",
       
  2466 "@,	c #2147BB",
       
  2467 "#,	c #2148BA",
       
  2468 "$,	c #2049BB",
       
  2469 "%,	c #2049BD",
       
  2470 "&,	c #2049BF",
       
  2471 "*,	c #224BBE",
       
  2472 "=,	c #244DBD",
       
  2473 "-,	c #244CBF",
       
  2474 ";,	c #182969",
       
  2475 ">,	c #273BAD",
       
  2476 ",,	c #2739AB",
       
  2477 "',	c #263AAC",
       
  2478 "),	c #243CAE",
       
  2479 "!,	c #233DAE",
       
  2480 "~,	c #213EAF",
       
  2481 "{,	c #1F3FB0",
       
  2482 "],	c #2040B4",
       
  2483 "^,	c #1F3FB6",
       
  2484 "/,	c #1E3EB7",
       
  2485 "(,	c #2240B7",
       
  2486 "_,	c #2341B6",
       
  2487 ":,	c #2543B4",
       
  2488 "<,	c #2644B3",
       
  2489 "[,	c #2544B5",
       
  2490 "},	c #2545B5",
       
  2491 "|,	c #2547B6",
       
  2492 "1,	c #2548B7",
       
  2493 "2,	c #2349BA",
       
  2494 "3,	c #1F49BE",
       
  2495 "4,	c #2149BD",
       
  2496 "5,	c #2049BE",
       
  2497 "6,	c #214BBE",
       
  2498 "7,	c #2249BE",
       
  2499 "8,	c #234CBD",
       
  2500 "9,	c #2149BE",
       
  2501 "0,	c #1E49BF",
       
  2502 "a,	c #253BA9",
       
  2503 "b,	c #253BAB",
       
  2504 "c,	c #263AAB",
       
  2505 "d,	c #213DAF",
       
  2506 "e,	c #203EAF",
       
  2507 "f,	c #1D40AF",
       
  2508 "g,	c #1D40B0",
       
  2509 "h,	c #1E40B4",
       
  2510 "i,	c #2241B7",
       
  2511 "j,	c #2643B6",
       
  2512 "k,	c #2744B5",
       
  2513 "l,	c #2643B5",
       
  2514 "m,	c #2346B6",
       
  2515 "n,	c #2147B7",
       
  2516 "o,	c #2644B6",
       
  2517 "p,	c #2247B7",
       
  2518 "q,	c #2248B8",
       
  2519 "r,	c #2647B7",
       
  2520 "s,	c #2549B7",
       
  2521 "t,	c #2645B7",
       
  2522 "u,	c #2148B8",
       
  2523 "v,	c #2847B6",
       
  2524 "w,	c #2549B6",
       
  2525 "x,	c #2849B6",
       
  2526 "y,	c #2049B7",
       
  2527 "z,	c #2A49B5",
       
  2528 "A,	c #243BA4",
       
  2529 "B,	c #253BA5",
       
  2530 "C,	c #253BA6",
       
  2531 "D,	c #263AA7",
       
  2532 "E,	c #263AA8",
       
  2533 "F,	c #2739AA",
       
  2534 "G,	c #243CAD",
       
  2535 "H,	c #223DAE",
       
  2536 "I,	c #1F3EAF",
       
  2537 "J,	c #1E3FB0",
       
  2538 "K,	c #1D40B1",
       
  2539 "L,	c #1E3FB1",
       
  2540 "M,	c #1F3FB3",
       
  2541 "N,	c #1F3FB5",
       
  2542 "O,	c #2140B6",
       
  2543 "P,	c #2140B8",
       
  2544 "Q,	c #2744B4",
       
  2545 "R,	c #2746B6",
       
  2546 "S,	c #2947B6",
       
  2547 "T,	c #2946B5",
       
  2548 "U,	c #2A48B6",
       
  2549 "V,	c #3551A8",
       
  2550 "W,	c #1F399C",
       
  2551 "X,	c #143D9F",
       
  2552 "Y,	c #263BA5",
       
  2553 "Z,	c #273BA8",
       
  2554 "`,	c #273BAA",
       
  2555 " '	c #263AAD",
       
  2556 ".'	c #233CAD",
       
  2557 "+'	c #213DAE",
       
  2558 "@'	c #203FB2",
       
  2559 "#'	c #2342B6",
       
  2560 "$'	c #2443B6",
       
  2561 "%'	c #2543B6",
       
  2562 "&'	c #2644B5",
       
  2563 "*'	c #133D9E",
       
  2564 "='	c #263BA7",
       
  2565 "-'	c #263BA9",
       
  2566 ";'	c #273BA9",
       
  2567 ">'	c #263AAA",
       
  2568 ",'	c #2539AB",
       
  2569 "''	c #2639AB",
       
  2570 ")'	c #253AAC",
       
  2571 "!'	c #243BAD",
       
  2572 "~'	c #223DAF",
       
  2573 "{'	c #203FB0",
       
  2574 "]'	c #2040B1",
       
  2575 "^'	c #2140B3",
       
  2576 "/'	c #2543B1",
       
  2577 "('	c #2744AF",
       
  2578 "_'	c #1A3CA0",
       
  2579 ":'	c #1D3BA2",
       
  2580 "<'	c #233BA4",
       
  2581 "['	c #263AA5",
       
  2582 "}'	c #253AA5",
       
  2583 "|'	c #263AA6",
       
  2584 "1'	c #263BA4",
       
  2585 "2'	c #243BA5",
       
  2586 "3'	c #263BA8",
       
  2587 "4'	c #223EAF",
       
  2588 "5'	c #3B4CA5",
       
  2589 "6'	c #1D379A",
       
  2590 "7'	c #1E389C",
       
  2591 "8'	c #1E399F",
       
  2592 "9'	c #1F3BA2",
       
  2593 "0'	c #1F3BA3",
       
  2594 "a'	c #213BA4",
       
  2595 "b'	c #233AA3",
       
  2596 "c'	c #243AA3",
       
  2597 "d'	c #2539A4",
       
  2598 "e'	c #253AA6",
       
  2599 "f'	c #243BA7",
       
  2600 "g'	c #253CAA",
       
  2601 "h'	c #253CAC",
       
  2602 "i'	c #253CAD",
       
  2603 "j'	c #253CAE",
       
  2604 "k'	c #243DAE",
       
  2605 "l'	c #213FAF",
       
  2606 "m'	c #223FAF",
       
  2607 "n'	c #2040AF",
       
  2608 "o'	c #253D93",
       
  2609 "p'	c #1D3894",
       
  2610 "q'	c #1F379A",
       
  2611 "r'	c #1E389B",
       
  2612 "s'	c #1D399C",
       
  2613 "t'	c #1C3A9D",
       
  2614 "u'	c #1B3A9D",
       
  2615 "v'	c #183B9E",
       
  2616 "w'	c #163C9E",
       
  2617 "x'	c #153C9E",
       
  2618 "y'	c #163B9D",
       
  2619 "z'	c #173B9D",
       
  2620 "A'	c #193A9D",
       
  2621 "B'	c #1C3A9E",
       
  2622 "C'	c #1F3AA1",
       
  2623 "D'	c #223AA4",
       
  2624 "E'	c #253BA8",
       
  2625 "F'	c #273BA7",
       
  2626 "G'	c #263CAB",
       
  2627 "H'	c #263CAC",
       
  2628 "I'	c #243EAE",
       
  2629 "J'	c #273BAC",
       
  2630 "K'	c #2A3795",
       
  2631 "L'	c #1F389B",
       
  2632 "M'	c #1D389B",
       
  2633 "N'	c #1C399C",
       
  2634 "O'	c #1B399C",
       
  2635 "P'	c #1A3A9D",
       
  2636 "Q'	c #1D399B",
       
  2637 "R'	c #1B399B",
       
  2638 "S'	c #1A3A9C",
       
  2639 "T'	c #1B3A9F",
       
  2640 "U'	c #1D3AA0",
       
  2641 "V'	c #203BA2",
       
  2642 "W'	c #203BA3",
       
  2643 "X'	c #2639A6",
       
  2644 "Y'	c #1B3692",
       
  2645 "Z'	c #1C3794",
       
  2646 "`'	c #1D3796",
       
  2647 " )	c #1E3898",
       
  2648 ".)	c #1E389A",
       
  2649 "+)	c #1F399B",
       
  2650 "@)	c #1A399C",
       
  2651 "#)	c #193A9E",
       
  2652 "$)	c #1A3BA0",
       
  2653 "%)	c #1C3BA2",
       
  2654 "&)	c #1D3CA3",
       
  2655 "*)	c #203CA4",
       
  2656 "=)	c #223BA5",
       
  2657 "-)	c #3C4699",
       
  2658 ";)	c #2B4595",
       
  2659 ">)	c #1C3793",
       
  2660 ",)	c #1D3895",
       
  2661 "')	c #1E3897",
       
  2662 "))	c #1F3998",
       
  2663 "!)	c #1F3999",
       
  2664 "~)	c #1F399A",
       
  2665 "{)	c #1E399C",
       
  2666 "])	c #1C3B9E",
       
  2667 "^)	c #1D3BA0",
       
  2668 "/)	c #1E3CA2",
       
  2669 "()	c #223CA5",
       
  2670 "_)	c #243CA6",
       
  2671 ":)	c #596FA9",
       
  2672 "<)	c #3B4894",
       
  2673 "[)	c #314993",
       
  2674 "})	c #29499F",
       
  2675 "|)	c #28489E",
       
  2676 "1)	c #2B4BA1",
       
  2677 "2)	c #2C4BA1",
       
  2678 "3)	c #2D4CA2",
       
  2679 "4)	c #2E4CA3",
       
  2680 "5)	c #2F4CA4",
       
  2681 "6)	c #2E4CA4",
       
  2682 "7)	c #2F4DA3",
       
  2683 "8)	c #2F4DA4",
       
  2684 "9)	c #D3D5D2",
       
  2685 "0)	c #3B4794",
       
  2686 "a)	c #314791",
       
  2687 "b)	c #304892",
       
  2688 "c)	c #304893",
       
  2689 "d)	c #2F4995",
       
  2690 "e)	c #2F4997",
       
  2691 "f)	c #2D4A9A",
       
  2692 "g)	c #2A4A9D",
       
  2693 "h)	c #294A9F",
       
  2694 "i)	c #284AA0",
       
  2695 "j)	c #294AA0",
       
  2696 "k)	c #2B4AA1",
       
  2697 "l)	c #2D4CA3",
       
  2698 "m)	c #C9CAC9",
       
  2699 "n)	c #455D9B",
       
  2700 "o)	c #242F78",
       
  2701 "p)	c #1B2F85",
       
  2702 "q)	c #C6C3C8",
       
  2703 "r)	c #B5B2B6",
       
  2704 "s)	c #B5B7B4",
       
  2705 "t)	c #B5B7B3",
       
  2706 "u)	c #B5B2B5",
       
  2707 "v)	c #B5B3B4",
       
  2708 "w)	c #B5B5B4",
       
  2709 "x)	c #B5B6B3",
       
  2710 "y)	c #B5B4B4",
       
  2711 "z)	c #B5B3B5",
       
  2712 "A)	c #B5B4B5",
       
  2713 "B)	c #B5B5B5",
       
  2714 "C)	c #B5B5B3",
       
  2715 "D)	c #B5B5B6",
       
  2716 "E)	c #BAC3BE",
       
  2717 "F)	c #B9C3BD",
       
  2718 "G)	c #C1C3C4",
       
  2719 "H)	c #BFC3C2",
       
  2720 "I)	c #B9C3BE",
       
  2721 "J)	c #BBC3BF",
       
  2722 "K)	c #BDC3C1",
       
  2723 "L)	c #C0C3C3",
       
  2724 "M)	c #BEC3C1",
       
  2725 "N)	c #C2C3C5",
       
  2726 "O)	c #E6E3E8",
       
  2727 "P)	c #E0E2DF",
       
  2728 "Q)	c #E1E1E1",
       
  2729 "R)	c #E2E1E3",
       
  2730 "S)	c #E4E1E6",
       
  2731 "T)	c #E4E2E7",
       
  2732 "U)	c #E4E2E6",
       
  2733 "V)	c #E3E3E4",
       
  2734 "W)	c #E2E3E3",
       
  2735 "X)	c #E1E3E2",
       
  2736 "Y)	c #E3E3E3",
       
  2737 "Z)	c #E3E3E2",
       
  2738 "`)	c #EBEDEA",
       
  2739 " !	c #EAECE9",
       
  2740 ".!	c #E9EBE8",
       
  2741 "+!	c #ECEEEB",
       
  2742 ". . + @ # $ $ $ $ $ $ $ % $ $ $ $ $ % $ $ $ $ $ $ % $ $ $ $ $ % $ $ $ $ $ $ $ $ $ % $ $ & * = - ; > , , ' ) ! ! ~ { ] ^ / ( _ : < [ } | | 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 ",
       
  2743 "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 ",
       
  2744 "@ % 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.",
       
  2745 "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.`. +.+++@+#+$+@+$+%+&+*+=+$+-+;+>+,+'+)+!+;+>+,+~+,+>+,+~+,+",
       
  2746 "$ {+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+",
       
  2747 "{+{+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+",
       
  2748 "{+{+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@",
       
  2749 "{+{+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+",
       
  2750 "{+{+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#",
       
  2751 "$ {+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$",
       
  2752 "$ {+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$`$ %",
       
  2753 "$ $ 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%",
       
  2754 "$ $ 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%",
       
  2755 "$ $ 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%",
       
  2756 "$ $ 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&",
       
  2757 "{+$ 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*",
       
  2758 "{+{+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*",
       
  2759 "{+{+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=",
       
  2760 "{+{+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=",
       
  2761 "{+{+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=",
       
  2762 "{+{+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-",
       
  2763 "{+{+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 ",
       
  2764 "#;#;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;",
       
  2765 "#;#;;-;-$;$;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;",
       
  2766 "#;#;;-;-$;$;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;",
       
  2767 "#;#;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;",
       
  2768 "#;#;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>",
       
  2769 "#;#;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;",
       
  2770 "#;;,;-;-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>",
       
  2771 ";,;,;-;-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,",
       
  2772 ";,;,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,",
       
  2773 ";,;,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,",
       
  2774 ";,;,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;]']']']']']'^'/']']']'^'/':,(':,]'^'/':,(':,/':,(':,",
       
  2775 ";,;,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;",
       
  2776 ";,;,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;",
       
  2777 ";,;,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'",
       
  2778 ";,;,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>",
       
  2779 ";,;,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>",
       
  2780 "{+;,$ -);)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>",
       
  2781 ":);,;,;)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)<)[)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)",
       
  2782 "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)",
       
  2783 "+ 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)",
       
  2784 "+ + 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)",
       
  2785 ". + + 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)",
       
  2786 ". . 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)",
       
  2787 ". . . 0 0 0 . 0 0 0 + 0 + 0 + 0 + 0 + 0 + 0 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 0 `) !+ + + .! !`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)`)+!`)`)`)`)`)+!`)`)`)+!`)"};
       
  2788 
       
  2789 
       
  2790 static char * listviewhighcornerright_xpm[] = {
       
  2791 "100 46 780 2",
       
  2792 "  	c None",
       
  2793 ". 	c #6A779D",
       
  2794 "+ 	c #6C789C",
       
  2795 "@ 	c #6C789D",
       
  2796 "# 	c #6B789D",
       
  2797 "$ 	c #6A779E",
       
  2798 "% 	c #66759E",
       
  2799 "& 	c #64749E",
       
  2800 "* 	c #63749E",
       
  2801 "= 	c #61739D",
       
  2802 "- 	c #576D9B",
       
  2803 "; 	c #556C9C",
       
  2804 "> 	c #4D679D",
       
  2805 ", 	c #4A649D",
       
  2806 "' 	c #49629D",
       
  2807 ") 	c #465E9C",
       
  2808 "! 	c #40579C",
       
  2809 "~ 	c #3B5394",
       
  2810 "{ 	c #2C4E97",
       
  2811 "] 	c #314993",
       
  2812 "^ 	c #2B4595",
       
  2813 "/ 	c #1B4296",
       
  2814 "( 	c #253D93",
       
  2815 "_ 	c #19418F",
       
  2816 ": 	c #0F3C96",
       
  2817 "< 	c #42599E",
       
  2818 "[ 	c #758DC3",
       
  2819 "} 	c #E8EAE7",
       
  2820 "| 	c #EEF0ED",
       
  2821 "1 	c #FBFBFC",
       
  2822 "2 	c #6F7D9B",
       
  2823 "3 	c #6F7D9A",
       
  2824 "4 	c #6E7B9C",
       
  2825 "5 	c #67759E",
       
  2826 "6 	c #63739E",
       
  2827 "7 	c #62739D",
       
  2828 "8 	c #596F9C",
       
  2829 "9 	c #4A639D",
       
  2830 "0 	c #47609C",
       
  2831 "a 	c #445B9F",
       
  2832 "b 	c #3E5697",
       
  2833 "c 	c #2E509A",
       
  2834 "d 	c #2D509A",
       
  2835 "e 	c #2D4F99",
       
  2836 "f 	c #2D4F98",
       
  2837 "g 	c #28418A",
       
  2838 "h 	c #3E51A3",
       
  2839 "i 	c #D0D3DC",
       
  2840 "j 	c #A1B6EF",
       
  2841 "k 	c #A2B6F0",
       
  2842 "l 	c #A1B6F0",
       
  2843 "m 	c #A3B6F0",
       
  2844 "n 	c #A0B6EF",
       
  2845 "o 	c #9DB6EE",
       
  2846 "p 	c #9CB5EF",
       
  2847 "q 	c #9CB2F0",
       
  2848 "r 	c #9FB5EE",
       
  2849 "s 	c #9CB4EB",
       
  2850 "t 	c #9AB3EC",
       
  2851 "u 	c #9AB0EC",
       
  2852 "v 	c #9DB3EB",
       
  2853 "w 	c #9BB4EC",
       
  2854 "x 	c #9BB4EE",
       
  2855 "y 	c #9BB1EF",
       
  2856 "z 	c #9BB0F0",
       
  2857 "A 	c #90ACF0",
       
  2858 "B 	c #93ABEE",
       
  2859 "C 	c #91A8EB",
       
  2860 "D 	c #8BA3E8",
       
  2861 "E 	c #88A1E7",
       
  2862 "F 	c #809DE9",
       
  2863 "G 	c #7A99E8",
       
  2864 "H 	c #7491E5",
       
  2865 "I 	c #698AE4",
       
  2866 "J 	c #6184E3",
       
  2867 "K 	c #507EDC",
       
  2868 "L 	c #4E7CDB",
       
  2869 "M 	c #4F7DDC",
       
  2870 "N 	c #5479DA",
       
  2871 "O 	c #567BDC",
       
  2872 "P 	c #577CDD",
       
  2873 "Q 	c #5074DA",
       
  2874 "R 	c #5174DB",
       
  2875 "S 	c #5175DC",
       
  2876 "T 	c #5276DD",
       
  2877 "U 	c #4D71DE",
       
  2878 "V 	c #4C72D8",
       
  2879 "W 	c #3A6CE0",
       
  2880 "X 	c #2B49A6",
       
  2881 "Y 	c #E0E2DF",
       
  2882 "Z 	c #93AAE9",
       
  2883 "` 	c #94A9E8",
       
  2884 " .	c #94AAE9",
       
  2885 "..	c #93A9E9",
       
  2886 "+.	c #92AAE9",
       
  2887 "@.	c #8DA9E8",
       
  2888 "#.	c #8CA7E9",
       
  2889 "$.	c #92ABE9",
       
  2890 "%.	c #8EAAE9",
       
  2891 "&.	c #8EA9E9",
       
  2892 "*.	c #8FAAE9",
       
  2893 "=.	c #8CA8E9",
       
  2894 "-.	c #8CA2E7",
       
  2895 ";.	c #86A1E6",
       
  2896 ">.	c #839EE9",
       
  2897 ",.	c #7F9CE9",
       
  2898 "'.	c #7A97E8",
       
  2899 ").	c #7693E7",
       
  2900 "!.	c #6E8EE8",
       
  2901 "~.	c #678AE9",
       
  2902 "{.	c #5D84E3",
       
  2903 "].	c #577CDF",
       
  2904 "^.	c #4E77DF",
       
  2905 "/.	c #4A70DB",
       
  2906 "(.	c #4870DB",
       
  2907 "_.	c #4870DC",
       
  2908 ":.	c #4770E3",
       
  2909 "<.	c #496FDC",
       
  2910 "[.	c #486EDB",
       
  2911 "}.	c #466FE4",
       
  2912 "|.	c #466EE3",
       
  2913 "1.	c #4167D9",
       
  2914 "2.	c #4066D8",
       
  2915 "3.	c #3F66D8",
       
  2916 "4.	c #3D64D7",
       
  2917 "5.	c #3960DA",
       
  2918 "6.	c #476DD9",
       
  2919 "7.	c #446EE5",
       
  2920 "8.	c #305EC8",
       
  2921 "9.	c #8EAAE8",
       
  2922 "0.	c #8FAAE8",
       
  2923 "a.	c #91AAE9",
       
  2924 "b.	c #8FA9E8",
       
  2925 "c.	c #8BA8E8",
       
  2926 "d.	c #8AA7E9",
       
  2927 "e.	c #8BA5EA",
       
  2928 "f.	c #8AA7E8",
       
  2929 "g.	c #87A2E6",
       
  2930 "h.	c #859FE8",
       
  2931 "i.	c #7F9DE8",
       
  2932 "j.	c #7C9AE8",
       
  2933 "k.	c #7B95E7",
       
  2934 "l.	c #7090E8",
       
  2935 "m.	c #6B8BE9",
       
  2936 "n.	c #6386E6",
       
  2937 "o.	c #5881E1",
       
  2938 "p.	c #5479DE",
       
  2939 "q.	c #4D74DE",
       
  2940 "r.	c #476EDB",
       
  2941 "s.	c #446EE1",
       
  2942 "t.	c #446EE0",
       
  2943 "u.	c #446EDF",
       
  2944 "v.	c #446DE0",
       
  2945 "w.	c #426ADF",
       
  2946 "x.	c #3C64DA",
       
  2947 "y.	c #4360CC",
       
  2948 "z.	c #D3D5D2",
       
  2949 "A.	c #E6E3E8",
       
  2950 "B.	c #8DA2E7",
       
  2951 "C.	c #8CA6EA",
       
  2952 "D.	c #8DA3E9",
       
  2953 "E.	c #88A2E7",
       
  2954 "F.	c #87A1E7",
       
  2955 "G.	c #8AA1E7",
       
  2956 "H.	c #849EE9",
       
  2957 "I.	c #7D9AE9",
       
  2958 "J.	c #7B98E8",
       
  2959 "K.	c #7796E5",
       
  2960 "L.	c #7191E7",
       
  2961 "M.	c #688CE9",
       
  2962 "N.	c #6687E5",
       
  2963 "O.	c #5C83E1",
       
  2964 "P.	c #557BDE",
       
  2965 "Q.	c #4F76DE",
       
  2966 "R.	c #4C72DE",
       
  2967 "S.	c #456EDF",
       
  2968 "T.	c #426AD9",
       
  2969 "U.	c #4269D9",
       
  2970 "V.	c #4269D8",
       
  2971 "W.	c #3D64D9",
       
  2972 "X.	c #3A61DA",
       
  2973 "Y.	c #345ED6",
       
  2974 "Z.	c #335ECF",
       
  2975 "`.	c #C6C3C8",
       
  2976 " +	c #86A1E7",
       
  2977 ".+	c #87A2E7",
       
  2978 "++	c #87A0E7",
       
  2979 "@+	c #859EE8",
       
  2980 "#+	c #849DE9",
       
  2981 "$+	c #7E9BE9",
       
  2982 "%+	c #7A99E9",
       
  2983 "&+	c #7A95E5",
       
  2984 "*+	c #7593E7",
       
  2985 "=+	c #6F8EE9",
       
  2986 "-+	c #668AE5",
       
  2987 ";+	c #6386E0",
       
  2988 ">+	c #5B82DF",
       
  2989 ",+	c #5379DE",
       
  2990 "'+	c #5075DE",
       
  2991 ")+	c #4B6FDC",
       
  2992 "!+	c #446AD7",
       
  2993 "~+	c #4269D6",
       
  2994 "{+	c #4269D5",
       
  2995 "]+	c #3E65D7",
       
  2996 "^+	c #C9CAC9",
       
  2997 "/+	c #869EE9",
       
  2998 "(+	c #859FE9",
       
  2999 "_+	c #849FE9",
       
  3000 ":+	c #829DE8",
       
  3001 "<+	c #819DE8",
       
  3002 "[+	c #7B9AE9",
       
  3003 "}+	c #7A96E6",
       
  3004 "|+	c #7290E8",
       
  3005 "1+	c #698CE6",
       
  3006 "2+	c #6689E0",
       
  3007 "3+	c #5D84E0",
       
  3008 "4+	c #587FDF",
       
  3009 "5+	c #5377DD",
       
  3010 "6+	c #4B74DE",
       
  3011 "7+	c #496BD8",
       
  3012 "8+	c #7C9BE9",
       
  3013 "9+	c #7E9CE9",
       
  3014 "0+	c #7D9AEA",
       
  3015 "a+	c #7D9BEA",
       
  3016 "b+	c #7D98E8",
       
  3017 "c+	c #7C98E8",
       
  3018 "d+	c #7796E4",
       
  3019 "e+	c #7592E6",
       
  3020 "f+	c #7390E1",
       
  3021 "g+	c #698DE0",
       
  3022 "h+	c #6588DE",
       
  3023 "i+	c #5E84E0",
       
  3024 "j+	c #5880DF",
       
  3025 "k+	c #5479DC",
       
  3026 "l+	c #4F75DE",
       
  3027 "m+	c #4A6FDB",
       
  3028 "n+	c #436AD7",
       
  3029 "o+	c #3F65D7",
       
  3030 "p+	c #BAC3BE",
       
  3031 "q+	c #7B9AE8",
       
  3032 "r+	c #7B9AEA",
       
  3033 "s+	c #7A9AEA",
       
  3034 "t+	c #7B99E9",
       
  3035 "u+	c #7D97E7",
       
  3036 "v+	c #7D95E6",
       
  3037 "w+	c #7D95E5",
       
  3038 "x+	c #7C95E6",
       
  3039 "y+	c #7493E3",
       
  3040 "z+	c #7290DF",
       
  3041 "A+	c #6C8DDE",
       
  3042 "B+	c #6B89E1",
       
  3043 "C+	c #6486DF",
       
  3044 "D+	c #5D81DF",
       
  3045 "E+	c #567DDE",
       
  3046 "F+	c #4F73DE",
       
  3047 "G+	c #496EDA",
       
  3048 "H+	c #355ED6",
       
  3049 "I+	c #345ED5",
       
  3050 "J+	c #7E95E5",
       
  3051 "K+	c #7C97E8",
       
  3052 "L+	c #7C97E7",
       
  3053 "M+	c #7B94E6",
       
  3054 "N+	c #7A95E4",
       
  3055 "O+	c #7695E5",
       
  3056 "P+	c #7694E4",
       
  3057 "Q+	c #7994E6",
       
  3058 "R+	c #7995E4",
       
  3059 "S+	c #7594E4",
       
  3060 "T+	c #7391E2",
       
  3061 "U+	c #6E8EDE",
       
  3062 "V+	c #6B8ADE",
       
  3063 "W+	c #6688DF",
       
  3064 "X+	c #5F84E0",
       
  3065 "Y+	c #5980E0",
       
  3066 "Z+	c #4D72DD",
       
  3067 "`+	c #456BD7",
       
  3068 " @	c #4168D6",
       
  3069 ".@	c #3C64D7",
       
  3070 "+@	c #335ED0",
       
  3071 "@@	c #4659C7",
       
  3072 "#@	c #7292E1",
       
  3073 "$@	c #7392E1",
       
  3074 "%@	c #7492E1",
       
  3075 "&@	c #718FDF",
       
  3076 "*@	c #6F8EDE",
       
  3077 "=@	c #6D8BDE",
       
  3078 "-@	c #6B88DF",
       
  3079 ";@	c #597FDF",
       
  3080 ">@	c #557ADD",
       
  3081 ",@	c #5176DC",
       
  3082 "'@	c #4D74DD",
       
  3083 ")@	c #496DDA",
       
  3084 "!@	c #3860D8",
       
  3085 "~@	c #7391E0",
       
  3086 "{@	c #7290DE",
       
  3087 "]@	c #6D8EDD",
       
  3088 "^@	c #6D8DDD",
       
  3089 "/@	c #7190E0",
       
  3090 "(@	c #6C8DDD",
       
  3091 "_@	c #6B89DF",
       
  3092 ":@	c #6487E0",
       
  3093 "<@	c #6085DF",
       
  3094 "[@	c #5F81DE",
       
  3095 "}@	c #567EDE",
       
  3096 "|@	c #4F74D9",
       
  3097 "1@	c #466BD7",
       
  3098 "2@	c #4067D5",
       
  3099 "3@	c #3C63D7",
       
  3100 "4@	c #335ED3",
       
  3101 "5@	c #335ED1",
       
  3102 "6@	c #718EDD",
       
  3103 "7@	c #728EDD",
       
  3104 "8@	c #748EDD",
       
  3105 "9@	c #708EDD",
       
  3106 "0@	c #6F8DDD",
       
  3107 "a@	c #6E8DDD",
       
  3108 "b@	c #6C8ADE",
       
  3109 "c@	c #6C89DF",
       
  3110 "d@	c #6988DF",
       
  3111 "e@	c #6387DF",
       
  3112 "f@	c #6282DE",
       
  3113 "g@	c #5681E0",
       
  3114 "h@	c #577BDD",
       
  3115 "i@	c #5277DB",
       
  3116 "j@	c #4D73D8",
       
  3117 "k@	c #4A70D8",
       
  3118 "l@	c #436AD5",
       
  3119 "m@	c #3F66D6",
       
  3120 "n@	c #3C63D8",
       
  3121 "o@	c #3960D8",
       
  3122 "p@	c #3860D7",
       
  3123 "q@	c #335ED2",
       
  3124 "r@	c #345ED4",
       
  3125 "s@	c #6C88DF",
       
  3126 "t@	c #6D88DF",
       
  3127 "u@	c #6B89DE",
       
  3128 "v@	c #6888DF",
       
  3129 "w@	c #6587E0",
       
  3130 "x@	c #6989DF",
       
  3131 "y@	c #6687E0",
       
  3132 "z@	c #6287E0",
       
  3133 "A@	c #6281DD",
       
  3134 "B@	c #5881E0",
       
  3135 "C@	c #557ADB",
       
  3136 "D@	c #5176D9",
       
  3137 "E@	c #4E75D7",
       
  3138 "F@	c #4A6FD8",
       
  3139 "G@	c #476BD6",
       
  3140 "H@	c #4067D6",
       
  3141 "I@	c #3C62D7",
       
  3142 "J@	c #3C60D4",
       
  3143 "K@	c #365ED1",
       
  3144 "L@	c #345ED3",
       
  3145 "M@	c #6786DF",
       
  3146 "N@	c #5F85E0",
       
  3147 "O@	c #5F86E0",
       
  3148 "P@	c #6186DF",
       
  3149 "Q@	c #6286E0",
       
  3150 "R@	c #6284DF",
       
  3151 "S@	c #6384DF",
       
  3152 "T@	c #5B7FDE",
       
  3153 "U@	c #577DDC",
       
  3154 "V@	c #557BDA",
       
  3155 "W@	c #5278D8",
       
  3156 "X@	c #4E76D6",
       
  3157 "Y@	c #4C72D7",
       
  3158 "Z@	c #486DD8",
       
  3159 "`@	c #4469D6",
       
  3160 " #	c #3F62D2",
       
  3161 ".#	c #3C60CF",
       
  3162 "+#	c #345ECF",
       
  3163 "@#	c #6086DF",
       
  3164 "##	c #6085E0",
       
  3165 "$#	c #6285DF",
       
  3166 "%#	c #6383DD",
       
  3167 "&#	c #6481DC",
       
  3168 "*#	c #6380DD",
       
  3169 "=#	c #6183DE",
       
  3170 "-#	c #6083DD",
       
  3171 ";#	c #6081DC",
       
  3172 ">#	c #6080DD",
       
  3173 ",#	c #6083DE",
       
  3174 "'#	c #6181DC",
       
  3175 ")#	c #6280DD",
       
  3176 "!#	c #577EDB",
       
  3177 "~#	c #557CD7",
       
  3178 "{#	c #4F76D6",
       
  3179 "]#	c #4E74D7",
       
  3180 "^#	c #466CD7",
       
  3181 "/#	c #3B64D6",
       
  3182 "(#	c #4261CD",
       
  3183 "_#	c #375FCE",
       
  3184 ":#	c #5A7FD8",
       
  3185 "<#	c #6281DA",
       
  3186 "[#	c #5F81D8",
       
  3187 "}#	c #5C80D8",
       
  3188 "|#	c #557DD7",
       
  3189 "1#	c #577ED8",
       
  3190 "2#	c #567ED7",
       
  3191 "3#	c #587DD8",
       
  3192 "4#	c #577DD8",
       
  3193 "5#	c #587ED8",
       
  3194 "6#	c #567DD8",
       
  3195 "7#	c #5379D9",
       
  3196 "8#	c #5177D7",
       
  3197 "9#	c #4D74D5",
       
  3198 "0#	c #486ED9",
       
  3199 "a#	c #4068D4",
       
  3200 "b#	c #3D65D2",
       
  3201 "c#	c #4361CC",
       
  3202 "d#	c #345ECE",
       
  3203 "e#	c #325DCF",
       
  3204 "f#	c #2C5AD1",
       
  3205 "g#	c #3959C5",
       
  3206 "h#	c #547BD8",
       
  3207 "i#	c #567DD7",
       
  3208 "j#	c #557BD8",
       
  3209 "k#	c #5279D9",
       
  3210 "l#	c #5278D9",
       
  3211 "m#	c #4D74D6",
       
  3212 "n#	c #4B71D8",
       
  3213 "o#	c #496CD8",
       
  3214 "p#	c #4669D7",
       
  3215 "q#	c #3D66D3",
       
  3216 "r#	c #3F62CF",
       
  3217 "s#	c #4260CC",
       
  3218 "t#	c #5379D8",
       
  3219 "u#	c #4E75D4",
       
  3220 "v#	c #4C73D7",
       
  3221 "w#	c #476CD7",
       
  3222 "x#	c #4869D0",
       
  3223 "y#	c #4067D2",
       
  3224 "z#	c #3D64D1",
       
  3225 "A#	c #4261CC",
       
  3226 "B#	c #395FCE",
       
  3227 "C#	c #4F75D3",
       
  3228 "D#	c #5074D2",
       
  3229 "E#	c #5174D1",
       
  3230 "F#	c #5175D1",
       
  3231 "G#	c #4F74D3",
       
  3232 "H#	c #4C73D5",
       
  3233 "I#	c #4C73D4",
       
  3234 "J#	c #4A72D1",
       
  3235 "K#	c #4B70CF",
       
  3236 "L#	c #506CCC",
       
  3237 "M#	c #4D6BCE",
       
  3238 "N#	c #4167D0",
       
  3239 "O#	c #3D65D1",
       
  3240 "P#	c #3F63CF",
       
  3241 "Q#	c #3B5FCD",
       
  3242 "R#	c #3159CD",
       
  3243 "S#	c #4971D0",
       
  3244 "T#	c #4870CF",
       
  3245 "U#	c #4C6FCF",
       
  3246 "V#	c #4E6CCE",
       
  3247 "W#	c #4E6BCE",
       
  3248 "X#	c #4769CF",
       
  3249 "Y#	c #3D66D0",
       
  3250 "Z#	c #3C65D1",
       
  3251 "`#	c #4062CE",
       
  3252 " $	c #3D5FCD",
       
  3253 ".$	c #365FCF",
       
  3254 "+$	c #325DCD",
       
  3255 "@$	c #2D5AD0",
       
  3256 "#$	c #3859C5",
       
  3257 "$$	c #355FCF",
       
  3258 "%$	c #355ECF",
       
  3259 "&$	c #335ECE",
       
  3260 "*$	c #305CCD",
       
  3261 "=$	c #2B5ACE",
       
  3262 "-$	c #3056C9",
       
  3263 ";$	c #2553C6",
       
  3264 ">$	c #2153C8",
       
  3265 ",$	c #1F4FC7",
       
  3266 "'$	c #274CC5",
       
  3267 ")$	c #214AC7",
       
  3268 "!$	c #1C48C8",
       
  3269 "~$	c #1244C9",
       
  3270 "{$	c #1043C9",
       
  3271 "]$	c #1144C9",
       
  3272 "^$	c #2A45BE",
       
  3273 "/$	c #2744B5",
       
  3274 "($	c #1D49C0",
       
  3275 "_$	c #2B58DE",
       
  3276 ":$	c #002D94",
       
  3277 "<$	c #2B59CA",
       
  3278 "[$	c #2A59CA",
       
  3279 "}$	c #2E57C8",
       
  3280 "|$	c #3255C6",
       
  3281 "1$	c #3355C5",
       
  3282 "2$	c #1C52C8",
       
  3283 "3$	c #1D50C7",
       
  3284 "4$	c #234FC6",
       
  3285 "5$	c #264CC5",
       
  3286 "6$	c #1D48C7",
       
  3287 "7$	c #1245C8",
       
  3288 "8$	c #1F44C2",
       
  3289 "9$	c #2945BE",
       
  3290 "0$	c #2A45BD",
       
  3291 "a$	c #2040BF",
       
  3292 "b$	c #3156C7",
       
  3293 "c$	c #3056C7",
       
  3294 "d$	c #3354C5",
       
  3295 "e$	c #3355C6",
       
  3296 "f$	c #3255C5",
       
  3297 "g$	c #3254C5",
       
  3298 "h$	c #1952C7",
       
  3299 "i$	c #1951C8",
       
  3300 "j$	c #2050C7",
       
  3301 "k$	c #274CC4",
       
  3302 "l$	c #244CC6",
       
  3303 "m$	c #1F49C7",
       
  3304 "n$	c #1E47C5",
       
  3305 "o$	c #2045C3",
       
  3306 "p$	c #1C44BF",
       
  3307 "q$	c #2045BE",
       
  3308 "r$	c #2040B8",
       
  3309 "s$	c #3254C6",
       
  3310 "t$	c #3055C6",
       
  3311 "u$	c #2A54C6",
       
  3312 "v$	c #2353C7",
       
  3313 "w$	c #3054C5",
       
  3314 "x$	c #2F55C5",
       
  3315 "y$	c #2A54C5",
       
  3316 "z$	c #2553C5",
       
  3317 "A$	c #2F54C5",
       
  3318 "B$	c #3155C6",
       
  3319 "C$	c #2A54C7",
       
  3320 "D$	c #1A52C8",
       
  3321 "E$	c #204FC2",
       
  3322 "F$	c #264DC6",
       
  3323 "G$	c #234BC5",
       
  3324 "H$	c #1D48C1",
       
  3325 "I$	c #1E48BF",
       
  3326 "J$	c #2646BE",
       
  3327 "K$	c #2B45BD",
       
  3328 "L$	c #1E43BE",
       
  3329 "M$	c #2643BF",
       
  3330 "N$	c #2243BF",
       
  3331 "O$	c #3049BC",
       
  3332 "P$	c #1E50BE",
       
  3333 "Q$	c #1D50C0",
       
  3334 "R$	c #1D50BF",
       
  3335 "S$	c #1852C1",
       
  3336 "T$	c #1E51C0",
       
  3337 "U$	c #214FBF",
       
  3338 "V$	c #2050C0",
       
  3339 "W$	c #244EBF",
       
  3340 "X$	c #2151C0",
       
  3341 "Y$	c #234FBF",
       
  3342 "Z$	c #2350C0",
       
  3343 "`$	c #2351C0",
       
  3344 " %	c #244FBF",
       
  3345 ".%	c #2250C0",
       
  3346 "+%	c #2051C0",
       
  3347 "@%	c #1E50C0",
       
  3348 "#%	c #244DBE",
       
  3349 "$%	c #274DBF",
       
  3350 "%%	c #244CBF",
       
  3351 "&%	c #1C48C0",
       
  3352 "*%	c #2247BF",
       
  3353 "=%	c #2C44BD",
       
  3354 "-%	c #1C44BE",
       
  3355 ";%	c #1444BF",
       
  3356 ">%	c #1841BF",
       
  3357 ",%	c #1F40BF",
       
  3358 "'%	c #254DBE",
       
  3359 ")%	c #224FBE",
       
  3360 "!%	c #224FBF",
       
  3361 "~%	c #234EBF",
       
  3362 "{%	c #254CBD",
       
  3363 "]%	c #244DBD",
       
  3364 "^%	c #244CBD",
       
  3365 "/%	c #264DBE",
       
  3366 "(%	c #264DBD",
       
  3367 "_%	c #214BC0",
       
  3368 ":%	c #1D48C0",
       
  3369 "<%	c #2347BF",
       
  3370 "[%	c #2B44BD",
       
  3371 "}%	c #2444BE",
       
  3372 "|%	c #0F42BF",
       
  3373 "1%	c #0641BF",
       
  3374 "2%	c #0F41BF",
       
  3375 "3%	c #1741BE",
       
  3376 "4%	c #1F40BD",
       
  3377 "5%	c #234BBF",
       
  3378 "6%	c #234CBE",
       
  3379 "7%	c #214BBE",
       
  3380 "8%	c #244CBE",
       
  3381 "9%	c #214ABE",
       
  3382 "0%	c #214ABF",
       
  3383 "a%	c #1F48C0",
       
  3384 "b%	c #2746BE",
       
  3385 "c%	c #1F43BE",
       
  3386 "d%	c #0941BE",
       
  3387 "e%	c #0342BA",
       
  3388 "f%	c #0242BC",
       
  3389 "g%	c #1241B8",
       
  3390 "h%	c #1F40B7",
       
  3391 "i%	c #2F41AC",
       
  3392 "j%	c #2644AE",
       
  3393 "k%	c #2D49B4",
       
  3394 "l%	c #2649B6",
       
  3395 "m%	c #2949B7",
       
  3396 "n%	c #2849B5",
       
  3397 "o%	c #2149B8",
       
  3398 "p%	c #1E49B9",
       
  3399 "q%	c #1F48B8",
       
  3400 "r%	c #1F49B9",
       
  3401 "s%	c #2545B6",
       
  3402 "t%	c #2744B7",
       
  3403 "u%	c #2844B7",
       
  3404 "v%	c #2043B8",
       
  3405 "w%	c #1241B7",
       
  3406 "x%	c #1340B8",
       
  3407 "y%	c #0D41B8",
       
  3408 "z%	c #1941B8",
       
  3409 "A%	c #1F40B8",
       
  3410 "B%	c #203FB8",
       
  3411 "C%	c #2549B5",
       
  3412 "D%	c #2648B6",
       
  3413 "E%	c #2547B7",
       
  3414 "F%	c #2248B7",
       
  3415 "G%	c #2048B7",
       
  3416 "H%	c #2346B6",
       
  3417 "I%	c #2146B6",
       
  3418 "J%	c #2247B7",
       
  3419 "K%	c #2148B7",
       
  3420 "L%	c #2743B4",
       
  3421 "M%	c #2643B5",
       
  3422 "N%	c #2542B6",
       
  3423 "O%	c #1D42B7",
       
  3424 "P%	c #0E42B8",
       
  3425 "Q%	c #0C41B8",
       
  3426 "R%	c #1341B8",
       
  3427 "S%	c #1740B8",
       
  3428 "T%	c #1C41B8",
       
  3429 "U%	c #1F40B1",
       
  3430 "V%	c #2644B5",
       
  3431 "W%	c #2544B5",
       
  3432 "X%	c #2544B4",
       
  3433 "Y%	c #2444B5",
       
  3434 "Z%	c #2444B4",
       
  3435 "`%	c #2744B4",
       
  3436 " &	c #2241B7",
       
  3437 ".&	c #1D41B8",
       
  3438 "+&	c #0B42B8",
       
  3439 "@&	c #0942B8",
       
  3440 "#&	c #0C42B8",
       
  3441 "$&	c #0F41B8",
       
  3442 "%&	c #1641B8",
       
  3443 "&&	c #2442B5",
       
  3444 "*&	c #2543B3",
       
  3445 "=&	c #2342B2",
       
  3446 "-&	c #2341B4",
       
  3447 ";&	c #2141B3",
       
  3448 ">&	c #2141B5",
       
  3449 ",&	c #2140B5",
       
  3450 "'&	c #2040B5",
       
  3451 ")&	c #1C40B7",
       
  3452 "!&	c #1B41B3",
       
  3453 "~&	c #0142B6",
       
  3454 "{&	c #0E41B7",
       
  3455 "]&	c #1141B7",
       
  3456 "^&	c #1440B2",
       
  3457 "/&	c #113FB0",
       
  3458 "(&	c #1440B0",
       
  3459 "_&	c #213EAF",
       
  3460 ":&	c #233DAE",
       
  3461 "<&	c #223EAF",
       
  3462 "[&	c #1E40B1",
       
  3463 "}&	c #173EAD",
       
  3464 "|&	c #1440AF",
       
  3465 "1&	c #0D40AF",
       
  3466 "2&	c #0941B0",
       
  3467 "3&	c #0D3FAE",
       
  3468 "4&	c #1B3CAC",
       
  3469 "5&	c #233CAD",
       
  3470 "6&	c #203FB0",
       
  3471 "7&	c #273BAD",
       
  3472 "8&	c #1D40B0",
       
  3473 "9&	c #2040B1",
       
  3474 "0&	c #1E40B0",
       
  3475 "a&	c #1C40B0",
       
  3476 "b&	c #1B3DAC",
       
  3477 "c&	c #143DAC",
       
  3478 "d&	c #193DAD",
       
  3479 "e&	c #1B3DAD",
       
  3480 "f&	c #173DAD",
       
  3481 "g&	c #153DAC",
       
  3482 "h&	c #1C3CAC",
       
  3483 "i&	c #243CAD",
       
  3484 "j&	c #213FB0",
       
  3485 "k&	c #263BAA",
       
  3486 "l&	c #253CAE",
       
  3487 "m&	c #273AAC",
       
  3488 "n&	c #273AAD",
       
  3489 "o&	c #253BAD",
       
  3490 "p&	c #1D3CAC",
       
  3491 "q&	c #243BAD",
       
  3492 "r&	c #1E3CAC",
       
  3493 "s&	c #263BAD",
       
  3494 "t&	c #1A3DAC",
       
  3495 "u&	c #143DAB",
       
  3496 "v&	c #163DAC",
       
  3497 "w&	c #1A3CAC",
       
  3498 "x&	c #1F3CAD",
       
  3499 "y&	c #263BAB",
       
  3500 "z&	c #263BA6",
       
  3501 "A&	c #1E42A4",
       
  3502 "B&	c #2D40A5",
       
  3503 "C&	c #253BA6",
       
  3504 "D&	c #253CA7",
       
  3505 "E&	c #263AA5",
       
  3506 "F&	c #253BA7",
       
  3507 "G&	c #1E3BA6",
       
  3508 "H&	c #193DA6",
       
  3509 "I&	c #173DA5",
       
  3510 "J&	c #143DA6",
       
  3511 "K&	c #1A3DA7",
       
  3512 "L&	c #133DA6",
       
  3513 "M&	c #123DA5",
       
  3514 "N&	c #1A3CA7",
       
  3515 "O&	c #243BA6",
       
  3516 "P&	c #263AA7",
       
  3517 "Q&	c #273BA7",
       
  3518 "R&	c #263AA6",
       
  3519 "S&	c #223BA6",
       
  3520 "T&	c #1D3BA6",
       
  3521 "U&	c #173CA6",
       
  3522 "V&	c #133DA5",
       
  3523 "W&	c #1B3DA6",
       
  3524 "X&	c #193DA5",
       
  3525 "Y&	c #123DA4",
       
  3526 "Z&	c #163CA5",
       
  3527 "`&	c #213CA6",
       
  3528 " *	c #273BA8",
       
  3529 ".*	c #263BA7",
       
  3530 "+*	c #253BA5",
       
  3531 "@*	c #263BA5",
       
  3532 "#*	c #1C3BA6",
       
  3533 "$*	c #1B3BA9",
       
  3534 "%*	c #133BA8",
       
  3535 "&*	c #0A3BA7",
       
  3536 "**	c #083AA6",
       
  3537 "=*	c #123CA5",
       
  3538 "-*	c #0839A8",
       
  3539 ";*	c #0239A6",
       
  3540 ">*	c #123AA8",
       
  3541 ",*	c #1F49C8",
       
  3542 "'*	c #2F4DA4",
       
  3543 ")*	c #2E4DA3",
       
  3544 "!*	c #384CA4",
       
  3545 "~*	c #3C4DA7",
       
  3546 "{*	c #394EA7",
       
  3547 "]*	c #3B4CA5",
       
  3548 "^*	c #3C52B1",
       
  3549 "/*	c #3551A8",
       
  3550 "(*	c #3759BE",
       
  3551 "_*	c #4161C7",
       
  3552 ":*	c #0033A8",
       
  3553 "<*	c #596FA9",
       
  3554 "[*	c #2F4DA3",
       
  3555 "}*	c #2D4BA5",
       
  3556 "|*	c #2E4CA4",
       
  3557 "1*	c #2C4AA5",
       
  3558 "2*	c #2D4BA4",
       
  3559 "3*	c #354DA4",
       
  3560 "4*	c #3A4BA4",
       
  3561 "5*	c #394DA6",
       
  3562 "6*	c #4056AD",
       
  3563 "7*	c #445BBB",
       
  3564 "8*	c #B5B7B4",
       
  3565 "9*	c #1B2F85",
       
  3566 "0*	c #242F79",
       
  3567 "a*	c #B5B5B5",
       
  3568 "b*	c #B5B2B6",
       
  3569 "c*	c #C0C3C3",
       
  3570 "d*	c #E3E3E4",
       
  3571 "e*	c #EBEDEA",
       
  3572 ". + @ + # $ % & # $ % & # $ % & # $ % & & * = - ; > , ' ) ! ~ { { { { { { { ] ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / / / ( / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / _ _ / / : / < [ } | | | 1 1 ",
       
  3573 "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 ",
       
  3574 "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 | | ",
       
  3575 "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 ",
       
  3576 "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.} ",
       
  3577 "-.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.} ",
       
  3578 " +.+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 ",
       
  3579 "/+(+_+#+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 } ",
       
  3580 "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 ",
       
  3581 "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.",
       
  3582 "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 ",
       
  3583 "#@$@$@%@%@$@#@&@#@#@#@&@#@#@#@&@#@#@#@*@=@-@;+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.",
       
  3584 "#@$@~@~@~@{@]@^@/@{@]@^@/@{@]@^@/@{@]@(@_@:@<@[@}@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 ",
       
  3585 "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.",
       
  3586 "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 ",
       
  3587 "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.",
       
  3588 "@#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 ",
       
  3589 ":#<#[#}#|#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.",
       
  3590 "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 ",
       
  3591 "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.",
       
  3592 "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 ",
       
  3593 "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.",
       
  3594 "+$Z..$$$%$+$&$*$%$+$&$*$%$+$&$*$%$+$&$*$=$-$;$>$,$'$)$!$~${$]$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$/$/$/$/$($($_$_$:$:$p+z.Y ",
       
  3595 "<$<$<$<$<$[$}$|$<$[$}$|$<$[$}$|$<$[$}$|$1$2$3$4$5$)$6$7$8$9$0$a$a$a$a$a$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$^$/$/$/$^$^$^$/$/$/$/$/$/$/$/$/$/$/$/$/$/$($($_$_$:$:$`.z.A.",
       
  3596 "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 ",
       
  3597 "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.",
       
  3598 "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 ",
       
  3599 "'%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.",
       
  3600 "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 ",
       
  3601 "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.",
       
  3602 "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 ",
       
  3603 "/$/$/$/$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.",
       
  3604 "&&*&=&-&=&;&>&,&=&;&>&,&=&;&>&,&=&;&>&'&)&!&~&{&]&^&/&(&_&:&<&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 ",
       
  3605 "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.",
       
  3606 "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 ",
       
  3607 "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.",
       
  3608 "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 ",
       
  3609 "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.",
       
  3610 "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 ",
       
  3611 "'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*)*'*!*~*{*]*^*^*^*/*/*/*/*/*/*/*^*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*^*/*/*/*/*/*h h ^*h h ^*^*h h ^*^*^*^*h ^*^*^*^*h ^*^*^*(*_*_*_*_*_$:*:$<*`.z.} ",
       
  3612 "'*'*'*'*'*[*}*|*'*[*}*|*'*[*}*|*'*[*}*|*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 } ",
       
  3613 "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 ",
       
  3614 "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 | | ",
       
  3615 "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 ",
       
  3616 "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 ",
       
  3617 "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 "};
       
  3618 
       
  3619 
       
  3620 static char * tabmiddle_xpm[] = {
       
  3621 "33 42 32 1",
       
  3622 " 	c None",
       
  3623 ".	c #CECFEF",
       
  3624 "+	c #CECBE7",
       
  3625 "@	c #C6C7E7",
       
  3626 "#	c #C6CBE7",
       
  3627 "$	c #BDBEDE",
       
  3628 "%	c #BDC3DE",
       
  3629 "&	c #CECBEF",
       
  3630 "*	c #B5B6D6",
       
  3631 "=	c #ADAECE",
       
  3632 "-	c #ADB2CE",
       
  3633 ";	c #BDBAD6",
       
  3634 ">	c #B5BAD6",
       
  3635 ",	c #C6C3DE",
       
  3636 "'	c #ADAAC6",
       
  3637 ")	c #B5B2CE",
       
  3638 "!	c #B5B6CE",
       
  3639 "~	c #A5A2BD",
       
  3640 "{	c #A5A6BD",
       
  3641 "]	c #9C9EB5",
       
  3642 "^	c #9CA2BD",
       
  3643 "/	c #ADAEC6",
       
  3644 "(	c #C6C3E7",
       
  3645 "_	c #9C9AB5",
       
  3646 ":	c #A5A6C6",
       
  3647 "<	c #949AAD",
       
  3648 "[	c #A5AAC6",
       
  3649 "}	c #9496AD",
       
  3650 "|	c #BDBADE",
       
  3651 "1	c #BDBED6",
       
  3652 "2	c #9CA2B5",
       
  3653 "3	c #A5AABD",
       
  3654 "..........................+@.#.#.",
       
  3655 "........................$@%&#.#..",
       
  3656 "......................**$$@@&#.#.",
       
  3657 ".....................=-;>,%+@.#..",
       
  3658 "....................'')!$$@@&#.#.",
       
  3659 "...................~{=)$$@@&#.#..",
       
  3660 "..................]^'/;;(%&#.#...",
       
  3661 "................._]:/*>,%&@.#.#..",
       
  3662 ".................<{[)!$%+@.#.#...",
       
  3663 "................}~{=!$%@@.#......",
       
  3664 "................]^/-|$@@.#.......",
       
  3665 "................]'/*;@@&#........",
       
  3666 "...............<~[)>,%&#.#.......",
       
  3667 "...............]~=)$%+#.#........",
       
  3668 "...............]'/;1@@.#.........",
       
  3669 "...............~{)*,%&#..........",
       
  3670 "...............2/-$$@#...........",
       
  3671 "...............~[*>(@&#..........",
       
  3672 "...............^=)$%+#...........",
       
  3673 "...............{'*>(@.#..........",
       
  3674 "...............^=)$%+#...........",
       
  3675 "...............{'*>(@.#..........",
       
  3676 "...............^=)$%+#...........",
       
  3677 "...............{'*>(@.#..........",
       
  3678 "...............^=)$%+#...........",
       
  3679 "...............{'*>(@.#..........",
       
  3680 "...............^=)$%+#...........",
       
  3681 "...............{'*>@@.#..........",
       
  3682 "...............^=!$%&#...........",
       
  3683 "...............{/*;@@.#..........",
       
  3684 "...............{)!$%&#...........",
       
  3685 "..............]'/;1@@.#..........",
       
  3686 "..............23)>,%&#...........",
       
  3687 "..............~=-$$@@.#..........",
       
  3688 ".............]{/*;@@.#...........",
       
  3689 "............<^[)>,%&#............",
       
  3690 "............]{/!$%@@.#...........",
       
  3691 "..........]^[-!$%@@.#............",
       
  3692 ".........]^3/!>$@@.#.............",
       
  3693 ".......<]^3/!>$@@&#..............",
       
  3694 ".....<]2{[/!>$%@&#.#.............",
       
  3695 "}<<_]2{3/-!>$%@&#.#.............."};
       
  3696 
       
  3697 
       
  3698 static char * tabselectedbeginn_xpm[] = {
       
  3699 "33 39 28 1",
       
  3700 " 	c None",
       
  3701 ".	c #CECFEF",
       
  3702 "+	c #EFF3EF",
       
  3703 "@	c #FFFBFF",
       
  3704 "#	c #F7FBF7",
       
  3705 "$	c #FFFFFF",
       
  3706 "%	c #EFEFEF",
       
  3707 "&	c #F7F7F7",
       
  3708 "*	c #DEDFDE",
       
  3709 "=	c #E7E7E7",
       
  3710 "-	c #D6D3D6",
       
  3711 ";	c #DEE3DE",
       
  3712 ">	c #EFEBEF",
       
  3713 ",	c #F7F3F7",
       
  3714 "'	c #CECBCE",
       
  3715 ")	c #CECFCE",
       
  3716 "!	c #D6D7D6",
       
  3717 "~	c #DEDBDE",
       
  3718 "{	c #E7EBE7",
       
  3719 "]	c #C6C7C6",
       
  3720 "^	c #E7E3E7",
       
  3721 "/	c #BDC3BD",
       
  3722 "(	c #CED3CE",
       
  3723 "_	c #BDBABD",
       
  3724 ":	c #C6C3C6",
       
  3725 "<	c #C6CBC6",
       
  3726 "[	c #D6DBD6",
       
  3727 "}	c #BDBEBD",
       
  3728 "..........................+@#$#$$",
       
  3729 "........................%%&&@#$#$",
       
  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 static char * tabselectedend_xpm[] = {
       
  3770 "33 42 33 1",
       
  3771 " 	c None",
       
  3772 ".	c #FFFFFF",
       
  3773 "+	c #CECBE7",
       
  3774 "@	c #C6C7E7",
       
  3775 "#	c #CECFEF",
       
  3776 "$	c #C6CBE7",
       
  3777 "%	c #BDBEDE",
       
  3778 "&	c #BDC3DE",
       
  3779 "*	c #CECBEF",
       
  3780 "=	c #B5B6D6",
       
  3781 "-	c #ADAECE",
       
  3782 ";	c #ADB2CE",
       
  3783 ">	c #BDBAD6",
       
  3784 ",	c #B5BAD6",
       
  3785 "'	c #C6C3DE",
       
  3786 ")	c #ADAAC6",
       
  3787 "!	c #B5B2CE",
       
  3788 "~	c #B5B6CE",
       
  3789 "{	c #A5A2BD",
       
  3790 "]	c #A5A6BD",
       
  3791 "^	c #9C9EB5",
       
  3792 "/	c #9CA2BD",
       
  3793 "(	c #ADAEC6",
       
  3794 "_	c #C6C3E7",
       
  3795 ":	c #9C9AB5",
       
  3796 "<	c #A5A6C6",
       
  3797 "[	c #949AAD",
       
  3798 "}	c #A5AAC6",
       
  3799 "|	c #9496AD",
       
  3800 "1	c #BDBADE",
       
  3801 "2	c #BDBED6",
       
  3802 "3	c #9CA2B5",
       
  3803 "4	c #A5AABD",
       
  3804 "..........................+@#$#$#",
       
  3805 "........................%@&*$#$##",
       
  3806 "......................==%%@@*$#$#",
       
  3807 ".....................-;>,'&+@#$##",
       
  3808 "....................))!~%%@@*$#$#",
       
  3809 "...................{]-!%%@@*$#$##",
       
  3810 "..................^/)(>>_&*$#$###",
       
  3811 ".................:^<(=,'&*@#$#$##",
       
  3812 ".................[]}!~%&+@#$#$###",
       
  3813 "................|{]-~%&@@#$######",
       
  3814 "................^/(;1%@@#$#######",
       
  3815 "................^)(=>@@*$########",
       
  3816 "...............[{}!,'&*$#$#######",
       
  3817 "...............^{-!%&+$#$########",
       
  3818 "...............^)(>2@@#$#########",
       
  3819 "...............{]!='&*$##########",
       
  3820 "...............3(;%%@$###########",
       
  3821 "...............{}=,_@*$##########",
       
  3822 ".............../-!%&+$###########",
       
  3823 "...............])=,_@#$##########",
       
  3824 ".............../-!%&+$###########",
       
  3825 "...............])=,_@#$##########",
       
  3826 ".............../-!%&+$###########",
       
  3827 "...............])=,_@#$##########",
       
  3828 ".............../-!%&+$###########",
       
  3829 "...............])=,_@#$##########",
       
  3830 ".............../-!%&+$###########",
       
  3831 "...............])=,@@#$##########",
       
  3832 ".............../-~%&*$###########",
       
  3833 "...............](=>@@#$##########",
       
  3834 "...............]!~%&*$###########",
       
  3835 "..............^)(>2@@#$##########",
       
  3836 "..............34!,'&*$###########",
       
  3837 "..............{-;%%@@#$##########",
       
  3838 ".............^](=>@@#$###########",
       
  3839 "............[/}!,'&*$############",
       
  3840 "............^](~%&@@#$###########",
       
  3841 "..........^/};~%&@@#$############",
       
  3842 ".........^/4(~,%@@#$#############",
       
  3843 ".......[^/4(~,%@@*$##############",
       
  3844 ".....[^3]}(~,%&@*$#$#############",
       
  3845 "|[[:^3]4(;~,%&@*$#$##############"};
       
  3846 
       
  3847 
       
  3848 static char * tabend_xpm[] = {
       
  3849 "33 42 3 1",
       
  3850 " 	c None",
       
  3851 ".	c #CECFEF",
       
  3852 "+	c #FFFFFF",
       
  3853 "..........................+++++++",
       
  3854 "........................+++++++++",
       
  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 QColor fromHsl(QColor c)
       
  3900 {
       
  3901     const qreal h = c.hueF();
       
  3902     const qreal s = c.saturationF();
       
  3903     const qreal l = c.valueF();
       
  3904 
       
  3905     qreal ca[3] = {0, 0, 0};
       
  3906 
       
  3907     if (s == 0 || h == 1) {
       
  3908         // achromatic case 
       
  3909         ca[0] = ca[1] = ca[2] = l;
       
  3910     } else { 
       
  3911         // chromatic case 
       
  3912         qreal temp2; 
       
  3913         if (l < qreal(0.5)) 
       
  3914             temp2 = l * (qreal(1.0) + s); 
       
  3915         else 
       
  3916             temp2 = l + s - (l * s); 
       
  3917 
       
  3918         const qreal temp1 = (qreal(2.0) * l) - temp2; 
       
  3919         qreal temp3[3] = { h + (qreal(1.0) / qreal(3.0)), 
       
  3920             h, 
       
  3921             h - (qreal(1.0) / qreal(3.0)) }; 
       
  3922 
       
  3923         for (int i = 0; i != 3; ++i) { 
       
  3924             if (temp3[i] < qreal(0.0)) 
       
  3925                 temp3[i] += qreal(1.0); 
       
  3926             else if (temp3[i] > qreal(1.0)) 
       
  3927                 temp3[i] -= qreal(1.0);
       
  3928 
       
  3929             const qreal sixtemp3 = temp3[i] * qreal(6.0);
       
  3930 
       
  3931             if (sixtemp3 < qreal(1.0)) 
       
  3932                 ca[i] = ((temp1 + (temp2 - temp1) * sixtemp3)); 
       
  3933             else if ((temp3[i] * qreal(2.0)) < qreal(1.0)) 
       
  3934                 ca[i] = (temp2); 
       
  3935             else if ((temp3[i] * qreal(3.0)) < qreal(2.0)) 
       
  3936                 ca[i] = temp1 + (temp2 -temp1) * (qreal(2.0) /qreal(3.0) - temp3[i]) * qreal(6.0);
       
  3937             else ca[i] = temp1;
       
  3938         }
       
  3939     }
       
  3940     
       
  3941     return QColor::fromRgbF(ca[0], ca[1], ca[2]);
       
  3942 }
       
  3943 
       
  3944 #define Q_MAX_3(a, b, c) ( ( a > b && a > c) ? a : (b > c ? b : c) )
       
  3945 #define Q_MIN_3(a, b, c) ( ( a < b && a < c) ? a : (b < c ? b : c) )
       
  3946 
       
  3947 QColor toHsl(QColor c)
       
  3948 {
       
  3949     QColor color; 
       
  3950     qreal h;
       
  3951     qreal s;
       
  3952     qreal l;
       
  3953 
       
  3954     const qreal r = c.redF();
       
  3955     const qreal g = c.greenF();
       
  3956     const qreal b = c.blueF();
       
  3957     const qreal max = Q_MAX_3(r, g, b); 
       
  3958     const qreal min = Q_MIN_3(r, g, b); 
       
  3959     const qreal delta = max - min;  
       
  3960     const qreal delta2 = max + min; 
       
  3961     const qreal lightness = qreal(0.5) * delta2; 
       
  3962     l = (lightness);
       
  3963     if (qFuzzyIsNull(delta)) { 
       
  3964         // achromatic case, hue is undefined 
       
  3965         h = 0;
       
  3966         s = 0; 
       
  3967     } else {
       
  3968         // chromatic case 
       
  3969         qreal hue = 0; 
       
  3970         if (lightness < qreal(0.5)) 
       
  3971             s = ((delta / delta2)); 
       
  3972         else 
       
  3973             s = ((delta / (qreal(2.0) - delta2))); 
       
  3974         if (qFuzzyCompare(r, max)) { 
       
  3975             hue = ((g - b) /delta); 
       
  3976         } else if (qFuzzyCompare(g, max)) { 
       
  3977             hue = (2.0 + (b - r) / delta); 
       
  3978         } else if (qFuzzyCompare(b, max)) { 
       
  3979             hue = (4.0 + (r - g) / delta); 
       
  3980         } else { 
       
  3981             Q_ASSERT_X(false, "QColor::toHsv", "internal error"); 
       
  3982         }
       
  3983         hue *= 60.0; 
       
  3984         if (hue < 0.0) 
       
  3985             hue += 360.0; 
       
  3986         h = (hue * 100); 
       
  3987     }
       
  3988 
       
  3989     h = h / 36000;
       
  3990 
       
  3991     return QColor::fromHsvF(h, s, l);
       
  3992 }
       
  3993 
       
  3994 void tintColor(QColor &color, QColor tintColor, qreal _saturation)
       
  3995 {
       
  3996     tintColor = toHsl(tintColor);
       
  3997     color = toHsl(color);
       
  3998     qreal hue = tintColor.hueF();
       
  3999 
       
  4000     qreal saturation = color.saturationF();
       
  4001     if (_saturation)
       
  4002         saturation = _saturation;
       
  4003     qreal lightness = color.valueF();
       
  4004     color.setHsvF(hue, saturation, lightness);
       
  4005 
       
  4006     color = fromHsl(color);
       
  4007     color.toRgb();
       
  4008 }
       
  4009 
       
  4010 void tintImagePal(QImage *image, QColor color, qreal saturation)
       
  4011 {
       
  4012     QVector<QRgb> colorTable = image->colorTable();
       
  4013     for (int i=2;i< colorTable.size();i++) {
       
  4014         QColor c(toHsl(colorTable.at(i)));
       
  4015         tintColor(c, color, saturation);
       
  4016         colorTable[i] = c.rgb();
       
  4017     }
       
  4018     image->setColorTable(colorTable);
       
  4019 }
       
  4020 
       
  4021 
       
  4022 void tintImage(QImage *image, QColor color, qreal saturation)
       
  4023 {
       
  4024     *image = image->convertToFormat(QImage::Format_RGB32);
       
  4025 
       
  4026     for (int x = 0; x < image->width(); x++)
       
  4027         for (int y = 0; y < image->height(); y++) {
       
  4028             QColor c(image->pixel(x,y));
       
  4029             tintColor(c, color, saturation);
       
  4030             image->setPixel(x, y, c.rgb());
       
  4031         }
       
  4032 }
       
  4033 
       
  4034 #endif //Q_WS_WINCE_WM
       
  4035 
       
  4036 
       
  4037 enum QSliderDirection { SliderUp, SliderDown, SliderLeft, SliderRight };
       
  4038 
       
  4039 #ifdef Q_WS_WINCE_WM
       
  4040 
       
  4041 void QWindowsMobileStylePrivate::tintImagesButton(QColor color)
       
  4042 {
       
  4043        if (currentTintButton == color)
       
  4044         return;
       
  4045 
       
  4046        imageTabEnd = QImage(tabend_xpm);
       
  4047        imageTabSelectedEnd = QImage(tabselectedend_xpm);
       
  4048        imageTabSelectedBegin = QImage(tabselectedbeginn_xpm);
       
  4049        imageTabMiddle = QImage(tabmiddle_xpm);
       
  4050        tintImage(&imageTabEnd, color, 0.0);
       
  4051        tintImage(&imageTabSelectedEnd, color, 0.0);
       
  4052        tintImage(&imageTabSelectedBegin, color, 0.0);
       
  4053        tintImage(&imageTabMiddle, color, 0.0);
       
  4054 
       
  4055        if (!doubleControls) {
       
  4056            int height = imageTabMiddle.height() / 2 + 1;
       
  4057            imageTabEnd = imageTabEnd.scaledToHeight(height);
       
  4058            imageTabMiddle = imageTabMiddle.scaledToHeight(height);
       
  4059            imageTabSelectedEnd = imageTabSelectedEnd.scaledToHeight(height);
       
  4060            imageTabSelectedBegin = imageTabSelectedBegin.scaledToHeight(height);
       
  4061        }
       
  4062 }
       
  4063 
       
  4064 void QWindowsMobileStylePrivate::tintImagesHigh(QColor color)
       
  4065 {
       
  4066     if (currentTintHigh == color)
       
  4067         return;
       
  4068     currentTintHigh = color;
       
  4069     tintListViewHighlight(color);
       
  4070     imageScrollbarHandleUpHigh = imageScrollbarHandleUp;
       
  4071     imageScrollbarHandleDownHigh = imageScrollbarHandleDown;
       
  4072     tintImagePal(&imageScrollbarHandleDownHigh, color, qreal(0.8));
       
  4073     tintImagePal(&imageScrollbarHandleUpHigh, color, qreal(0.8));
       
  4074 }
       
  4075 
       
  4076 void QWindowsMobileStylePrivate::tintListViewHighlight(QColor color)
       
  4077 {
       
  4078     imageListViewHighlightCornerRight = QImage(listviewhighcornerright_xpm);
       
  4079     tintImage(&imageListViewHighlightCornerRight, color, qreal(0.0));
       
  4080 
       
  4081     imageListViewHighlightCornerLeft = QImage(listviewhighcornerleft_xpm);
       
  4082     tintImage(&imageListViewHighlightCornerLeft, color, qreal(0.0));
       
  4083 
       
  4084     imageListViewHighlightMiddle = QImage(listviewhighmiddle_xpm);
       
  4085     tintImage(&imageListViewHighlightMiddle, color, qreal(0.0));
       
  4086      
       
  4087      int height = imageListViewHighlightMiddle.height();
       
  4088      if (!doubleControls) {
       
  4089          height = height / 2;
       
  4090          imageListViewHighlightCornerRight = imageListViewHighlightCornerRight.scaledToHeight(height);
       
  4091          imageListViewHighlightCornerLeft = imageListViewHighlightCornerLeft.scaledToHeight(height);
       
  4092          imageListViewHighlightMiddle = imageListViewHighlightMiddle.scaledToHeight(height);
       
  4093      }
       
  4094 }
       
  4095 
       
  4096 #endif //Q_WS_WINCE_WM
       
  4097 
       
  4098 void QWindowsMobileStylePrivate::setupWindowsMobileStyle65()
       
  4099 {
       
  4100 #ifdef Q_WS_WINCE_WM
       
  4101     wm65 = qt_wince_is_windows_mobile_65();
       
  4102     if (wm65) {
       
  4103         imageScrollbarHandleUp =  QImage(sbhandleup_xpm);
       
  4104         imageScrollbarHandleDown = QImage(sbhandledown_xpm);
       
  4105         imageScrollbarGripUp = QImage(sbgripup_xpm);
       
  4106         imageScrollbarGripDown = QImage(sbgripdown_xpm);
       
  4107         imageScrollbarGripMiddle = QImage(sbgripmiddle_xpm);
       
  4108 
       
  4109         if (!doubleControls) {
       
  4110             imageScrollbarHandleUp = imageScrollbarHandleUp.scaledToHeight(imageScrollbarHandleUp.height() / 2);
       
  4111             imageScrollbarHandleDown = imageScrollbarHandleDown.scaledToHeight(imageScrollbarHandleDown.height() / 2);
       
  4112             imageScrollbarGripMiddle = imageScrollbarGripMiddle.scaledToHeight(imageScrollbarGripMiddle.height() / 2);
       
  4113             imageScrollbarGripUp = imageScrollbarGripUp.scaledToHeight(imageScrollbarGripUp.height() / 2);
       
  4114             imageScrollbarGripDown = imageScrollbarGripDown.scaledToHeight(imageScrollbarGripDown.height() / 2);
       
  4115         } else {
       
  4116         }
       
  4117         tintImagesHigh(Qt::blue);
       
  4118     }
       
  4119 #endif //Q_WS_WINCE_WM
       
  4120 }
       
  4121 
       
  4122 void QWindowsMobileStylePrivate::drawTabBarTab(QPainter *painter, const QStyleOptionTab *tab)
       
  4123 {
       
  4124 #ifdef Q_WS_WINCE_WM
       
  4125     if (wm65) {
       
  4126         tintImagesButton(tab->palette.button().color());
       
  4127         QRect r;
       
  4128         r.setTopLeft(tab->rect.topRight() - QPoint(imageTabMiddle.width(), 0));
       
  4129         r.setBottomRight(tab->rect.bottomRight());
       
  4130         if (tab->state & QStyle::State_Selected) {
       
  4131             painter->fillRect(tab->rect, tab->palette.window());
       
  4132         } else {
       
  4133             painter->fillRect(tab->rect, QColor(imageTabMiddle.pixel(0,0)));
       
  4134         }
       
  4135         if  (tab->selectedPosition ==  QStyleOptionTab::NextIsSelected) {
       
  4136             painter->drawImage(r, imageTabSelectedBegin);
       
  4137         } else if (tab->position == QStyleOptionTab::End ||
       
  4138             tab->position == QStyleOptionTab::OnlyOneTab) {
       
  4139                 if (!(tab->state & QStyle::State_Selected)) {
       
  4140                     painter->drawImage(r, imageTabEnd);
       
  4141                 }
       
  4142         } else if (tab->state & QStyle::State_Selected) {
       
  4143             painter->drawImage(r, imageTabSelectedEnd);
       
  4144         } else {
       
  4145             painter->drawImage(r, imageTabMiddle);
       
  4146         }
       
  4147         if (tab->position == QStyleOptionTab::Beginning && ! (tab->state & QStyle::State_Selected)) {
       
  4148             painter->drawImage(tab->rect.topLeft() - QPoint(imageTabMiddle.width() * 0.60, 0), imageTabSelectedEnd);
       
  4149         }
       
  4150         //imageTabBarBig
       
  4151         return;
       
  4152     }
       
  4153 #endif //Q_WS_WINCE_WM
       
  4154     painter->save();
       
  4155     painter->setPen(tab->palette.shadow().color());
       
  4156     if (doubleControls) {
       
  4157         QPen pen = painter->pen();
       
  4158         pen.setWidth(2);
       
  4159         pen.setCapStyle(Qt::FlatCap);
       
  4160         painter->setPen(pen);
       
  4161     }
       
  4162     if(tab->shape == QTabBar::RoundedNorth) {
       
  4163         if (tab->state & QStyle::State_Selected) {
       
  4164             painter->fillRect(tab->rect, tab->palette.light());
       
  4165             painter->drawLine(tab->rect.topRight(), tab->rect.bottomRight());
       
  4166         }
       
  4167         else {
       
  4168             painter->fillRect(tab->rect, tab->palette.button());
       
  4169             painter->drawLine(tab->rect.bottomLeft() , tab->rect.bottomRight());
       
  4170             painter->drawLine(tab->rect.topRight(), tab->rect.bottomRight());
       
  4171         }
       
  4172     }
       
  4173     else if(tab->shape == QTabBar::RoundedSouth) {
       
  4174         if (tab->state & QStyle::State_Selected) {
       
  4175             painter->fillRect(tab->rect.adjusted(0,-2,0,0), tab->palette.light());
       
  4176             painter->drawLine(tab->rect.topRight(), tab->rect.bottomRight());
       
  4177         }
       
  4178         else {
       
  4179             painter->fillRect(tab->rect, tab->palette.button());
       
  4180             if (doubleControls)
       
  4181                 painter->drawLine(tab->rect.topLeft() + QPoint(0,1), tab->rect.topRight() + QPoint(0,1));
       
  4182             else
       
  4183                 painter->drawLine(tab->rect.topLeft(), tab->rect.topRight());
       
  4184             painter->drawLine(tab->rect.topRight(), tab->rect.bottomRight());
       
  4185         }
       
  4186     }
       
  4187     else if(tab->shape == QTabBar::RoundedEast) {
       
  4188         if (tab->state & QStyle::State_Selected) {
       
  4189             painter->fillRect(tab->rect, tab->palette.light());
       
  4190             painter->drawLine(tab->rect.topLeft(), tab->rect.topRight());
       
  4191         }
       
  4192         else {
       
  4193             painter->fillRect(tab->rect, tab->palette.button());
       
  4194             painter->drawLine(tab->rect.topLeft(), tab->rect.bottomLeft());
       
  4195             painter->drawLine(tab->rect.topLeft(), tab->rect.topRight());
       
  4196         }
       
  4197     }
       
  4198     else if(tab->shape == QTabBar::RoundedWest) {
       
  4199         if (tab->state & QStyle::State_Selected) {
       
  4200             painter->fillRect(tab->rect, tab->palette.light());
       
  4201             painter->drawLine(tab->rect.bottomLeft(), tab->rect.bottomRight());
       
  4202         }
       
  4203         else {
       
  4204             painter->fillRect(tab->rect, tab->palette.button());
       
  4205             painter->drawLine(tab->rect.topRight(), tab->rect.bottomRight());
       
  4206             painter->drawLine(tab->rect.bottomLeft(), tab->rect.bottomRight());
       
  4207         }
       
  4208     }
       
  4209     painter->restore();
       
  4210 }
       
  4211 
       
  4212 void QWindowsMobileStylePrivate::drawPanelItemViewSelected(QPainter *painter, const QStyleOptionViewItemV4 *option, QRect rect)
       
  4213 {
       
  4214 #ifdef Q_WS_WINCE_WM
       
  4215     if (wm65) {
       
  4216         QRect r;
       
  4217         if (rect.isValid())
       
  4218             r = rect;
       
  4219         else 
       
  4220             r = option->rect;
       
  4221         tintImagesHigh(option->palette.highlight().color());
       
  4222 
       
  4223         painter->setPen(QColor(Qt::lightGray));
       
  4224 
       
  4225         if (option->viewItemPosition ==  QStyleOptionViewItemV4::Middle) {
       
  4226             painter->drawImage(r, imageListViewHighlightMiddle);
       
  4227         } else if (option->viewItemPosition ==  QStyleOptionViewItemV4::Beginning) {
       
  4228             painter->drawImage(r.adjusted(10, 0, 0, 0), imageListViewHighlightMiddle);
       
  4229         } else if (option->viewItemPosition ==  QStyleOptionViewItemV4::End) {
       
  4230             painter->drawImage(r.adjusted(0, 0, -10, 0), imageListViewHighlightMiddle);
       
  4231         } else {
       
  4232             painter->drawImage(r.adjusted(10, 0, -10, 0), imageListViewHighlightMiddle);
       
  4233         }
       
  4234 
       
  4235         QImage cornerLeft = imageListViewHighlightCornerLeft;
       
  4236         QImage cornerRight = imageListViewHighlightCornerRight;
       
  4237 
       
  4238         int width = r.width() > cornerRight.width() ? r.width() : cornerRight.width();
       
  4239 
       
  4240         if ((width * 2) > r.width()) {
       
  4241             width = (r.width() - 5) / 2;
       
  4242         }
       
  4243 
       
  4244         cornerLeft = cornerLeft.scaled(width, r.height());
       
  4245         cornerRight = cornerRight.scaled(width, r.height());
       
  4246 
       
  4247         if ((option->viewItemPosition ==  QStyleOptionViewItemV4::Beginning) || (option->viewItemPosition ==  QStyleOptionViewItemV4::OnlyOne) || !option->viewItemPosition) {
       
  4248             painter->drawImage(r.topLeft(), cornerLeft);
       
  4249         }
       
  4250         if ((option->viewItemPosition ==  QStyleOptionViewItemV4::End) || (option->viewItemPosition ==  QStyleOptionViewItemV4::OnlyOne) || !option->viewItemPosition) {
       
  4251             painter->drawImage(r.topRight() - QPoint(cornerRight.width(),0), cornerRight);
       
  4252         }
       
  4253         return;
       
  4254     }
       
  4255 #endif //Q_WS_WINCE_WM
       
  4256     QPalette::ColorGroup cg = option->state & QStyle::State_Enabled
       
  4257                                       ? QPalette::Normal : QPalette::Disabled;
       
  4258 
       
  4259     if (rect.isValid())
       
  4260         painter->fillRect(rect, option->palette.brush(cg, QPalette::Highlight));
       
  4261     else
       
  4262         painter->fillRect(option->rect, option->palette.brush(cg, QPalette::Highlight));
       
  4263 }
       
  4264 
       
  4265 void QWindowsMobileStylePrivate::drawScrollbarGrip(QPainter *p, QStyleOptionSlider *newScrollbar, const QStyleOptionComplex *option, bool drawCompleteFrame)
       
  4266 {
       
  4267 #ifdef Q_WS_WINCE_WM
       
  4268     if (wm65) {
       
  4269         if (newScrollbar->orientation == Qt::Horizontal) {
       
  4270             QTransform transform;
       
  4271             transform.rotate(-90);
       
  4272             QRect r = newScrollbar->rect;
       
  4273             p->drawImage(r.adjusted(10, 0, -10, 0), imageScrollbarGripMiddle.transformed(transform));
       
  4274             p->drawImage(r.topLeft(), imageScrollbarGripUp.transformed(transform));
       
  4275             p->drawImage(r.topRight() - QPoint(imageScrollbarGripDown.height() - 1, 0), imageScrollbarGripDown.transformed(transform));
       
  4276         } else {
       
  4277             QRect r = newScrollbar->rect;
       
  4278             p->drawImage(r.adjusted(0, 10, 0, -10), imageScrollbarGripMiddle);
       
  4279             p->drawImage(r.topLeft(), imageScrollbarGripUp);
       
  4280             p->drawImage(r.bottomLeft() - QPoint(0, imageScrollbarGripDown.height() - 1), imageScrollbarGripDown);
       
  4281         }
       
  4282         return ;
       
  4283     }
       
  4284 #endif
       
  4285         if (newScrollbar->orientation == Qt::Horizontal) {
       
  4286             p->fillRect(newScrollbar->rect,option->palette.button());
       
  4287             QRect r = newScrollbar->rect;
       
  4288             p->drawLine(r.topLeft(), r.bottomLeft());
       
  4289             p->drawLine(r.topRight(), r.bottomRight());
       
  4290             if (smartphone) {
       
  4291                 p->drawLine(r.topLeft(), r.topRight());
       
  4292                 p->drawLine(r.bottomLeft(), r.bottomRight());
       
  4293             }
       
  4294         }
       
  4295         else {
       
  4296             p->fillRect(newScrollbar->rect,option->palette.button());
       
  4297             QRect r = newScrollbar->rect;
       
  4298             p->drawLine(r.topLeft(), r.topRight());
       
  4299             p->drawLine(r.bottomLeft(), r.bottomRight());
       
  4300             if (smartphone) {
       
  4301                 p->drawLine(r.topLeft(), r.bottomLeft());
       
  4302                 p->drawLine(r.topRight(), r.bottomRight());
       
  4303             }
       
  4304         }
       
  4305         if (newScrollbar->state & QStyle::State_HasFocus) {
       
  4306             QStyleOptionFocusRect fropt;
       
  4307             fropt.QStyleOption::operator=(*newScrollbar);
       
  4308             fropt.rect.setRect(newScrollbar->rect.x() + 2, newScrollbar->rect.y() + 2,
       
  4309                 newScrollbar->rect.width() - 5,
       
  4310                 newScrollbar->rect.height() - 5);
       
  4311         }
       
  4312     int gripMargin = doubleControls ? 4 : 2;
       
  4313     int doubleLines = doubleControls ? 2 : 1;
       
  4314     //If there is a frame around the scrollbar (abstractScrollArea),
       
  4315     //then the margin is different, because of the missing frame
       
  4316     int gripMarginFrame = doubleControls ? 3 : 1;
       
  4317     if (drawCompleteFrame)
       
  4318         gripMarginFrame = 0;
       
  4319     //draw grips
       
  4320     if (!smartphone)
       
  4321         if (newScrollbar->orientation == Qt::Horizontal) {
       
  4322             for (int i = -3; i < 3; i += 2) {
       
  4323                 p->drawLine(
       
  4324                     QPoint(newScrollbar->rect.center().x() + i * doubleLines + 1,
       
  4325                     newScrollbar->rect.top() + gripMargin +gripMarginFrame),
       
  4326                     QPoint(newScrollbar->rect.center().x() + i * doubleLines + 1,
       
  4327                     newScrollbar->rect.bottom() - gripMargin));
       
  4328             }
       
  4329         } else {
       
  4330             for (int i = -2; i < 4 ; i += 2) {
       
  4331                 p->drawLine(
       
  4332                     QPoint(newScrollbar->rect.left() + gripMargin + gripMarginFrame ,
       
  4333                     newScrollbar->rect.center().y() + 1 + i * doubleLines - 1),
       
  4334                     QPoint(newScrollbar->rect.right() - gripMargin,
       
  4335                     newScrollbar->rect.center().y() + 1 + i * doubleLines - 1));
       
  4336             }
       
  4337         }
       
  4338         if (!smartphone) {
       
  4339             QRect r;
       
  4340             if (doubleControls)
       
  4341                 r = option->rect.adjusted(1, 1, -1, 0);
       
  4342             else
       
  4343                 r = option->rect.adjusted(0, 0, -1, 0);
       
  4344             if (drawCompleteFrame && doubleControls)
       
  4345                 r.adjust(0, 0, 0, -1);
       
  4346             //Check if the scrollbar is part of an abstractItemView and draw the frame according
       
  4347             if (drawCompleteFrame)
       
  4348                 p->drawRect(r);
       
  4349             else
       
  4350                 if (newScrollbar->orientation == Qt::Horizontal)
       
  4351                     p->drawLine(r.topLeft(), r.topRight());
       
  4352                 else
       
  4353                     p->drawLine(r.topLeft(), r.bottomLeft());
       
  4354         }
       
  4355 }
       
  4356 
       
  4357 void QWindowsMobileStylePrivate::drawScrollbarHandleUp(QPainter *p, QStyleOptionSlider *opt, bool completeFrame, bool )
       
  4358 {
       
  4359 #ifdef Q_WS_WINCE_WM
       
  4360     if (wm65) {
       
  4361         tintImagesHigh(opt->palette.highlight().color());
       
  4362         QRect r = opt->rect;
       
  4363          if (opt->orientation == Qt::Horizontal) {
       
  4364             QTransform transform;
       
  4365             transform.rotate(-90);
       
  4366             if (opt->state & QStyle::State_Sunken)
       
  4367                 p->drawImage(r.topLeft(), imageScrollbarHandleUpHigh.transformed(transform));
       
  4368             else
       
  4369                 p->drawImage(r.topLeft(), imageScrollbarHandleUp.transformed(transform));
       
  4370          } else {
       
  4371              if (opt->state & QStyle::State_Sunken)
       
  4372                  p->drawImage(r.topLeft(), imageScrollbarHandleUpHigh);
       
  4373              else
       
  4374                  p->drawImage(r.topLeft(), imageScrollbarHandleUp);
       
  4375          }
       
  4376         return ;
       
  4377     }
       
  4378 #endif //Q_WS_WINCE_WM
       
  4379 
       
  4380     QBrush fill = opt->palette.button();
       
  4381     if (opt->state & QStyle::State_Sunken)
       
  4382         fill = opt->palette.shadow();
       
  4383 
       
  4384     QStyleOption arrowOpt = *opt;
       
  4385     if (doubleControls)
       
  4386         arrowOpt.rect = opt->rect.adjusted(4, 6, -5, -3);
       
  4387     else
       
  4388         arrowOpt.rect = opt->rect.adjusted(5, 6, -4, -3);
       
  4389 
       
  4390     bool horizontal = (opt->orientation == Qt::Horizontal);
       
  4391 
       
  4392     if (horizontal) {
       
  4393         p->fillRect(opt->rect,fill);
       
  4394         QRect r = opt->rect.adjusted(0,0,1,0);
       
  4395         p->drawLine(r.topRight(), r.bottomRight());
       
  4396         if (doubleControls)
       
  4397             arrowOpt.rect.adjust(0, -2 ,0, -2);
       
  4398         q_func()->proxy()->drawPrimitive(QStyle::PE_IndicatorArrowLeft, &arrowOpt, p, 0);
       
  4399     } else {
       
  4400         p->fillRect(opt->rect,fill);
       
  4401         QRect r = opt->rect.adjusted(0, 0, 0, 1);
       
  4402         p->drawLine(r.bottomLeft(), r.bottomRight());
       
  4403         if (completeFrame)
       
  4404             arrowOpt.rect.adjust(-2, 0, -2, 0);
       
  4405         if (doubleControls)
       
  4406             arrowOpt.rect.adjust(0, -4 , 0, -4);
       
  4407         if (completeFrame && doubleControls)
       
  4408             arrowOpt.rect.adjust(2, 0, 2, 0);
       
  4409         q_func()->proxy()->drawPrimitive(QStyle::PE_IndicatorArrowUp, &arrowOpt, p, 0);
       
  4410     }
       
  4411 }
       
  4412 
       
  4413 void QWindowsMobileStylePrivate::drawScrollbarHandleDown(QPainter *p, QStyleOptionSlider *opt, bool completeFrame, bool secondScrollBar)
       
  4414 {
       
  4415 
       
  4416 #ifdef Q_WS_WINCE_WM
       
  4417     if (wm65) {
       
  4418         tintImagesHigh(opt->palette.highlight().color());
       
  4419         QRect r = opt->rect;
       
  4420         if (opt->orientation == Qt::Horizontal) {
       
  4421             QTransform transform;
       
  4422             transform.rotate(-90);
       
  4423             if (opt->state & QStyle::State_Sunken)
       
  4424                 p->drawImage(r.topLeft(), imageScrollbarHandleDownHigh.transformed(transform));
       
  4425             else
       
  4426                 p->drawImage(r.topLeft(), imageScrollbarHandleDown.transformed(transform));
       
  4427         } else {
       
  4428             if (opt->state & QStyle::State_Sunken)
       
  4429                 p->drawImage(r.topLeft(), imageScrollbarHandleDownHigh);
       
  4430             else
       
  4431                 p->drawImage(r.topLeft(), imageScrollbarHandleDown);
       
  4432         }
       
  4433         return ;
       
  4434     }
       
  4435 #endif //Q_WS_WINCE_WM
       
  4436 
       
  4437     QBrush fill = opt->palette.button();
       
  4438     if (opt->state & QStyle::State_Sunken)
       
  4439         fill = opt->palette.shadow();
       
  4440 
       
  4441     QStyleOption arrowOpt = *opt;
       
  4442     if (doubleControls)
       
  4443         arrowOpt.rect = opt->rect.adjusted(4, 0, -5, 3);
       
  4444     else
       
  4445         arrowOpt.rect = opt->rect.adjusted(5, 6, -4, -3);
       
  4446 
       
  4447     bool horizontal = (opt->orientation == Qt::Horizontal);
       
  4448 
       
  4449     if (horizontal) {
       
  4450         p->fillRect(opt->rect,fill);
       
  4451         QRect r = opt->rect.adjusted(0, 0, 0, 0);
       
  4452         p->drawLine(r.topLeft(), r.bottomLeft());
       
  4453         if (secondScrollBar)
       
  4454             p->drawLine(r.topRight(), r.bottomRight());
       
  4455         if (doubleControls)
       
  4456             arrowOpt.rect.adjust(0, 4, 0, 4 );
       
  4457         q_func()->proxy()->drawPrimitive(QStyle::PE_IndicatorArrowRight, &arrowOpt, p, 0);
       
  4458     } else {
       
  4459         p->fillRect(opt->rect,fill);
       
  4460         QRect r = opt->rect.adjusted(0, -1, 0, -1);
       
  4461         p->drawLine(r.topLeft(), r.topRight());
       
  4462         if (secondScrollBar)
       
  4463             p->drawLine(r.bottomLeft() + QPoint(0,1), r.bottomRight() + QPoint(0, 1));
       
  4464         if (completeFrame)
       
  4465             arrowOpt.rect.adjust(-2, 0, -2, 0);
       
  4466         if (doubleControls)
       
  4467             arrowOpt.rect.adjust(1, 0, 1, 0 );
       
  4468         if (completeFrame && doubleControls)
       
  4469             arrowOpt.rect.adjust(1, 0, 1, 0);
       
  4470         q_func()->proxy()->drawPrimitive(QStyle::PE_IndicatorArrowDown, &arrowOpt, p, 0);
       
  4471     }
       
  4472 }
       
  4473 
       
  4474 void QWindowsMobileStylePrivate::drawScrollbarGroove(QPainter *p,const QStyleOptionSlider *opt)
       
  4475 {
       
  4476 #ifdef Q_OS_WINCE_WM
       
  4477     if (wm65) {
       
  4478         p->fillRect(opt->rect, QColor(231, 231, 231));
       
  4479         return ;
       
  4480     }
       
  4481 #endif
       
  4482             QBrush fill;
       
  4483             if (smartphone) {
       
  4484                 fill = opt->palette.light();
       
  4485                 p->fillRect(opt->rect, fill);
       
  4486                 fill = opt->palette.button();
       
  4487                 QImage image;
       
  4488 #ifndef QT_NO_IMAGEFORMAT_XPM
       
  4489                 if (opt->orientation == Qt::Horizontal)
       
  4490                   image = QImage(vertlines_xpm);
       
  4491                 else
       
  4492                   image = QImage(horlines_xpm);
       
  4493 #endif
       
  4494                 image.setColor(1, opt->palette.button().color().rgb());
       
  4495                 fill.setTextureImage(image);
       
  4496             }
       
  4497             else {
       
  4498               fill = opt->palette.light();
       
  4499             }
       
  4500             p->fillRect(opt->rect, fill);
       
  4501 }
       
  4502 
       
  4503 QWindowsMobileStyle::QWindowsMobileStyle(QWindowsMobileStylePrivate &dd) : QWindowsStyle(dd) {
       
  4504     qApp->setEffectEnabled(Qt::UI_FadeMenu, false);
       
  4505     qApp->setEffectEnabled(Qt::UI_AnimateMenu, false);
       
  4506 }
       
  4507 
       
  4508 QWindowsMobileStyle::QWindowsMobileStyle() : QWindowsStyle(*new QWindowsMobileStylePrivate) {
       
  4509     qApp->setEffectEnabled(Qt::UI_FadeMenu, false);
       
  4510     qApp->setEffectEnabled(Qt::UI_AnimateMenu, false);
       
  4511 }
       
  4512 
       
  4513 QWindowsMobileStylePrivate::QWindowsMobileStylePrivate() :QWindowsStylePrivate() {
       
  4514 
       
  4515 #ifdef Q_WS_WINCE
       
  4516    doubleControls = qt_wince_is_high_dpi();
       
  4517    smartphone = qt_wince_is_smartphone();
       
  4518 #else
       
  4519    doubleControls = false;
       
  4520    smartphone = false;
       
  4521 #endif //Q_WS_WINCE
       
  4522 
       
  4523 #ifndef QT_NO_IMAGEFORMAT_XPM
       
  4524 
       
  4525    imageArrowDown = QImage(arrowdown_xpm);
       
  4526    imageArrowUp = QImage(arrowdown_xpm).mirrored();
       
  4527    imageArrowLeft = QImage(arrowleft_xpm);
       
  4528    imageArrowRight = QImage(arrowleft_xpm).mirrored(true, false);
       
  4529    if (doubleControls) {
       
  4530        imageRadioButton = QImage(radiobutton_xpm);
       
  4531        imageRadioButtonChecked = QImage(radiochecked_xpm);
       
  4532        imageChecked = QImage(checkedlight_xpm);
       
  4533        imageCheckedBold = QImage(checkedbold_xpm);
       
  4534        imageRadioButtonHighlighted = QImage(highlightedradiobutton_xpm);
       
  4535        imageClose = QImage(cross_big_xpm);
       
  4536        imageMaximize = QImage(max_big_xpm);
       
  4537        imageMinimize = QImage(min_big_xpm);
       
  4538        imageNormalize = QImage(normal_big_xpm);
       
  4539    } else {
       
  4540        imageRadioButton = QImage(radiobutton_low_xpm);
       
  4541        imageRadioButtonChecked = QImage(radiochecked_low_xpm);
       
  4542        imageChecked = QImage(checkedlight_low_xpm);
       
  4543        imageCheckedBold = QImage(checkedbold_low_xpm);
       
  4544        imageRadioButtonHighlighted = QImage(highlightedradiobutton_low_xpm);
       
  4545        imageClose = QImage(cross_small_xpm);
       
  4546        imageMaximize = QImage(max_small_xpm);
       
  4547        imageMinimize = QImage(min_small_xpm);
       
  4548        imageNormalize = QImage(normal_small_xpm);
       
  4549    }
       
  4550 
       
  4551    setupWindowsMobileStyle65();
       
  4552 
       
  4553 
       
  4554    imageArrowDownBig = QImage(arrowdown_big_xpm);
       
  4555    imageArrowUpBig = QImage(arrowdown_big_xpm).mirrored();
       
  4556    imageArrowLeftBig = QImage(arrowleft_big_xpm);
       
  4557    imageArrowRightBig = QImage(arrowleft_big_xpm).mirrored(true, false);
       
  4558 
       
  4559 #endif
       
  4560 }
       
  4561 
       
  4562 void QWindowsMobileStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option,
       
  4563                                     QPainter *painter, const QWidget *widget) const {
       
  4564 
       
  4565    QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
       
  4566 
       
  4567     bool doRestore = false;
       
  4568     QRect rect = option->rect;
       
  4569     painter->setClipping(false);
       
  4570 
       
  4571     switch (element) {
       
  4572     case PE_PanelButtonTool: {
       
  4573         int penSize = 1;
       
  4574         if (d->doubleControls)
       
  4575             penSize = 2;
       
  4576         if (widget)
       
  4577             if (QWidget *parent = widget->parentWidget())
       
  4578 #ifndef QT_NO_TABWIDGET
       
  4579                 if (qobject_cast<QTabWidget *>(parent->parentWidget())) {
       
  4580 #else
       
  4581                 if (false) {
       
  4582 #endif //QT_NO_TABBAR
       
  4583                     rect.adjust(0,2*penSize,0,-1*penSize);
       
  4584                         qDrawPlainRect(painter, rect, option->palette.shadow().color(), penSize, &option->palette.light());
       
  4585                     if (option->state & (State_Sunken))
       
  4586                         qDrawPlainRect(painter, rect, option->palette.shadow().color(), penSize, &option->palette.shadow());
       
  4587                 }
       
  4588                 else {
       
  4589                     if (!(option->state & State_AutoRaise) || (option->state & (State_Sunken | State_On)))
       
  4590                         qDrawPlainRect(painter,option->rect.adjusted(0, penSize, 0, -1 * penSize) ,
       
  4591                                        option->palette.button().color(), 0, &option->palette.button());
       
  4592                     if (option->state & (State_Sunken)) {
       
  4593                         qDrawPlainRect(painter, rect, option->palette.shadow().color(), penSize, &option->palette.light());
       
  4594                     }
       
  4595                     if (option->state & (State_On)){
       
  4596                         QBrush fill = QBrush(option->palette.light().color());
       
  4597                         painter->fillRect(rect.adjusted(windowsItemFrame , windowsItemFrame ,
       
  4598                                           -windowsItemFrame , -windowsItemFrame ), fill);
       
  4599                         qDrawPlainRect(painter, rect, option->palette.shadow().color(), penSize, &option->palette.light());
       
  4600                     }
       
  4601                 }
       
  4602                 break; }
       
  4603     case PE_IndicatorButtonDropDown:
       
  4604         if (d->doubleControls)
       
  4605           qDrawPlainRect(painter, option->rect, option->palette.shadow().color(), 2, &option->palette.button());
       
  4606         else
       
  4607           qDrawPlainRect(painter, option->rect, option->palette.shadow().color(), 1, &option->palette.button());
       
  4608         break;
       
  4609 #ifndef QT_NO_TABBAR
       
  4610     case PE_IndicatorTabTear:
       
  4611         if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) {
       
  4612             bool rtl = tab->direction == Qt::RightToLeft;
       
  4613             QRect rect = tab->rect;
       
  4614             QPainterPath path;
       
  4615             rect.setTop(rect.top() + ((tab->state & State_Selected) ? 1 : 3));
       
  4616             rect.setBottom(rect.bottom() - ((tab->state & State_Selected) ? 0 : 2));
       
  4617             path.moveTo(QPoint(rtl ? rect.right() : rect.left(), rect.top()));
       
  4618             int count = 3;
       
  4619             for(int jags = 1; jags <= count; ++jags, rtl = !rtl)
       
  4620                 path.lineTo(QPoint(rtl ? rect.left() : rect.right(), rect.top() + jags * rect.height()/count));
       
  4621             painter->setPen(QPen(tab->palette.light(), qreal(.8)));
       
  4622             painter->setBrush(tab->palette.background());
       
  4623             painter->setRenderHint(QPainter::Antialiasing);
       
  4624             painter->drawPath(path);
       
  4625         }
       
  4626         break;
       
  4627 #endif //QT_NO_TABBAR
       
  4628 
       
  4629 #ifndef QT_NO_TOOLBAR
       
  4630     case PE_IndicatorToolBarSeparator: {
       
  4631             painter->save();
       
  4632             QPoint p1, p2;
       
  4633             if (option->state & State_Horizontal) {
       
  4634                 p1 = QPoint(option->rect.width()/2, 0);
       
  4635                 p2 = QPoint(p1.x(), option->rect.height());
       
  4636             } else {
       
  4637                 p1 = QPoint(0, option->rect.height()/2);
       
  4638                 p2 = QPoint(option->rect.width(), p1.y());
       
  4639             }
       
  4640 
       
  4641 
       
  4642             painter->setPen(option->palette.mid().color());
       
  4643             if (d->doubleControls) {
       
  4644                 QPen pen = painter->pen();
       
  4645                 pen.setWidth(2);
       
  4646                 pen.setCapStyle(Qt::FlatCap);
       
  4647                 painter->setPen(pen);
       
  4648             }
       
  4649             painter->drawLine(p1, p2);
       
  4650             painter->restore();
       
  4651             break; }
       
  4652 #endif // QT_NO_TOOLBAR
       
  4653     case PE_IndicatorToolBarHandle:
       
  4654         painter->save();
       
  4655         painter->translate(option->rect.x(), option->rect.y());
       
  4656         if (option->state & State_Horizontal) {
       
  4657             int x = option->rect.width() / 2 - 4;
       
  4658             if (QApplication::layoutDirection() == Qt::RightToLeft)
       
  4659                 x -= 2;
       
  4660             if (option->rect.height() > 4) {
       
  4661                 qDrawWinButton(painter,x-1,0,7,option->rect.height(), option->palette, false,  0);
       
  4662 
       
  4663                 qDrawShadePanel(painter, x, 1, 3, option->rect.height() - 1,
       
  4664                     option->palette, false,  0);
       
  4665                 qDrawShadePanel(painter, x + 3, 1, 3, option->rect.height() - 1,
       
  4666                     option->palette, false,  0);
       
  4667                 painter->setPen(option->palette.button().color());
       
  4668             }
       
  4669         } else {
       
  4670             if (option->rect.width() > 4) {
       
  4671                 int y = option->rect.height() / 2 - 4;
       
  4672                 qDrawShadePanel(painter, 2, y, option->rect.width() - 2, 3,
       
  4673                     option->palette, false,  0);
       
  4674                 qDrawShadePanel(painter, 2, y + 3, option->rect.width() - 2, 3,
       
  4675                     option->palette, false,  0);
       
  4676             }
       
  4677         }
       
  4678         painter->restore();
       
  4679         break;
       
  4680 
       
  4681 #ifndef QT_NO_PROGRESSBAR
       
  4682     case PE_IndicatorProgressChunk: {
       
  4683             bool vertical = false;
       
  4684             if (const QStyleOptionProgressBarV2 *pb2 = qstyleoption_cast<const QStyleOptionProgressBarV2 *>(option))
       
  4685                 vertical = (pb2->orientation == Qt::Vertical);
       
  4686             if (!vertical) {
       
  4687                 painter->fillRect(option->rect.x(), option->rect.y()+2, option->rect.width(), option->rect.height()-4,
       
  4688                             option->palette.brush(QPalette::Highlight));
       
  4689             } else {
       
  4690                 painter->fillRect(option->rect.x()+2, option->rect.y(), option->rect.width()-4, option->rect.height(),
       
  4691                             option->palette.brush(QPalette::Highlight));
       
  4692             }
       
  4693         }
       
  4694         break;
       
  4695 #endif // QT_NO_PROGRESSBAR
       
  4696 
       
  4697     case PE_FrameButtonTool: {
       
  4698 #ifndef QT_NO_DOCKWIDGET
       
  4699             if (widget && widget->inherits("QDockWidgetTitleButton")) {
       
  4700                 if (const QDockWidget *dw = qobject_cast<const QDockWidget *>(widget->parent()))
       
  4701                     if (dw->isFloating()){
       
  4702                         qDrawPlainRect(painter,option->rect.adjusted(1, 1, 0, 0),
       
  4703                                        option->palette.shadow().color(),1,&option->palette.button());
       
  4704                         return;
       
  4705                     }
       
  4706             }
       
  4707 #endif // QT_NO_DOCKWIDGET
       
  4708         QBrush fill;
       
  4709         bool stippled;
       
  4710         bool panel = (element == PE_PanelButtonTool);
       
  4711         if ((!(option->state & State_Sunken ))
       
  4712             && (!(option->state & State_Enabled)
       
  4713             || ((option->state & State_Enabled ) && !(option->state & State_MouseOver)))
       
  4714             && (option->state & State_On)) {
       
  4715                 fill = QBrush(option->palette.light().color(), Qt::Dense4Pattern);
       
  4716                 stippled = true;
       
  4717         } else {
       
  4718             fill = option->palette.brush(QPalette::Button);
       
  4719             stippled = false;
       
  4720         }
       
  4721         if (option->state & (State_Raised | State_Sunken | State_On)) {
       
  4722             if (option->state & State_AutoRaise) {
       
  4723                 if(option->state & (State_Enabled | State_Sunken | State_On)){
       
  4724                     if (panel)
       
  4725                         qDrawPlainRect(painter, option->rect,option->palette.shadow().color(),d->doubleControls, &fill);
       
  4726                     else
       
  4727                         qDrawPlainRect(painter, option->rect,option->palette.shadow().color(),d->doubleControls, &fill);
       
  4728                 }
       
  4729                 if (stippled) {
       
  4730                     painter->setPen(option->palette.button().color());
       
  4731                     painter->drawRect(option->rect.adjusted(1, 1, -2, -2));
       
  4732                 }
       
  4733             } else {
       
  4734                 qDrawPlainRect(painter, option->rect,option->palette.shadow().color(),d->doubleControls, &fill);
       
  4735             }
       
  4736         } else {
       
  4737             painter->fillRect(option->rect, fill);
       
  4738         }
       
  4739         break; }
       
  4740 
       
  4741     case PE_FrameFocusRect:
       
  4742         if (const QStyleOptionFocusRect *fropt = qstyleoption_cast<const QStyleOptionFocusRect *>(option)) {
       
  4743             //### check for d->alt_down
       
  4744             int penSize;
       
  4745             d->doubleControls ? penSize = 2 : penSize = 1;
       
  4746             bool alternateFocusStyle = false;
       
  4747             if (!widget)
       
  4748                 alternateFocusStyle = true;
       
  4749 #ifndef QT_NO_COMBOBOX
       
  4750             if (qobject_cast<const QComboBox*>(widget))
       
  4751                 alternateFocusStyle = true;
       
  4752 #endif
       
  4753             if (!(fropt->state & State_KeyboardFocusChange) && !styleHint(SH_UnderlineShortcut, option))
       
  4754                 return;
       
  4755             QRect r = option->rect;
       
  4756             painter->save();
       
  4757             painter->setBackgroundMode(Qt::TransparentMode);
       
  4758             if (alternateFocusStyle) {
       
  4759                 QColor bg_col = fropt->backgroundColor;
       
  4760                 if (!bg_col.isValid())
       
  4761                     bg_col = painter->background().color();
       
  4762                 // Create an "XOR" color.
       
  4763                 QColor patternCol((bg_col.red() ^ 0xff) & 0xff,
       
  4764                     (bg_col.green() ^ 0xff) & 0xff,
       
  4765                     (bg_col.blue() ^ 0xff) & 0xff);
       
  4766                 painter->setBrush(QBrush(patternCol, Qt::Dense4Pattern));
       
  4767                 painter->setBrushOrigin(r.topLeft());
       
  4768             }
       
  4769             else {
       
  4770                 painter->setPen(option->palette.highlight().color());
       
  4771                 painter->setBrush(option->palette.highlight());
       
  4772             }
       
  4773             painter->setPen(Qt::NoPen);
       
  4774             painter->setBrushOrigin(r.topLeft());
       
  4775             painter->drawRect(r.left(), r.top(), r.width(), penSize);    // Top
       
  4776             painter->drawRect(r.left(), r.bottom(), r.width() + penSize - 1, penSize); // Bottom
       
  4777             painter->drawRect(r.left(), r.top(), penSize, r.height());   // Left
       
  4778             painter->drawRect(r.right(), r.top(), penSize, r.height());  // Right
       
  4779             painter->restore();
       
  4780         }
       
  4781         break;
       
  4782 
       
  4783     case PE_PanelButtonBevel: {
       
  4784         QBrush fill;
       
  4785         bool panel = element != PE_FrameButtonBevel;
       
  4786         painter->setBrushOrigin(option->rect.topLeft());
       
  4787         if (!(option->state & State_Sunken) && (option->state & State_On))
       
  4788             fill = QBrush(option->palette.light().color(), Qt::Dense4Pattern);
       
  4789         else
       
  4790             fill = option->palette.brush(QPalette::Button);
       
  4791 
       
  4792         if (option->state & (State_Raised | State_On | State_Sunken)) {
       
  4793             if (d->doubleControls)
       
  4794               qDrawPlainRect(painter, option->rect,option->palette.shadow().color(),2,&fill);
       
  4795             else
       
  4796               qDrawPlainRect(painter, option->rect,option->palette.shadow().color(),1,&fill);
       
  4797         } else {
       
  4798             if (panel)
       
  4799                 painter->fillRect(option->rect, fill);
       
  4800             else
       
  4801                 painter->drawRect(option->rect);
       
  4802         }
       
  4803         break; }
       
  4804 
       
  4805     case PE_FrameGroupBox:
       
  4806         if (const QStyleOptionFrame *frame = qstyleoption_cast<const QStyleOptionFrame *>(option)) {
       
  4807 
       
  4808             const QStyleOptionFrameV2 *frame2 = qstyleoption_cast<const QStyleOptionFrameV2 *>(option);
       
  4809             if (frame2 && !(frame2->features & QStyleOptionFrameV2::Flat)) {
       
  4810               QPen oldPen = painter->pen();
       
  4811               QRect r = frame->rect;
       
  4812               painter->setPen(frame->palette.shadow().color());
       
  4813               painter->fillRect(r.x(), r.y(), r.x() + r.width()-1,
       
  4814                                 r.y() + r.height() - windowsMobileFrameGroupBoxOffset,
       
  4815               frame->palette.light());
       
  4816               painter ->drawLine(r.topLeft() + QPoint(-2, 1), r.topRight()+ QPoint(0, 1));
       
  4817               if (d->doubleControls)
       
  4818                 painter ->drawLine(r.topLeft() + QPoint(-2, 2), r.topRight()+ QPoint(0, 2));
       
  4819               painter->setPen(oldPen);
       
  4820             }
       
  4821         }
       
  4822         break;
       
  4823 
       
  4824    case PE_IndicatorCheckBox: {
       
  4825         QBrush fill;
       
  4826         QRect r = d->doubleControls ? option->rect.adjusted(0,1,0,-1) : option->rect;
       
  4827         if (option->state & State_NoChange)
       
  4828             fill = QBrush(option->palette.shadow().color(), Qt::Dense4Pattern);
       
  4829         else if (option->state & State_Sunken)
       
  4830             fill = option->palette.button();
       
  4831         else if (option->state & State_Enabled)
       
  4832             fill = option->palette.base();
       
  4833         else
       
  4834             fill = option->palette.background();
       
  4835         painter->save();
       
  4836         doRestore = true;
       
  4837         if (d->doubleControls && (option->state & State_NoChange))
       
  4838             painter->fillRect(r, fill);
       
  4839         else
       
  4840             painter->fillRect(option->rect, fill);
       
  4841         painter->setPen(option->palette.shadow().color());
       
  4842         painter->drawLine(r.topLeft(), r.topRight());
       
  4843         painter->drawLine(r.topRight(), r.bottomRight());
       
  4844         painter->drawLine(r.bottomLeft(), r.bottomRight());
       
  4845         painter->drawLine(r.bottomLeft(), r.topLeft());
       
  4846         if (d->doubleControls) {
       
  4847             QRect r0 = r.adjusted(1, 1, -1, -1);
       
  4848             painter->drawLine(r0.topLeft(), r0.topRight());
       
  4849             painter->drawLine(r0.topRight(), r0.bottomRight());
       
  4850             painter->drawLine(r0.bottomLeft(), r0.bottomRight());
       
  4851             painter->drawLine(r0.bottomLeft(), r0.topLeft());
       
  4852         }
       
  4853         if (option->state & State_HasFocus) {
       
  4854             painter->setPen(option->palette.highlight().color());
       
  4855             QRect r2 = d->doubleControls ? r.adjusted(2, 2, -2, -2) : r.adjusted(1, 1, -1, -1);
       
  4856             painter->drawLine(r2.topLeft(), r2.topRight());
       
  4857             painter->drawLine(r2.topRight(), r2.bottomRight());
       
  4858             painter->drawLine(r2.bottomLeft(), r2.bottomRight());
       
  4859             painter->drawLine(r2.bottomLeft(), r2.topLeft());
       
  4860             if (d->doubleControls) {
       
  4861                 QRect r3 = r2.adjusted(1, 1, -1, -1);
       
  4862                 painter->drawLine(r3.topLeft(), r3.topRight());
       
  4863                 painter->drawLine(r3.topRight(), r3.bottomRight());
       
  4864                 painter->drawLine(r3.bottomLeft(), r3.bottomRight());
       
  4865                 painter->drawLine(r3.bottomLeft(), r3.topLeft());
       
  4866             }
       
  4867             painter->setPen(option->palette.shadow().color());
       
  4868         }
       
  4869         //fall through...
       
  4870     }
       
  4871     case PE_IndicatorViewItemCheck:
       
  4872     case PE_Q3CheckListIndicator: {
       
  4873         if (!doRestore) {
       
  4874             painter->save();
       
  4875             doRestore = true;
       
  4876         }
       
  4877         if (element == PE_Q3CheckListIndicator || element == PE_IndicatorViewItemCheck) {
       
  4878             painter->setPen(option->palette.shadow().color());
       
  4879             if (option->state & State_NoChange)
       
  4880                 painter->setBrush(option->palette.brush(QPalette::Button));
       
  4881             if (d->doubleControls) {
       
  4882                 QRect r = QRect(option->rect.x(), option->rect.y(), windowsMobileitemViewCheckBoxSize * 2, windowsMobileitemViewCheckBoxSize * 2);
       
  4883                 qDrawPlainRect(painter, r, option->palette.shadow().color(), 2);
       
  4884             } else {
       
  4885                 QRect r = QRect(option->rect.x(), option->rect.y(), windowsMobileitemViewCheckBoxSize, windowsMobileitemViewCheckBoxSize);
       
  4886                 qDrawPlainRect(painter, r, option->palette.shadow().color(), 1);
       
  4887             }            
       
  4888             if (option->state & State_Enabled)
       
  4889                 d->imageChecked.setColor(1, option->palette.shadow().color().rgba());
       
  4890             else
       
  4891               d->imageChecked.setColor(1, option->palette.dark().color().rgba());
       
  4892             if (!(option->state & State_Off)) {
       
  4893                 if (d->doubleControls)
       
  4894                     painter->drawImage(option->rect.x(), option->rect.y(), d->imageChecked);
       
  4895                 else
       
  4896                     painter->drawImage(option->rect.x() + 3, option->rect.y() + 3, d->imageChecked);
       
  4897             }
       
  4898         }
       
  4899         else {
       
  4900             if (option->state & State_NoChange)
       
  4901                 d->imageCheckedBold.setColor(1, option->palette.dark().color().rgba());
       
  4902             else if (option->state & State_Enabled)
       
  4903                 d->imageCheckedBold.setColor(1, option->palette.shadow().color().rgba());
       
  4904             else
       
  4905                 d->imageCheckedBold.setColor(1, option->palette.dark().color().rgba());
       
  4906             if (!(option->state & State_Off)) {
       
  4907                 if (d->doubleControls)
       
  4908                     painter->drawImage(option->rect.x() + 2, option->rect.y(), d->imageCheckedBold);
       
  4909                 else
       
  4910                     painter->drawImage(option->rect.x() + 3, option->rect.y() + 3, d->imageCheckedBold);
       
  4911             }
       
  4912         }
       
  4913         if (doRestore)
       
  4914             painter->restore();
       
  4915         break; }
       
  4916     case PE_IndicatorRadioButton: {
       
  4917         painter->save();
       
  4918 
       
  4919         if (option->state & State_HasFocus) {
       
  4920             d->imageRadioButtonHighlighted.setColor(1, option->palette.shadow().color().rgba());
       
  4921             d->imageRadioButtonHighlighted.setColor(2, option->palette.highlight().color().rgba());
       
  4922             painter->drawImage(option->rect.x(), option->rect.y(), d->imageRadioButtonHighlighted);
       
  4923         }
       
  4924         else {
       
  4925             d->imageRadioButton.setColor(1, option->palette.shadow().color().rgba());
       
  4926             painter->drawImage(option->rect.x(), option->rect.y(), d->imageRadioButton);
       
  4927         }
       
  4928         if (option->state & (State_Sunken | State_On)) {
       
  4929             if  (option->state & State_Enabled)
       
  4930                 d->imageRadioButtonChecked.setColor(1, option->palette.shadow().color().rgba());
       
  4931             else
       
  4932                 d->imageRadioButtonChecked.setColor(1, option->palette.dark().color().rgba());
       
  4933 
       
  4934             static const int offset = d->doubleControls ? 6 : 3;
       
  4935             painter->drawImage(option->rect.x() + offset, option->rect.y() + offset, d->imageRadioButtonChecked);
       
  4936         }
       
  4937         painter->restore();
       
  4938         break; }
       
  4939    case PE_PanelButtonCommand:
       
  4940        if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
       
  4941            QBrush fill;
       
  4942            State flags = option->state;
       
  4943            QPalette pal = option->palette;
       
  4944            QRect r = option->rect;
       
  4945            if ((flags & State_Sunken || flags & State_On) )
       
  4946                fill = pal.brush(QPalette::Shadow);
       
  4947            else
       
  4948                fill = pal.brush(QPalette::Button);
       
  4949             int singleLine = 1;
       
  4950             int doubleLine = 2;
       
  4951             if (d->doubleControls) {
       
  4952                 singleLine = 2;
       
  4953                 doubleLine = 4;
       
  4954             }
       
  4955            if (button->features & QStyleOptionButton::DefaultButton && flags & State_Sunken) {
       
  4956                if (d->doubleControls) {
       
  4957                  qDrawPlainRect(painter, r, pal.shadow().color(), 1, &fill);
       
  4958                  qDrawPlainRect(painter, r.adjusted(1, 1, -1, 1), pal.shadow().color(), 1, &fill);
       
  4959                }
       
  4960                else {
       
  4961                     qDrawPlainRect(painter, r, pal.shadow().color(), 1, &fill);
       
  4962                }
       
  4963            } else if (flags & (State_Raised | State_Sunken | State_On | State_Sunken)) {
       
  4964                qDrawPlainRect(painter, r, pal.shadow().color(), singleLine, &fill);
       
  4965            } else {
       
  4966                painter->fillRect(r, fill);
       
  4967            }
       
  4968        }
       
  4969        break;
       
  4970    case PE_FrameDefaultButton: {
       
  4971        painter->save();
       
  4972        painter->setPen(option->palette.shadow().color());
       
  4973        QRect rect = option->rect;
       
  4974        if (d->doubleControls) {
       
  4975            rect.adjust(1, 1, -2, -2);
       
  4976            painter->drawRect(rect);
       
  4977            painter->drawRect(rect.adjusted(1, 1, -1, -1));
       
  4978        }
       
  4979 
       
  4980        else {
       
  4981             rect.adjust(2, 2, -3, -3);
       
  4982             painter->drawRect(rect);
       
  4983        }
       
  4984        painter->restore();
       
  4985        break; }
       
  4986    case PE_IndicatorSpinPlus:
       
  4987    case PE_IndicatorSpinMinus: {
       
  4988        QRect r = option->rect;
       
  4989        int fw = proxy()->pixelMetric(PM_DefaultFrameWidth, option, widget)+2;
       
  4990        QRect br = r.adjusted(fw, fw, -fw, -fw);
       
  4991        int offset = (option->state & State_Sunken) ? 1 : 0;
       
  4992        int step = (br.width() + 4) / 5;
       
  4993        painter->fillRect(br.x() + offset, br.y() + offset +br.height() / 2 - step / 2,
       
  4994                          br.width(), step, option->palette.buttonText());
       
  4995        if (element == PE_IndicatorSpinPlus)
       
  4996            painter->fillRect(br.x() + br.width() / 2 - step / 2 + offset, br.y() + offset+4,
       
  4997                              step, br.height() - 7, option->palette.buttonText());
       
  4998        break; }
       
  4999     case PE_IndicatorSpinUp:
       
  5000     case PE_IndicatorSpinDown: {
       
  5001         painter->save();
       
  5002             QPoint points[7];
       
  5003             switch (element) {
       
  5004                 case PE_IndicatorSpinUp:
       
  5005                     points[0] = QPoint(-2, -4);
       
  5006                     points[1] = QPoint(-2, 2);
       
  5007                     points[2] = QPoint(-1, -3);
       
  5008                     points[3] = QPoint(-1, 1);
       
  5009                     points[4] = QPoint(0, -2);
       
  5010                     points[5] = QPoint(0, 0);
       
  5011                     points[6] = QPoint(1, -1);
       
  5012                 break;
       
  5013                 case PE_IndicatorSpinDown:
       
  5014                     points[0] = QPoint(0, -4);
       
  5015                     points[1] = QPoint(0, 2);
       
  5016                     points[2] = QPoint(-1, -3);
       
  5017                     points[3] = QPoint(-1, 1);
       
  5018                     points[4] = QPoint(-2, -2);
       
  5019                     points[5] = QPoint(-2, 0);
       
  5020                     points[6] = QPoint(-3, -1);
       
  5021                 break;
       
  5022                 default:
       
  5023                 break;
       
  5024             }
       
  5025             if (option->state & State_Sunken)
       
  5026                 painter->translate(proxy()->pixelMetric(PM_ButtonShiftHorizontal),
       
  5027                 proxy()->pixelMetric(PM_ButtonShiftVertical));
       
  5028             if (option->state & State_Enabled) {
       
  5029                 painter->translate(option->rect.x() + option->rect.width() / 2,
       
  5030                                    option->rect.y() + option->rect.height() / 2);
       
  5031                 painter->setPen(option->palette.buttonText().color());
       
  5032                 painter->drawLine(points[0], points[1]);
       
  5033                 painter->drawLine(points[2], points[3]);
       
  5034                 painter->drawLine(points[4], points[5]);
       
  5035                 painter->drawPoint(points[6]);
       
  5036             } else {
       
  5037                 painter->translate(option->rect.x() + option->rect.width() / 2 + 1,
       
  5038                                    option->rect.y() + option->rect.height() / 2 + 1);
       
  5039                 painter->setPen(option->palette.light().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                 painter->translate(-1, -1);
       
  5045                 painter->setPen(option->palette.mid().color());
       
  5046                 painter->drawLine(points[0], points[1]);
       
  5047                 painter->drawLine(points[2], points[3]);
       
  5048                 painter->drawLine(points[4], points[5]);
       
  5049                 painter->drawPoint(points[6]);
       
  5050             }
       
  5051         painter->restore();
       
  5052         break; }
       
  5053 
       
  5054     case PE_IndicatorArrowUpBig:
       
  5055     case PE_IndicatorArrowDownBig:
       
  5056     case PE_IndicatorArrowLeftBig:
       
  5057     case PE_IndicatorArrowRightBig:
       
  5058 
       
  5059     case PE_IndicatorArrowUp:
       
  5060     case PE_IndicatorArrowDown:
       
  5061     case PE_IndicatorArrowRight:
       
  5062     case PE_IndicatorArrowLeft: {
       
  5063             painter->save();
       
  5064 
       
  5065             if (d->doubleControls) {
       
  5066                 QColor color;
       
  5067                 if (option->state & State_Sunken)
       
  5068                     color = option->palette.light().color();
       
  5069                 else
       
  5070                     color = option->palette.buttonText().color();
       
  5071                 QImage image;
       
  5072                 int xoffset, yoffset;
       
  5073                 switch (element) {
       
  5074                     case PE_IndicatorArrowUp:
       
  5075                           image = d->imageArrowUp;
       
  5076                           xoffset = 1;
       
  5077                           yoffset = 12;
       
  5078                           break;
       
  5079                     case PE_IndicatorArrowDown:
       
  5080                           image = d->imageArrowDown;
       
  5081                           xoffset = 1;
       
  5082                           yoffset =12;
       
  5083                           break;
       
  5084                     case PE_IndicatorArrowLeft:
       
  5085                           image = d->imageArrowLeft;
       
  5086                           xoffset = 8;
       
  5087                           yoffset = 2;
       
  5088                           break;
       
  5089                     case PE_IndicatorArrowRight:
       
  5090                           image = d->imageArrowRight;
       
  5091                           xoffset = 8;
       
  5092                           yoffset = 2;
       
  5093                           break;
       
  5094                      case PE_IndicatorArrowUpBig:
       
  5095                           image = d->imageArrowUpBig;
       
  5096                           xoffset = 3;
       
  5097                           yoffset = 12;
       
  5098                           break;
       
  5099                     case PE_IndicatorArrowDownBig:
       
  5100                           image = d->imageArrowDownBig;
       
  5101                           xoffset = 2;
       
  5102                           yoffset =12;
       
  5103                           break;
       
  5104                     case PE_IndicatorArrowLeftBig:
       
  5105                           image = d->imageArrowLeftBig;
       
  5106                           xoffset = 8;
       
  5107                           yoffset = 2;
       
  5108                           break;
       
  5109                     case PE_IndicatorArrowRightBig:
       
  5110                           image = d->imageArrowRightBig;
       
  5111                           xoffset = 8;
       
  5112                           yoffset = 2;
       
  5113                           break;
       
  5114                     default:
       
  5115                           break;
       
  5116                 }
       
  5117                 image.setColor(1, color.rgba());
       
  5118                 painter->drawImage(option->rect.x() + xoffset, option->rect.y() + yoffset, image);
       
  5119             }
       
  5120             else {                
       
  5121                  QPoint points[7];
       
  5122                  switch (element) {
       
  5123                      case PE_IndicatorArrowUp:
       
  5124                      case PE_IndicatorArrowUpBig:
       
  5125                           points[0] = QPoint(-3, 1);
       
  5126                           points[1] = QPoint(3, 1);
       
  5127                           points[2] = QPoint(-2, 0);
       
  5128                           points[3] = QPoint(2, 0);
       
  5129                           points[4] = QPoint(-1, -1);
       
  5130                           points[5] = QPoint(1, -1);
       
  5131                           points[6] = QPoint(0, -2);
       
  5132                           break;
       
  5133                      case PE_IndicatorArrowDown:
       
  5134                      case PE_IndicatorArrowDownBig:
       
  5135                          points[0] = QPoint(-3, -1);
       
  5136                          points[1] = QPoint(3, -1);
       
  5137                          points[2] = QPoint(-2, 0);
       
  5138                          points[3] = QPoint(2, 0);
       
  5139                          points[4] = QPoint(-1, 1);
       
  5140                          points[5] = QPoint(1, 1);
       
  5141                          points[6] = QPoint(0, 2);
       
  5142                          break;
       
  5143                      case PE_IndicatorArrowRight:
       
  5144                      case PE_IndicatorArrowRightBig:
       
  5145                          points[0] = QPoint(-2, -3);
       
  5146                          points[1] = QPoint(-2, 3);
       
  5147                          points[2] = QPoint(-1, -2);
       
  5148                          points[3] = QPoint(-1, 2);
       
  5149                          points[4] = QPoint(0, -1);
       
  5150                          points[5] = QPoint(0, 1);
       
  5151                          points[6] = QPoint(1, 0);
       
  5152                          break;
       
  5153                      case PE_IndicatorArrowLeft:
       
  5154                      case PE_IndicatorArrowLeftBig:
       
  5155                          points[0] = QPoint(0, -3);
       
  5156                          points[1] = QPoint(0, 3);
       
  5157                          points[2] = QPoint(-1, -2);
       
  5158                          points[3] = QPoint(-1, 2);
       
  5159                          points[4] = QPoint(-2, -1);
       
  5160                          points[5] = QPoint(-2, 1);
       
  5161                          points[6] = QPoint(-3, 0);
       
  5162                          break;
       
  5163                      default:
       
  5164                      break;
       
  5165                     }
       
  5166                     if (option->state & State_Sunken)
       
  5167                         painter->setPen(option->palette.light().color());
       
  5168                     else
       
  5169                         painter->setPen(option->palette.buttonText().color());
       
  5170                     if (option->state & State_Enabled) {
       
  5171                         painter->translate(option->rect.x() + option->rect.width() / 2,
       
  5172                             option->rect.y() + option->rect.height() / 2 - 1);
       
  5173                         painter->drawLine(points[0], points[1]);
       
  5174                         painter->drawLine(points[2], points[3]);
       
  5175                         painter->drawLine(points[4], points[5]);
       
  5176                         painter->drawPoint(points[6]);
       
  5177                     } else {
       
  5178                         painter->translate(option->rect.x() + option->rect.width() / 2,
       
  5179                             option->rect.y() + option->rect.height() / 2 - 1);
       
  5180                         painter->setPen(option->palette.mid().color());
       
  5181                         painter->drawLine(points[0], points[1]);
       
  5182                         painter->drawLine(points[2], points[3]);
       
  5183                         painter->drawLine(points[4], points[5]);
       
  5184                         painter->drawPoint(points[6]);
       
  5185                     }                
       
  5186             }
       
  5187         painter->restore();
       
  5188         break; }
       
  5189 #ifndef QT_NO_TABWIDGET
       
  5190     case PE_FrameTabWidget:
       
  5191         if (const QStyleOptionTabWidgetFrame *tab = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(option)) {
       
  5192           QRect rect = option->rect;
       
  5193         QPalette pal = option->palette;
       
  5194         painter->save();
       
  5195         QBrush fill = pal.light();
       
  5196           painter->fillRect(rect, fill);
       
  5197           painter->setPen(pal.shadow().color());
       
  5198           if (d->doubleControls) {
       
  5199               QPen pen = painter->pen();
       
  5200               pen.setWidth(2);
       
  5201               pen.setCapStyle(Qt::FlatCap);
       
  5202               painter->setPen(pen);
       
  5203           }
       
  5204           switch (tab->shape) {
       
  5205             case QTabBar::RoundedNorth:
       
  5206 #ifdef Q_WS_WINCE_WM
       
  5207                 if (!d->wm65)
       
  5208 #endif
       
  5209                 {
       
  5210                 if (d->doubleControls)
       
  5211                     painter->drawLine(rect.topLeft() + QPoint(0, 1), rect.topRight() + QPoint(0, 1));
       
  5212                 else
       
  5213                     painter->drawLine(rect.topLeft(), rect.topRight());
       
  5214                 }
       
  5215                 break;
       
  5216             case QTabBar::RoundedSouth:
       
  5217 #ifdef Q_WS_WINCE_WM
       
  5218                 if (!d->wm65)
       
  5219 #endif
       
  5220                 {
       
  5221                 if (d->doubleControls)
       
  5222                   painter->drawLine(rect.bottomLeft(), rect.bottomRight());
       
  5223                 else
       
  5224                   painter->drawLine(rect.bottomLeft(), rect.bottomRight());
       
  5225                 }
       
  5226                 break;
       
  5227             case QTabBar::RoundedEast:
       
  5228 #ifdef Q_WS_WINCE_WM
       
  5229                 if (!d->wm65)
       
  5230 #endif
       
  5231                 painter->drawLine(rect.topRight(), rect.bottomRight());
       
  5232                 break;
       
  5233             case QTabBar::RoundedWest:
       
  5234 #ifdef Q_WS_WINCE_WM
       
  5235                 if (!d->wm65)
       
  5236 #endif
       
  5237                 painter->drawLine(rect.topLeft(), rect.bottomLeft());
       
  5238                 break;
       
  5239             case QTabBar::TriangularWest:
       
  5240             case QTabBar::TriangularEast:
       
  5241             case QTabBar::TriangularSouth:
       
  5242             case QTabBar::TriangularNorth:
       
  5243                 if (d->doubleControls)
       
  5244                   qDrawPlainRect(painter, rect.adjusted(0,-2,0,0), option->palette.shadow().color(),2,&pal.light());
       
  5245                 else
       
  5246                   qDrawPlainRect(painter, rect, option->palette.shadow().color(),1,&pal.light());
       
  5247                 break;
       
  5248             default:
       
  5249                 break;
       
  5250             }
       
  5251             painter->restore();
       
  5252         }
       
  5253         break;
       
  5254 #endif //QT_NO_TABBAR
       
  5255 #ifndef QT_NO_ITEMVIEWS
       
  5256     case PE_PanelItemViewRow:
       
  5257         if (const QStyleOptionViewItemV4 *vopt = qstyleoption_cast<const QStyleOptionViewItemV4 *>(option)) {
       
  5258             QPalette::ColorGroup cg = vopt->state & QStyle::State_Enabled
       
  5259                                       ? QPalette::Normal : QPalette::Disabled;
       
  5260             if (cg == QPalette::Normal && !(vopt->state & QStyle::State_Active))
       
  5261                 cg = QPalette::Inactive;
       
  5262 
       
  5263             if ((vopt->state & QStyle::State_Selected) &&  proxy()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, option, widget))
       
  5264                  d->drawPanelItemViewSelected(painter, vopt);
       
  5265             else if (vopt->features & QStyleOptionViewItemV2::Alternate)
       
  5266                 painter->fillRect(vopt->rect, vopt->palette.brush(cg, QPalette::AlternateBase));
       
  5267             else if (!(vopt->state & QStyle::State_Enabled))
       
  5268                 painter->fillRect(vopt->rect, vopt->palette.brush(cg, QPalette::Base));
       
  5269         }
       
  5270         break;
       
  5271     case PE_PanelItemViewItem:
       
  5272         if (const QStyleOptionViewItemV4 *vopt = qstyleoption_cast<const QStyleOptionViewItemV4 *>(option)) {
       
  5273             QPalette::ColorGroup cg = vopt->state & QStyle::State_Enabled
       
  5274                                       ? QPalette::Normal : QPalette::Disabled;
       
  5275             if (cg == QPalette::Normal && !(vopt->state & QStyle::State_Active))
       
  5276                 cg = QPalette::Inactive;
       
  5277 
       
  5278             if (vopt->showDecorationSelected && (vopt->state & QStyle::State_Selected)) {
       
  5279                 d->drawPanelItemViewSelected(painter, vopt);
       
  5280             } else {
       
  5281                 if (vopt->backgroundBrush.style() != Qt::NoBrush) {
       
  5282                     QPointF oldBO = painter->brushOrigin();
       
  5283                     painter->setBrushOrigin(vopt->rect.topLeft());
       
  5284                     painter->fillRect(vopt->rect, vopt->backgroundBrush);
       
  5285                     painter->setBrushOrigin(oldBO);
       
  5286                 }
       
  5287 
       
  5288                 if (vopt->state & QStyle::State_Selected) {
       
  5289                     QRect textRect = proxy()->subElementRect(QStyle::SE_ItemViewItemText,  option, widget);
       
  5290                     d->drawPanelItemViewSelected(painter, vopt, textRect);
       
  5291                 }
       
  5292             }
       
  5293         }
       
  5294         break;
       
  5295 #endif //QT_NO_ITEMVIEWS
       
  5296 
       
  5297     case PE_FrameWindow: {
       
  5298         QPalette popupPal = option->palette;
       
  5299         popupPal.setColor(QPalette::Light, option->palette.background().color());
       
  5300         popupPal.setColor(QPalette::Midlight, option->palette.light().color());
       
  5301         if (d->doubleControls)
       
  5302             qDrawPlainRect(painter, option->rect, popupPal.shadow().color(),2,0);
       
  5303         else
       
  5304             qDrawPlainRect(painter, option->rect, popupPal.shadow().color(),1,0);
       
  5305         break; }
       
  5306     case PE_FrameTabBarBase: {
       
  5307         break; }
       
  5308     case PE_Widget:
       
  5309         break;
       
  5310     case PE_IndicatorMenuCheckMark: {
       
  5311         int markW = option->rect.width() > 7 ? 7 : option->rect.width();
       
  5312         int markH = markW;
       
  5313         if (d->doubleControls)
       
  5314             markW*=2;
       
  5315             markH*=2;
       
  5316         int posX = option->rect.x() + (option->rect.width() - markW)/2 + 1;
       
  5317         int posY = option->rect.y() + (option->rect.height() - markH)/2;
       
  5318 
       
  5319         QVector<QLineF> a;
       
  5320         a.reserve(markH);
       
  5321 
       
  5322         int i, xx, yy;
       
  5323         xx = posX;
       
  5324         yy = 3 + posY;
       
  5325         for (i = 0; i < markW/2; ++i) {
       
  5326             a << QLineF(xx, yy, xx, yy + 2);
       
  5327             ++xx;
       
  5328             ++yy;
       
  5329         }
       
  5330         yy -= 2;
       
  5331         for (; i < markH; ++i) {
       
  5332             a << QLineF(xx, yy, xx, yy + 2);
       
  5333             ++xx;
       
  5334             --yy;
       
  5335         }
       
  5336         if (!(option->state & State_Enabled) && !(option->state & State_On)) {
       
  5337             int pnt;
       
  5338             painter->setPen(option->palette.highlightedText().color());
       
  5339             QPoint offset(1, 1);
       
  5340             for (pnt = 0; pnt < a.size(); ++pnt)
       
  5341                 a[pnt].translate(offset.x(), offset.y());
       
  5342             painter->drawLines(a);
       
  5343             for (pnt = 0; pnt < a.size(); ++pnt)
       
  5344                 a[pnt].translate(offset.x(), offset.y());
       
  5345         }
       
  5346         painter->setPen(option->palette.text().color());
       
  5347         painter->drawLines(a);
       
  5348         break; }
       
  5349     case PE_Frame:
       
  5350        if (d->doubleControls)
       
  5351             qDrawPlainRect(painter, option->rect, option->palette.shadow().color(),2,&option->palette.light());
       
  5352         else
       
  5353             qDrawPlainRect(painter, option->rect, option->palette.shadow().color(),1,&option->palette.light());
       
  5354         break;
       
  5355     case PE_FrameLineEdit:
       
  5356     case PE_FrameMenu:
       
  5357         if (d->doubleControls)
       
  5358             qDrawPlainRect(painter, option->rect, option->palette.shadow().color(),2);
       
  5359         else
       
  5360             qDrawPlainRect(painter, option->rect, option->palette.shadow().color(),1);
       
  5361         break;
       
  5362     case PE_FrameStatusBar:
       
  5363         if (d->doubleControls)
       
  5364             qDrawPlainRect(painter, option->rect, option->palette.shadow().color(),2,0);
       
  5365         else
       
  5366             qDrawPlainRect(painter, option->rect, option->palette.shadow().color(),1,0);
       
  5367         break;
       
  5368 
       
  5369     default:
       
  5370         QWindowsStyle::drawPrimitive(element, option, painter, widget);
       
  5371         break;
       
  5372     }
       
  5373 }
       
  5374 
       
  5375 void QWindowsMobileStyle::drawControl(ControlElement element, const QStyleOption *option,
       
  5376                                       QPainter *painter, const QWidget *widget) const {
       
  5377 
       
  5378 
       
  5379    QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
       
  5380 
       
  5381    
       
  5382    painter->setClipping(false);
       
  5383    switch (element) {
       
  5384    case CE_MenuBarEmptyArea:
       
  5385         painter->setClipping(true);
       
  5386         QWindowsStyle::drawControl(element, option, painter, widget);
       
  5387         break;
       
  5388    case CE_PushButtonBevel:
       
  5389         if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
       
  5390             QRect br = button->rect;
       
  5391             int dbi = proxy()->pixelMetric(PM_ButtonDefaultIndicator, button, widget);
       
  5392 
       
  5393             if (button->features & QStyleOptionButton::AutoDefaultButton)
       
  5394                 br.setCoords(br.left() + dbi, br.top() + dbi, br.right() - dbi, br.bottom() - dbi);
       
  5395             QStyleOptionButton tmpBtn = *button;
       
  5396             tmpBtn.rect = br;
       
  5397             proxy()->drawPrimitive(PE_PanelButtonCommand, &tmpBtn, painter, widget);
       
  5398             if (button->features & QStyleOptionButton::HasMenu) {
       
  5399                 int mbi = proxy()->pixelMetric(PM_MenuButtonIndicator, button, widget);
       
  5400                 QRect ir = button->rect;
       
  5401                 QStyleOptionButton newButton = *button;
       
  5402                 if (d->doubleControls)
       
  5403                     newButton.rect = QRect(ir.right() - mbi, ir.height() - 30, mbi, ir.height() - 4);
       
  5404                 else
       
  5405                     newButton.rect = QRect(ir.right() - mbi, ir.height() - 20, mbi, ir.height() - 4);
       
  5406                 proxy()->drawPrimitive(PE_IndicatorArrowDown, &newButton, painter, widget);
       
  5407             }
       
  5408             if (button->features & QStyleOptionButton::DefaultButton)
       
  5409                 proxy()->drawPrimitive(PE_FrameDefaultButton, option, painter, widget);
       
  5410         }
       
  5411         break;
       
  5412    case CE_RadioButton:
       
  5413    case CE_CheckBox:
       
  5414        if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
       
  5415            bool isRadio = (element == CE_RadioButton);
       
  5416            QStyleOptionButton subopt = *button;
       
  5417            subopt.rect = proxy()->subElementRect(isRadio ? SE_RadioButtonIndicator
       
  5418                : SE_CheckBoxIndicator, button, widget);
       
  5419            proxy()->drawPrimitive(isRadio ? PE_IndicatorRadioButton : PE_IndicatorCheckBox,
       
  5420                &subopt, painter, widget);
       
  5421            subopt.rect = proxy()->subElementRect(isRadio ? SE_RadioButtonContents
       
  5422                : SE_CheckBoxContents, button, widget);
       
  5423            proxy()->drawControl(isRadio ? CE_RadioButtonLabel : CE_CheckBoxLabel, &subopt, painter, widget);
       
  5424            if (button->state & State_HasFocus) {
       
  5425                QStyleOptionFocusRect fropt;
       
  5426                fropt.QStyleOption::operator=(*button);
       
  5427                fropt.rect = proxy()->subElementRect(isRadio ? SE_RadioButtonFocusRect
       
  5428                    : SE_CheckBoxFocusRect, button, widget);
       
  5429                proxy()->drawPrimitive(PE_FrameFocusRect, &fropt, painter, widget);
       
  5430            }
       
  5431        }
       
  5432        break;
       
  5433    case CE_RadioButtonLabel:
       
  5434    case CE_CheckBoxLabel:
       
  5435        if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
       
  5436            uint alignment = visualAlignment(button->direction, Qt::AlignLeft | Qt::AlignVCenter);
       
  5437            if (!styleHint(SH_UnderlineShortcut, button, widget))
       
  5438                alignment |= Qt::TextHideMnemonic;
       
  5439            QPixmap pix;
       
  5440            QRect textRect = button->rect;
       
  5441            if (!button->icon.isNull()) {
       
  5442                pix = button->icon.pixmap(button->iconSize, button->state & State_Enabled ? QIcon::Normal : QIcon::Disabled);
       
  5443                proxy()->drawItemPixmap(painter, button->rect, alignment, pix);
       
  5444                if (button->direction == Qt::RightToLeft)
       
  5445                    textRect.setRight(textRect.right() - button->iconSize.width() - 4);
       
  5446                else
       
  5447                    textRect.setLeft(textRect.left() + button->iconSize.width() + 4);
       
  5448            }
       
  5449            if (!button->text.isEmpty()){
       
  5450                if (button->state & State_Enabled)
       
  5451                    proxy()->drawItemText(painter, textRect, alignment | Qt::TextShowMnemonic,
       
  5452                    button->palette, false, button->text, QPalette::WindowText);
       
  5453                else
       
  5454                    proxy()->drawItemText(painter, textRect, alignment | Qt::TextShowMnemonic,
       
  5455                    button->palette, false, button->text, QPalette::Mid);
       
  5456            }
       
  5457        }
       
  5458        break;
       
  5459 #ifndef QT_NO_PROGRESSBAR
       
  5460     case CE_ProgressBarGroove:
       
  5461         if (d->doubleControls)
       
  5462             qDrawPlainRect(painter, option->rect, option->palette.shadow().color(), 2, &option->palette.brush(QPalette::Window));
       
  5463         else
       
  5464             qDrawPlainRect(painter, option->rect, option->palette.shadow().color(), 1, &option->palette.brush(QPalette::Window));
       
  5465         break;
       
  5466 #endif //QT_NO_PROGRESSBAR
       
  5467 #ifndef QT_NO_TABBAR
       
  5468     case CE_TabBarTab:
       
  5469         if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) {
       
  5470             proxy()->drawControl(CE_TabBarTabShape, tab, painter, widget);
       
  5471             proxy()->drawControl(CE_TabBarTabLabel, tab, painter, widget);
       
  5472         }
       
  5473         break;
       
  5474     case CE_TabBarTabShape:
       
  5475         if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) {
       
  5476             
       
  5477             if (tab->shape == QTabBar::RoundedNorth || tab->shape == QTabBar::RoundedEast ||
       
  5478                 tab->shape == QTabBar::RoundedSouth || tab->shape == QTabBar::RoundedWest) {
       
  5479                     d->drawTabBarTab(painter, tab);
       
  5480             } else {
       
  5481                 QCommonStyle::drawControl(element, option, painter, widget);
       
  5482             }
       
  5483             break; }
       
  5484 
       
  5485 #endif // QT_NO_TABBAR
       
  5486 
       
  5487 #ifndef QT_NO_TOOLBAR
       
  5488     case CE_ToolBar:
       
  5489         if (const QStyleOptionToolBar *toolBar = qstyleoption_cast<const QStyleOptionToolBar *>(option)) {
       
  5490         QRect rect = option->rect;
       
  5491         painter->save();
       
  5492         painter->setPen(option->palette.dark().color());
       
  5493         painter->fillRect(rect,option->palette.button());
       
  5494         if (d->doubleControls) {
       
  5495             QPen pen = painter->pen();
       
  5496             pen.setWidth(4);
       
  5497             painter->setPen(pen);
       
  5498         }
       
  5499         if (toolBar->toolBarArea == Qt::TopToolBarArea)
       
  5500             painter->drawLine(rect.bottomLeft(), rect.bottomRight());
       
  5501         else
       
  5502             painter->drawLine(rect.topLeft(), rect.topRight());
       
  5503         painter->restore();
       
  5504         break; }
       
  5505 #endif //QT_NO_TOOLBAR
       
  5506     case CE_Header:
       
  5507         if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(option)) {
       
  5508             QRegion clipRegion = painter->clipRegion();
       
  5509             painter->setClipRect(option->rect);
       
  5510             proxy()->drawControl(CE_HeaderSection, header, painter, widget);
       
  5511             QStyleOptionHeader subopt = *header;
       
  5512             subopt.rect = proxy()->subElementRect(SE_HeaderLabel, header, widget);
       
  5513             if (header->state & State_Sunken) 
       
  5514                 subopt.palette.setColor(QPalette::ButtonText, header->palette.brightText().color());
       
  5515             subopt.state |= QStyle::State_On;
       
  5516             if (subopt.rect.isValid())
       
  5517                 proxy()->drawControl(CE_HeaderLabel, &subopt, painter, widget);
       
  5518             if (header->sortIndicator != QStyleOptionHeader::None) {
       
  5519                 subopt.rect = proxy()->subElementRect(SE_HeaderArrow, option, widget);
       
  5520                 proxy()->drawPrimitive(PE_IndicatorHeaderArrow, &subopt, painter, widget);
       
  5521             }
       
  5522             painter->setClipRegion(clipRegion);
       
  5523         }
       
  5524         break;
       
  5525 
       
  5526     case CE_HeaderSection:
       
  5527         if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(option)) {
       
  5528             QBrush fill;
       
  5529             QColor color;
       
  5530             QRect rect = option->rect;
       
  5531             painter->setPen(option->palette.shadow().color());
       
  5532 
       
  5533             int penSize = 1;
       
  5534 
       
  5535             if (d->doubleControls) {
       
  5536                 penSize = 2;
       
  5537                 QPen pen = painter->pen();
       
  5538                 pen.setWidth(2);
       
  5539                 pen.setCapStyle(Qt::FlatCap);
       
  5540                 painter->setPen(pen);
       
  5541             }
       
  5542 
       
  5543             //fix Frame
       
  5544 
       
  5545             if (header->position == QStyleOptionHeader::End
       
  5546                 || (header->position == QStyleOptionHeader::OnlyOneSection
       
  5547                 && !header->text.isEmpty()))
       
  5548                 if (Qt::Horizontal == header->orientation )
       
  5549                   rect.adjust(0, 0, penSize, 0);
       
  5550                 else
       
  5551                   rect.adjust(0, 0, 0, penSize);
       
  5552 
       
  5553             if (option->state & State_Sunken) {
       
  5554                 fill = option->palette.brush(QPalette::Shadow);
       
  5555                 color = option->palette.light().color();
       
  5556                 painter->drawLine(rect.bottomLeft(), rect.bottomRight());
       
  5557                 painter->drawLine(rect.topRight(), rect.bottomRight());
       
  5558                 rect.adjust(0, 0, -penSize, -penSize);
       
  5559             }
       
  5560             else {
       
  5561                 fill = option->palette.brush(QPalette::Button);
       
  5562                 color = option->palette.shadow().color();
       
  5563                 if (Qt::Horizontal == header->orientation )
       
  5564                     rect.adjust(-penSize, 0, 0, 0);
       
  5565                 else
       
  5566                   rect.adjust(0, -penSize, 0, 0);
       
  5567             }
       
  5568             if (Qt::Horizontal == header->orientation )
       
  5569                     rect.adjust(0,-penSize,0,0);
       
  5570                 else
       
  5571                   rect.adjust(-penSize, 0, 0, 0);
       
  5572 
       
  5573             if (option->state & State_Sunken) {
       
  5574                 qDrawPlainRect(painter, rect, color, penSize, &fill);
       
  5575             } else {
       
  5576                 //Corner
       
  5577                 rect.adjust(-penSize, 0, 0, 0);
       
  5578                 qDrawPlainRect(painter, rect, color, penSize, &fill);
       
  5579             }
       
  5580 
       
  5581             //Hack to get rid of some double lines... StyleOptions need a clean flag for that
       
  5582              rect = option->rect;
       
  5583 #ifndef QT_NO_SCROLLAREA
       
  5584              if (const QAbstractScrollArea *abstractScrollArea = qobject_cast<const QAbstractScrollArea *> (widget) ) {
       
  5585                  QRect rectScrollArea = abstractScrollArea->geometry();
       
  5586                  if (Qt::Horizontal == header->orientation )
       
  5587                      if ((rectScrollArea.right() - rect.right() ) > 1)
       
  5588                          painter->drawLine(rect.topRight(), rect.bottomRight());
       
  5589                      else ;
       
  5590                  else
       
  5591                      if ((rectScrollArea.bottom() - rect.bottom() ) > 1)
       
  5592                          painter->drawLine(rect.bottomLeft(), rect.bottomRight());
       
  5593              }
       
  5594 #endif // QT_NO_SCROLLAREA
       
  5595             break;
       
  5596         }
       
  5597 #ifndef QT_NO_COMBOBOX
       
  5598     case CE_ComboBoxLabel:
       
  5599         // This is copied from qcommonstyle.cpp with the difference, that
       
  5600         // the editRect isn't adjusted when calling drawItemText.
       
  5601         if (const QStyleOptionComboBox *cb = qstyleoption_cast<const QStyleOptionComboBox *>(option)) {
       
  5602             QRect editRect = proxy()->subControlRect(CC_ComboBox, cb, SC_ComboBoxEditField, widget);
       
  5603             painter->save();
       
  5604             painter->setClipRect(editRect);
       
  5605             if (!cb->currentIcon.isNull()) {
       
  5606                 QIcon::Mode mode = cb->state & State_Enabled ? QIcon::Normal
       
  5607                                                              : QIcon::Disabled;
       
  5608                 QPixmap pixmap = cb->currentIcon.pixmap(cb->iconSize, mode);
       
  5609                 QRect iconRect(editRect);
       
  5610                 iconRect.setWidth(cb->iconSize.width() + 4);
       
  5611                 iconRect = alignedRect(cb->direction,
       
  5612                                        Qt::AlignLeft | Qt::AlignVCenter,
       
  5613                                        iconRect.size(), editRect);
       
  5614                 if (cb->editable)
       
  5615                     painter->fillRect(iconRect, option->palette.brush(QPalette::Base));
       
  5616                 proxy()->drawItemPixmap(painter, iconRect, Qt::AlignCenter, pixmap);
       
  5617 
       
  5618                 if (cb->direction == Qt::RightToLeft)
       
  5619                     editRect.translate(-4 - cb->iconSize.width(), 0);
       
  5620                 else
       
  5621                     editRect.translate(cb->iconSize.width() + 4, 0);
       
  5622             }
       
  5623             if (!cb->currentText.isEmpty() && !cb->editable) {
       
  5624                 proxy()->drawItemText(painter, editRect,
       
  5625                              visualAlignment(cb->direction, Qt::AlignLeft | Qt::AlignVCenter),
       
  5626                              cb->palette, cb->state & State_Enabled, cb->currentText);
       
  5627             }
       
  5628             painter->restore();
       
  5629         }
       
  5630         break;
       
  5631 #endif // QT_NO_COMBOBOX
       
  5632 #ifndef QT_NO_DOCKWIDGET
       
  5633     case CE_DockWidgetTitle:
       
  5634         if (const QStyleOptionDockWidget *dwOpt = qstyleoption_cast<const QStyleOptionDockWidget *>(option)) {
       
  5635             const QStyleOptionDockWidgetV2 *v2
       
  5636                 = qstyleoption_cast<const QStyleOptionDockWidgetV2*>(option);
       
  5637             bool verticalTitleBar = v2 == 0 ? false : v2->verticalTitleBar;
       
  5638 
       
  5639             QRect rect = dwOpt->rect;
       
  5640             QRect r = rect;
       
  5641 
       
  5642             if (verticalTitleBar) {
       
  5643                 QSize s = r.size();
       
  5644                 s.transpose();
       
  5645                 r.setSize(s);
       
  5646 
       
  5647                 painter->save();
       
  5648                 painter->translate(r.left(), r.top() + r.width());
       
  5649                 painter->rotate(-90);
       
  5650                 painter->translate(-r.left(), -r.top());
       
  5651             }
       
  5652 
       
  5653             bool floating = false;
       
  5654             bool active = dwOpt->state & State_Active;
       
  5655             int menuOffset = 0; //used to center text when floated
       
  5656             QColor inactiveCaptionTextColor = option->palette.highlightedText().color();
       
  5657             if (dwOpt->movable) {
       
  5658                 QColor left, right;
       
  5659 
       
  5660                 //Titlebar gradient
       
  5661                 if (widget && widget->isWindow()) {
       
  5662                     floating = true;
       
  5663                     if (active) {
       
  5664                         right = option->palette.highlight().color();
       
  5665                         left = right.lighter(125);
       
  5666                     } else {
       
  5667                         left  = option->palette.highlight().color().lighter(125);
       
  5668                         right = QColor(0xff, 0xff, 0xff);
       
  5669                     }
       
  5670                     menuOffset = 2;
       
  5671                     QBrush fillBrush(left);
       
  5672                     if (left != right) {
       
  5673                         QPoint p1(r.x(), r.top() + r.height()/2);
       
  5674                         QPoint p2(rect.right(), r.top() + r.height()/2);
       
  5675                         QLinearGradient lg(p1, p2);
       
  5676                         lg.setColorAt(0, left);
       
  5677                         lg.setColorAt(1, right);
       
  5678                         fillBrush = lg;
       
  5679                     }
       
  5680                     painter->fillRect(r.adjusted(0, 0, 0, -3), fillBrush);
       
  5681                 } else {
       
  5682                     painter->fillRect(r.adjusted(0, 0, 0, -3), option->palette.button().color());
       
  5683                 }
       
  5684                 painter->setPen(dwOpt->palette.color(QPalette::Light));
       
  5685                 if (!widget || !widget->isWindow()) {
       
  5686                     painter->drawLine(r.topLeft(), r.topRight());
       
  5687                     painter->setPen(dwOpt->palette.color(QPalette::Dark));
       
  5688                     painter->drawLine(r.bottomLeft(), r.bottomRight());            }
       
  5689             }
       
  5690             if (!dwOpt->title.isEmpty()) {
       
  5691                 QFont oldFont = painter->font();
       
  5692                 QFont newFont = oldFont;
       
  5693                 if (newFont.pointSize() > 2)
       
  5694                     newFont.setPointSize(newFont.pointSize() - 2);
       
  5695                 if (floating)
       
  5696                     newFont.setBold(true);
       
  5697                 painter->setFont(newFont);
       
  5698                 QPalette palette = dwOpt->palette;
       
  5699                 palette.setColor(QPalette::Window, inactiveCaptionTextColor);
       
  5700                 QRect titleRect = proxy()->subElementRect(SE_DockWidgetTitleBarText, option, widget);
       
  5701                 if (verticalTitleBar) {
       
  5702                     titleRect = QRect(r.left() + rect.bottom()
       
  5703                                         - titleRect.bottom(),
       
  5704                                     r.top() + titleRect.left() - rect.left(),
       
  5705                                     titleRect.height(), titleRect.width());
       
  5706                 }
       
  5707                 proxy()->drawItemText(painter, titleRect,
       
  5708                             Qt::AlignLeft | Qt::AlignVCenter | Qt::TextShowMnemonic, palette,
       
  5709                             dwOpt->state & State_Enabled, dwOpt->title,
       
  5710                             floating ? (active ? QPalette::BrightText : QPalette::Window) : QPalette::WindowText);
       
  5711                 painter->setFont(oldFont);
       
  5712             }
       
  5713             if (verticalTitleBar)
       
  5714                 painter->restore();
       
  5715         }
       
  5716         return;
       
  5717 #endif // QT_NO_DOCKWIDGET
       
  5718 
       
  5719     case CE_PushButtonLabel:
       
  5720         if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
       
  5721             painter->save();
       
  5722             QRect ir = button->rect;
       
  5723             QPalette::ColorRole colorRole;
       
  5724             uint tf = Qt::AlignVCenter | Qt::TextShowMnemonic;
       
  5725             if (!styleHint(SH_UnderlineShortcut, button, widget))
       
  5726                 tf |= Qt::TextHideMnemonic;
       
  5727 
       
  5728             if (button->state & (State_On | State_Sunken))
       
  5729                 colorRole = QPalette::Light;
       
  5730             else
       
  5731                 colorRole = QPalette::ButtonText;
       
  5732 
       
  5733             if (!button->icon.isNull()) {
       
  5734                 QIcon::Mode mode = button->state & State_Enabled ? QIcon::Normal
       
  5735                     : QIcon::Disabled;
       
  5736                 if (mode == QIcon::Normal && button->state & State_HasFocus)
       
  5737                     mode = QIcon::Active;
       
  5738                 QIcon::State state = QIcon::Off;
       
  5739                 if (button->state & State_On)
       
  5740                     state = QIcon::On;
       
  5741                 QPixmap pixmap = button->icon.pixmap(button->iconSize, mode, state);
       
  5742                 int pixw = pixmap.width();
       
  5743                 int pixh = pixmap.height();
       
  5744                 //Center the icon if there is no text
       
  5745 
       
  5746                 QPoint point;
       
  5747                 if (button->text.isEmpty()) {
       
  5748                     point = QPoint(ir.x() + ir.width() / 2 - pixw / 2,
       
  5749                         ir.y() + ir.height() / 2 - pixh / 2);
       
  5750                 } else {
       
  5751                     point = QPoint(ir.x() + 2, ir.y() + ir.height() / 2 - pixh / 2);
       
  5752                 }
       
  5753                 if (button->direction == Qt::RightToLeft)
       
  5754                     point.rx() += pixw;
       
  5755 
       
  5756                 if ((button->state & (State_On | State_Sunken)) && button->direction == Qt::RightToLeft)
       
  5757                     point.rx() -= proxy()->pixelMetric(PM_ButtonShiftHorizontal, option, widget) * 2;
       
  5758 
       
  5759                 painter->drawPixmap(visualPos(button->direction, button->rect, point), pixmap);
       
  5760 
       
  5761                 if (button->direction == Qt::RightToLeft)
       
  5762                     ir.translate(-4, 0);
       
  5763                 else
       
  5764                     ir.translate(pixw + 4, 0);
       
  5765                 ir.setWidth(ir.width() - (pixw + 4));
       
  5766                 // left-align text if there is
       
  5767                 if (!button->text.isEmpty())
       
  5768                     tf |= Qt::AlignLeft;
       
  5769             } else {
       
  5770                 tf |= Qt::AlignHCenter;
       
  5771             }
       
  5772             if (button->state & State_Enabled)
       
  5773                 proxy()->drawItemText(painter, ir, tf, button->palette, true, button->text, colorRole);
       
  5774             else
       
  5775             proxy()->drawItemText(painter, ir, tf, button->palette, true, button->text, QPalette::Mid);
       
  5776             painter->restore();
       
  5777         }
       
  5778         break;
       
  5779         default:
       
  5780             QWindowsStyle::drawControl(element, option, painter, widget);
       
  5781             break;
       
  5782     }
       
  5783 }
       
  5784 
       
  5785 void QWindowsMobileStyle::drawComplexControl(ComplexControl control, const QStyleOptionComplex *option,
       
  5786                                              QPainter *painter, const QWidget *widget) const {
       
  5787 
       
  5788     painter->setClipping(false);
       
  5789     QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
       
  5790 
       
  5791     switch (control) {
       
  5792 #ifndef QT_NO_SLIDER
       
  5793     case CC_Slider:
       
  5794         if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(option)) {
       
  5795             int thickness  = proxy()->pixelMetric(PM_SliderControlThickness, slider, widget);
       
  5796             int len        = proxy()->pixelMetric(PM_SliderLength, slider, widget);
       
  5797             int ticks = slider->tickPosition;
       
  5798             QRect groove = proxy()->subControlRect(CC_Slider, slider, SC_SliderGroove, widget);
       
  5799             QRect handle = proxy()->subControlRect(CC_Slider, slider, SC_SliderHandle, widget);
       
  5800 
       
  5801             if ((slider->subControls & SC_SliderGroove) && groove.isValid()) {
       
  5802                 int mid = thickness / 2;
       
  5803                 if (ticks & QSlider::TicksAbove)
       
  5804                     mid += len / 8;
       
  5805                 if (ticks & QSlider::TicksBelow)
       
  5806                     mid -= len / 8;
       
  5807 
       
  5808                 painter->setPen(slider->palette.shadow().color());
       
  5809                 if (slider->orientation == Qt::Horizontal) {
       
  5810                     qDrawPlainRect(painter, groove.x(), groove.y() + mid - 2,
       
  5811                         groove.width(), 4, option->palette.shadow().color(),1,0);
       
  5812                 } else {
       
  5813                     qDrawPlainRect(painter, groove.x()+mid-2, groove.y(),
       
  5814                         4, groove.height(), option->palette.shadow().color(),1,0);
       
  5815                 }
       
  5816             }
       
  5817             if (slider->subControls & SC_SliderTickmarks) {
       
  5818                 QStyleOptionSlider tmpSlider = *slider;
       
  5819                 tmpSlider.subControls = SC_SliderTickmarks;
       
  5820                 QCommonStyle::drawComplexControl(control, &tmpSlider, painter, widget);
       
  5821             }
       
  5822 
       
  5823             if (slider->subControls & SC_SliderHandle) {
       
  5824                 const QColor c0 = slider->palette.shadow().color();
       
  5825                 const QColor c1 = slider->palette.dark().color();
       
  5826                 const QColor c3 = slider->palette.midlight().color();
       
  5827                 const QColor c4 = slider->palette.dark().color();
       
  5828                 QBrush handleBrush;
       
  5829 
       
  5830                 if (slider->state & State_Enabled) {
       
  5831                     handleBrush = slider->palette.color(QPalette::Light);
       
  5832                 } else {
       
  5833                     handleBrush = QBrush(slider->palette.color(QPalette::Shadow),
       
  5834                         Qt::Dense4Pattern);
       
  5835                 }
       
  5836                 int x = handle.x(), y = handle.y(),
       
  5837                     wi = handle.width(), he = handle.height();
       
  5838                 int x1 = x;
       
  5839                 int x2 = x+wi-1;
       
  5840                 int y1 = y;
       
  5841                 int y2 = y+he-1;
       
  5842 
       
  5843                 Qt::Orientation orient = slider->orientation;
       
  5844                 bool tickAbove = slider->tickPosition == QSlider::TicksAbove;
       
  5845                 bool tickBelow = slider->tickPosition == QSlider::TicksBelow;
       
  5846 
       
  5847                 if (slider->state & State_HasFocus) {
       
  5848                     QStyleOptionFocusRect fropt;
       
  5849                     fropt.QStyleOption::operator=(*slider);
       
  5850                     fropt.rect = proxy()->subElementRect(SE_SliderFocusRect, slider, widget);
       
  5851                     proxy()->drawPrimitive(PE_FrameFocusRect, &fropt, painter, widget);
       
  5852                 }
       
  5853                 if ((tickAbove && tickBelow) || (!tickAbove && !tickBelow)) {
       
  5854                     Qt::BGMode oldMode = painter->backgroundMode();
       
  5855                     painter->setBackgroundMode(Qt::OpaqueMode);
       
  5856                     qDrawPlainRect(painter, QRect(x, y, wi, he)
       
  5857                         ,slider->palette.shadow().color(),1,&handleBrush);
       
  5858                     painter->setBackgroundMode(oldMode);
       
  5859                     QBrush fill = QBrush(option->palette.light().color(), Qt::Dense4Pattern);
       
  5860                     if (slider->state & State_Sunken)
       
  5861                         painter->fillRect(QRectF(x1 + 2, y1 + 2, x2 - x1 - 3, y2 - y1 - 3),fill);
       
  5862                     return;
       
  5863                 }
       
  5864                 QSliderDirection dir;
       
  5865                 if (orient == Qt::Horizontal)
       
  5866                     if (tickAbove)
       
  5867                         dir = SliderUp;
       
  5868                     else
       
  5869                         dir = SliderDown;
       
  5870                 else
       
  5871                     if (tickAbove)
       
  5872                         dir = SliderLeft;
       
  5873                     else
       
  5874                         dir = SliderRight;
       
  5875                 QPolygon polygon;
       
  5876                 int d = 0;
       
  5877                 switch (dir) {
       
  5878                   case SliderUp:
       
  5879                       x2++;
       
  5880                       y1 = y1 + wi / 2;
       
  5881                       d =  (wi + 1) / 2 - 1;
       
  5882                       polygon.setPoints(5, x1, y1, x1, y2, x2, y2, x2, y1, x1 + d,y1 - d);
       
  5883                       break;
       
  5884                   case SliderDown:
       
  5885                       x2++;
       
  5886                       y2 = y2 - wi/2;
       
  5887                       d =  (wi + 1) / 2 - 1;
       
  5888                       polygon.setPoints(5, x1, y1, x1, y2, x1 + d,y2 + d, x2, y2, x2, y1);
       
  5889                   break;
       
  5890                       case SliderLeft:
       
  5891                       d =  (he + 1) / 2 - 1;
       
  5892                       x1 = x1 + he/2;
       
  5893                       polygon.setPoints(5, x1, y1, x1 - d, y1 + d, x1,y2, x2, y2, x2, y1);
       
  5894                       y1--;
       
  5895                       break;
       
  5896                   case SliderRight:
       
  5897                       d =  (he + 1) / 2 - 1;
       
  5898                       x2 = x2 - he/2;
       
  5899                       polygon.setPoints(5, x1, y1, x1, y2, x2,y2, x2 + d, y1 + d, x2, y1);
       
  5900                       y1--;
       
  5901                       break;
       
  5902                 }
       
  5903                 QBrush oldBrush = painter->brush();
       
  5904                 painter->setPen(Qt::NoPen);
       
  5905                 painter->setBrush(handleBrush);
       
  5906                 Qt::BGMode oldMode = painter->backgroundMode();
       
  5907                 painter->setBackgroundMode(Qt::OpaqueMode);
       
  5908                 painter->drawRect(x1, y1, x2-x1+1, y2-y1+1);
       
  5909                 painter->drawPolygon(polygon);
       
  5910                 QBrush fill = QBrush(option->palette.button().color(), Qt::Dense4Pattern);
       
  5911                 painter->setBrush(oldBrush);
       
  5912                 painter->setBackgroundMode(oldMode);
       
  5913                 if (slider->state & State_Sunken)
       
  5914                     painter->fillRect(QRectF(x1, y1, x2 - x1 + 1, y2 - y1 + 1),fill);
       
  5915 
       
  5916                 if (dir != SliderUp) {
       
  5917                     painter->setPen(c0);
       
  5918                     painter->drawLine(x1, y1, x2, y1);
       
  5919                 }
       
  5920                 if (dir != SliderLeft) {
       
  5921                     painter->setPen(c0);
       
  5922                     painter->drawLine(x1, y1, x1, y2);
       
  5923                 }
       
  5924                 if (dir != SliderRight) {
       
  5925                     painter->setPen(c0);
       
  5926                     painter->drawLine(x2, y1, x2, y2);
       
  5927                 }
       
  5928                 if (dir != SliderDown) {
       
  5929                     painter->setPen(c0);
       
  5930                     painter->drawLine(x1, y2, x2, y2);
       
  5931                 }
       
  5932                 switch (dir) {
       
  5933                   case SliderUp:
       
  5934                       if (slider->state & State_Sunken)
       
  5935                           painter->fillRect(QRectF(x1 + 3, y1 - d + 2, x2 - x1 - 4, y1),fill);
       
  5936                       painter->setPen(c0);
       
  5937                       painter->drawLine(x1, y1, x1 + d, y1 - d);
       
  5938                       d = wi - d - 1;
       
  5939                       painter->drawLine(x2, y1, x2 -d , y1 -d );
       
  5940                       d--;
       
  5941                       break;
       
  5942                   case SliderDown:
       
  5943                       if (slider->state & State_Sunken)
       
  5944                       painter->fillRect(QRectF(x1+3, y2 - d, x2 - x1  -4,y2 - 8),fill);
       
  5945                       painter->setPen(c0);
       
  5946                       painter->drawLine(x1, y2, x1 + d, y2 + d);
       
  5947                       d = wi - d - 1;
       
  5948                       painter->drawLine(x2, y2, x2 - d, y2 + d);
       
  5949                       d--;
       
  5950                       break;
       
  5951                   case SliderLeft:
       
  5952                       if (slider->state & State_Sunken)
       
  5953                           painter->fillRect(QRectF(x1 - d + 2, y1 + 2, x1, y2 - y1 - 3),fill);
       
  5954                       painter->setPen(c0);
       
  5955                       painter->drawLine(x1, y1, x1 - d, y1 + d);
       
  5956                       d = he - d - 1;
       
  5957                       painter->drawLine(x1, y2, x1 - d, y2 - d);
       
  5958                       d--;
       
  5959                       break;
       
  5960                   case SliderRight:
       
  5961                       if (slider->state & State_Sunken)
       
  5962                           painter->fillRect(QRectF(x2 - d - 4, y1 + 2, x2 - 4, y2 - y1 - 3),fill);
       
  5963                       painter->setPen(c0);
       
  5964                       painter->drawLine(x2, y1, x2 + d, y1 + d);
       
  5965                       painter->setPen(c0);
       
  5966                       d = he - d - 1;
       
  5967                       painter->drawLine(x2, y2, x2 + d, y2 - d);
       
  5968                       d--;
       
  5969                       break;
       
  5970                 }
       
  5971             }
       
  5972         }
       
  5973         break;
       
  5974 #endif //QT_NO_SLIDER
       
  5975 #ifndef QT_NO_SCROLLBAR
       
  5976     case CC_ScrollBar:
       
  5977         painter->save();
       
  5978         painter->setPen(option->palette.shadow().color());
       
  5979         if (d->doubleControls) {
       
  5980             QPen pen = painter->pen();
       
  5981             pen.setWidth(2);
       
  5982             pen.setCapStyle(Qt::SquareCap);
       
  5983             painter->setPen(pen);
       
  5984         }
       
  5985         if (const QStyleOptionSlider *scrollbar = qstyleoption_cast<const QStyleOptionSlider *>(option)) {
       
  5986             d->drawScrollbarGroove(painter, scrollbar);
       
  5987             // Make a copy here and reset it for each primitive.
       
  5988             QStyleOptionSlider newScrollbar = *scrollbar;
       
  5989             State saveFlags = scrollbar->state;
       
  5990             //Check if the scrollbar is part of an abstractItemView and draw the frame according
       
  5991             bool drawCompleteFrame = true;
       
  5992             bool secondScrollBar = false;
       
  5993             if (widget)
       
  5994                 if (QWidget *parent = widget->parentWidget()) {
       
  5995                     if (QAbstractScrollArea *abstractScrollArea = qobject_cast<QAbstractScrollArea *>(parent->parentWidget())) {
       
  5996                         drawCompleteFrame = (abstractScrollArea->frameStyle() == QFrame::NoFrame) ||  (abstractScrollArea->frameStyle() == QFrame::StyledPanel);
       
  5997                         secondScrollBar = (abstractScrollArea->horizontalScrollBar()->isVisible()
       
  5998                             && abstractScrollArea->verticalScrollBar()->isVisible()) ;
       
  5999                     }
       
  6000 #ifndef QT_NO_LISTVIEW
       
  6001                     if (QListView *listView = qobject_cast<QListView *>(parent->parentWidget()))
       
  6002                             drawCompleteFrame = false;
       
  6003 #endif
       
  6004                 }
       
  6005                 if (scrollbar->minimum == scrollbar->maximum)
       
  6006                     saveFlags |= State_Enabled;
       
  6007                 if (scrollbar->subControls & SC_ScrollBarSubLine) {
       
  6008                     newScrollbar.state = saveFlags;
       
  6009                     newScrollbar.rect = proxy()->subControlRect(control, &newScrollbar, SC_ScrollBarSubLine, widget);
       
  6010                     if (newScrollbar.rect.isValid()) {
       
  6011                         if (!(scrollbar->activeSubControls & SC_ScrollBarSubLine))
       
  6012                             newScrollbar.state &= ~(State_Sunken | State_MouseOver);
       
  6013                         d->drawScrollbarHandleUp(painter, &newScrollbar, drawCompleteFrame, secondScrollBar);
       
  6014                     }
       
  6015                 }
       
  6016                 if (scrollbar->subControls & SC_ScrollBarAddLine) {
       
  6017                     newScrollbar.rect = scrollbar->rect;
       
  6018                     newScrollbar.state = saveFlags;
       
  6019                     newScrollbar.rect = proxy()->subControlRect(control, &newScrollbar, SC_ScrollBarAddLine, widget);
       
  6020                     if (newScrollbar.rect.isValid()) {
       
  6021                         if (!(scrollbar->activeSubControls & SC_ScrollBarAddLine))
       
  6022                             newScrollbar.state &= ~(State_Sunken | State_MouseOver);
       
  6023                         d->drawScrollbarHandleDown(painter, &newScrollbar, drawCompleteFrame, secondScrollBar);
       
  6024                     }
       
  6025                 }
       
  6026                 if (scrollbar->subControls & SC_ScrollBarSlider) {
       
  6027 
       
  6028                       newScrollbar.rect = scrollbar->rect;
       
  6029                       newScrollbar.state = saveFlags;
       
  6030                       newScrollbar.rect = proxy()->subControlRect(control, &newScrollbar, SC_ScrollBarSlider, widget);
       
  6031 
       
  6032                       if (newScrollbar.rect.isValid()) {
       
  6033                           if (!(scrollbar->activeSubControls & SC_ScrollBarSlider))
       
  6034                               newScrollbar.state &= ~(State_Sunken | State_MouseOver);
       
  6035                           d->drawScrollbarGrip(painter, &newScrollbar, option, drawCompleteFrame);
       
  6036                       }
       
  6037                 }
       
  6038         }
       
  6039         painter->restore();
       
  6040         break;
       
  6041 #endif // QT_NO_SCROLLBAR
       
  6042     case CC_ToolButton:
       
  6043         if (const QStyleOptionToolButton *toolbutton
       
  6044                 = qstyleoption_cast<const QStyleOptionToolButton *>(option)) {
       
  6045             QRect button, menuarea;
       
  6046             bool isTabWidget = false;
       
  6047 #ifndef QT_NO_TABWIDGET
       
  6048             if (widget)
       
  6049                 if (QWidget *parent = widget->parentWidget())
       
  6050                     isTabWidget = (qobject_cast<QTabWidget *>(parent->parentWidget()));
       
  6051 #endif //QT_NO_TABWIDGET
       
  6052 
       
  6053             button = proxy()->subControlRect(control, toolbutton, SC_ToolButton, widget);
       
  6054             menuarea = proxy()->subControlRect(control, toolbutton, SC_ToolButtonMenu, widget);
       
  6055             State buttonFlags = toolbutton->state;
       
  6056             if (buttonFlags & State_AutoRaise) {
       
  6057                 if (!(buttonFlags & State_MouseOver)) {
       
  6058                     buttonFlags &= ~State_Raised;
       
  6059                 }
       
  6060             }
       
  6061             State menuFlags = buttonFlags;
       
  6062             if (toolbutton->activeSubControls & SC_ToolButton)
       
  6063                 buttonFlags |= State_Sunken;
       
  6064             if (toolbutton->activeSubControls & SC_ToolButtonMenu)
       
  6065                 menuFlags |= State_On;
       
  6066             QStyleOption tool(0);
       
  6067             tool.palette = toolbutton->palette;
       
  6068             if (toolbutton->subControls & SC_ToolButton) {
       
  6069                     tool.rect = button;
       
  6070                     tool.state = buttonFlags;
       
  6071                     proxy()->drawPrimitive(PE_PanelButtonTool, &tool, painter, widget);
       
  6072             }
       
  6073             if (toolbutton->subControls & SC_ToolButtonMenu) {
       
  6074                 tool.rect = menuarea;
       
  6075                 tool.state = buttonFlags & State_Enabled;
       
  6076                 QStyleOption toolMenu(0);
       
  6077                 toolMenu = *toolbutton;
       
  6078                 toolMenu.state = menuFlags;
       
  6079                 if (buttonFlags & State_Sunken)
       
  6080                   proxy()->drawPrimitive(PE_PanelButtonTool, &toolMenu, painter, widget);
       
  6081                 QStyleOption arrowOpt(0);
       
  6082                 arrowOpt.rect = tool.rect;
       
  6083                 arrowOpt.palette = tool.palette;
       
  6084                 State flags = State_None;
       
  6085                 if (menuFlags & State_Enabled)
       
  6086                     flags |= State_Enabled;
       
  6087                 if ((menuFlags & State_On) && !(buttonFlags & State_Sunken)) {
       
  6088                     flags |= State_Sunken;
       
  6089                     painter->fillRect(menuarea, option->palette.shadow());
       
  6090                 }
       
  6091                 arrowOpt.state = flags;
       
  6092                 proxy()->drawPrimitive(PE_IndicatorArrowDown, &arrowOpt, painter, widget);
       
  6093             }
       
  6094             if (toolbutton->state & State_HasFocus) {
       
  6095                 QStyleOptionFocusRect focusRect;
       
  6096                 focusRect.QStyleOption::operator=(*toolbutton);
       
  6097                 focusRect.rect.adjust(3, 3, -3, -3);
       
  6098                 if (toolbutton->features & QStyleOptionToolButton::Menu)
       
  6099                     focusRect.rect.adjust(0, 0, -proxy()->pixelMetric(QStyle::PM_MenuButtonIndicator,
       
  6100                                                          toolbutton, widget), 0);
       
  6101                 proxy()->drawPrimitive(PE_FrameFocusRect, &focusRect, painter, widget);
       
  6102             }
       
  6103             QStyleOptionToolButton label = *toolbutton;
       
  6104             if (isTabWidget)
       
  6105                 label.state = toolbutton->state;
       
  6106             else
       
  6107               label.state = toolbutton->state & State_Enabled;
       
  6108             int fw = proxy()->pixelMetric(PM_DefaultFrameWidth, option, widget);
       
  6109             label.rect = button.adjusted(fw, fw, -fw, -fw);
       
  6110             proxy()->drawControl(CE_ToolButtonLabel, &label, painter, widget);
       
  6111         }
       
  6112         break;
       
  6113 
       
  6114 #ifndef QT_NO_GROUPBOX
       
  6115     case CC_GroupBox:
       
  6116         if (const QStyleOptionGroupBox *groupBox = qstyleoption_cast<const QStyleOptionGroupBox *>(option)) {
       
  6117             // Draw frame
       
  6118             painter->save();
       
  6119             QFont font = painter->font();
       
  6120             font.setBold(true);
       
  6121             painter->setFont(font);
       
  6122             QStyleOptionGroupBox groupBoxFont = *groupBox;
       
  6123             groupBoxFont.fontMetrics = QFontMetrics(font);
       
  6124             QRect textRect = proxy()->subControlRect(CC_GroupBox, &groupBoxFont, SC_GroupBoxLabel, widget);
       
  6125             QRect checkBoxRect = proxy()->subControlRect(CC_GroupBox, option, SC_GroupBoxCheckBox, widget).adjusted(0,0,0,0);
       
  6126             if (groupBox->subControls & QStyle::SC_GroupBoxFrame) {
       
  6127                 QStyleOptionFrameV2 frame;
       
  6128                 frame.QStyleOption::operator=(*groupBox);
       
  6129                 frame.features = groupBox->features;
       
  6130                 frame.lineWidth = groupBox->lineWidth;
       
  6131                 frame.midLineWidth = groupBox->midLineWidth;
       
  6132                 frame.rect = proxy()->subControlRect(CC_GroupBox, option, SC_GroupBoxFrame, widget);
       
  6133                 painter->save();
       
  6134                 QRegion region(groupBox->rect);
       
  6135                 if (!groupBox->text.isEmpty()) {
       
  6136                     bool ltr = groupBox->direction == Qt::LeftToRight;
       
  6137                     QRect finalRect = checkBoxRect.united(textRect);
       
  6138                     if (groupBox->subControls & QStyle::SC_GroupBoxCheckBox)
       
  6139                         finalRect.adjust(ltr ? -4 : 0, 0, ltr ? 0 : 4, 0);
       
  6140                     region -= finalRect;
       
  6141                 }
       
  6142                 proxy()->drawPrimitive(PE_FrameGroupBox, &frame, painter, widget);
       
  6143                 painter->restore();
       
  6144             }
       
  6145              // Draw checkbox
       
  6146             if (groupBox->subControls & SC_GroupBoxCheckBox) {
       
  6147                 QStyleOptionButton box;
       
  6148                 box.QStyleOption::operator=(*groupBox);
       
  6149                 box.rect = checkBoxRect;
       
  6150                 proxy()->drawPrimitive(PE_IndicatorCheckBox, &box, painter, widget);
       
  6151             }
       
  6152             // Draw title
       
  6153             if ((groupBox->subControls & QStyle::SC_GroupBoxLabel) && !groupBox->text.isEmpty()) {
       
  6154                 QColor textColor = groupBox->textColor;
       
  6155                 if (textColor.isValid())
       
  6156                     painter->setPen(textColor);
       
  6157                 else
       
  6158                     painter->setPen(groupBox->palette.link().color());
       
  6159                 painter->setPen(groupBox->palette.link().color());
       
  6160 
       
  6161                 int alignment = int(groupBox->textAlignment);
       
  6162                 if (!styleHint(QStyle::SH_UnderlineShortcut, option, widget))
       
  6163                     alignment |= Qt::TextHideMnemonic;
       
  6164 
       
  6165                 if (groupBox->state & State_Enabled)
       
  6166                     proxy()->drawItemText(painter, textRect,  Qt::TextShowMnemonic | Qt::AlignHCenter | alignment,
       
  6167                     groupBox->palette, true, groupBox->text,
       
  6168                     textColor.isValid() ? QPalette::NoRole : QPalette::Link);
       
  6169                 else
       
  6170                     proxy()->drawItemText(painter, textRect,  Qt::TextShowMnemonic | Qt::AlignHCenter | alignment,
       
  6171                     groupBox->palette, true, groupBox->text, QPalette::Mid);
       
  6172                 if (groupBox->state & State_HasFocus) {
       
  6173                     QStyleOptionFocusRect fropt;
       
  6174                     fropt.QStyleOption::operator=(*groupBox);
       
  6175                     fropt.rect = textRect;
       
  6176                     proxy()->drawPrimitive(PE_FrameFocusRect, &fropt, painter, widget);
       
  6177                 }
       
  6178             }
       
  6179             painter->restore();
       
  6180         }
       
  6181         break;
       
  6182 #endif //QT_NO_GROUPBOX
       
  6183 
       
  6184 #ifndef QT_NO_COMBOBOX
       
  6185     case CC_ComboBox:
       
  6186         if (const QStyleOptionComboBox *cmb = qstyleoption_cast<const QStyleOptionComboBox *>(option)) {
       
  6187             QBrush editBrush = cmb->palette.brush(QPalette::Base);
       
  6188             if ((cmb->subControls & SC_ComboBoxFrame) && cmb->frame)
       
  6189                 qDrawPlainRect(painter, option->rect, option->palette.shadow().color(), proxy()->pixelMetric(PM_ComboBoxFrameWidth, option, widget), &editBrush);
       
  6190             else
       
  6191                 painter->fillRect(option->rect, editBrush);
       
  6192             State flags = State_None;
       
  6193             QRect ar = proxy()->subControlRect(CC_ComboBox, cmb, SC_ComboBoxArrow, widget);
       
  6194             if ((option->state & State_On)) {
       
  6195                 painter->fillRect(ar.adjusted(0, 0, 1, 1),cmb->palette.brush(QPalette::Shadow));
       
  6196             }
       
  6197             if (d->doubleControls)
       
  6198                 ar.adjust(5, 0, 5, 0);
       
  6199             else
       
  6200                 ar.adjust(2, 0, -2, 0);
       
  6201             if (option->state & State_Enabled)
       
  6202                 flags |= State_Enabled;
       
  6203             if (option->state & State_On)
       
  6204                 flags |= State_Sunken;
       
  6205             QStyleOption arrowOpt(0);
       
  6206             arrowOpt.rect = ar;
       
  6207             arrowOpt.palette = cmb->palette;
       
  6208             arrowOpt.state = flags;
       
  6209             proxy()->drawPrimitive(PrimitiveElement(PE_IndicatorArrowDownBig), &arrowOpt, painter, widget);
       
  6210             if (cmb->subControls & SC_ComboBoxEditField) {
       
  6211                 QRect re = proxy()->subControlRect(CC_ComboBox, cmb, SC_ComboBoxEditField, widget);
       
  6212                 if (cmb->state & State_HasFocus && !cmb->editable)
       
  6213                     painter->fillRect(re.x(), re.y(), re.width(), re.height(),
       
  6214                  cmb->palette.brush(QPalette::Highlight));
       
  6215                  if (cmb->state & State_HasFocus) {
       
  6216                     painter->setPen(cmb->palette.highlightedText().color());
       
  6217                     painter->setBackground(cmb->palette.highlight());
       
  6218                  } else {
       
  6219                     painter->setPen(cmb->palette.text().color());
       
  6220                     painter->setBackground(cmb->palette.background());
       
  6221                  }
       
  6222                  if (cmb->state & State_HasFocus && !cmb->editable) {
       
  6223                     QStyleOptionFocusRect focus;
       
  6224                     focus.QStyleOption::operator=(*cmb);
       
  6225                     focus.rect = proxy()->subElementRect(SE_ComboBoxFocusRect, cmb, widget);
       
  6226                     focus.state |= State_FocusAtBorder;
       
  6227                     focus.backgroundColor = cmb->palette.highlight().color();
       
  6228                     if ((option->state & State_On))
       
  6229                       proxy()->drawPrimitive(PE_FrameFocusRect, &focus, painter, widget);
       
  6230                }
       
  6231             }
       
  6232         }
       
  6233         break;
       
  6234 #endif // QT_NO_COMBOBOX
       
  6235 
       
  6236 
       
  6237 #ifndef QT_NO_SPINBOX
       
  6238     case CC_SpinBox:
       
  6239         if (const QStyleOptionSpinBox *spinBox = qstyleoption_cast<const QStyleOptionSpinBox *>(option)) {
       
  6240             QStyleOptionSpinBox copy = *spinBox;
       
  6241             //PrimitiveElement primitiveElement;
       
  6242             int primitiveElement;
       
  6243 
       
  6244             if (spinBox->frame && (spinBox->subControls & SC_SpinBoxFrame)) {
       
  6245                 QRect r = proxy()->subControlRect(CC_SpinBox, spinBox, SC_SpinBoxFrame, widget);
       
  6246                 qDrawPlainRect(painter, r, option->palette.shadow().color(), proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget),0);
       
  6247             }
       
  6248             QPalette shadePal(option->palette);
       
  6249             shadePal.setColor(QPalette::Button, option->palette.light().color());
       
  6250             shadePal.setColor(QPalette::Light, option->palette.base().color());
       
  6251             if (spinBox->subControls & SC_SpinBoxUp) {
       
  6252                 copy.subControls = SC_SpinBoxUp;
       
  6253                 QPalette pal2 = spinBox->palette;
       
  6254                 if (!(spinBox->stepEnabled & QAbstractSpinBox::StepUpEnabled)) {
       
  6255                     pal2.setCurrentColorGroup(QPalette::Disabled);
       
  6256                     copy.state &= ~State_Enabled;
       
  6257                 }
       
  6258                 copy.palette = pal2;
       
  6259                 if (spinBox->activeSubControls == SC_SpinBoxUp && (spinBox->state & State_Sunken)) {
       
  6260                     copy.state |= State_On;
       
  6261                     copy.state |= State_Sunken;
       
  6262                 } else {
       
  6263                     copy.state |= State_Raised;
       
  6264                     copy.state &= ~State_Sunken;
       
  6265                 }
       
  6266                 primitiveElement = (spinBox->buttonSymbols == QAbstractSpinBox::PlusMinus ? PE_IndicatorArrowUpBig
       
  6267                     : PE_IndicatorArrowUpBig);
       
  6268                 copy.rect = proxy()->subControlRect(CC_SpinBox, spinBox, SC_SpinBoxUp, widget);
       
  6269                 if (copy.state & (State_Sunken | State_On))
       
  6270                     qDrawPlainRect(painter, copy.rect, option->palette.shadow().color(), proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), &copy.palette.brush(QPalette::Shadow));
       
  6271                 else
       
  6272                   qDrawPlainRect(painter, copy.rect, option->palette.shadow().color(), proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), &copy.palette.brush(QPalette::Base));
       
  6273                 copy.rect.adjust(proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), 0, -pixelMetric(PM_SpinBoxFrameWidth, option, widget), 0);
       
  6274                 proxy()->drawPrimitive(PrimitiveElement(primitiveElement), &copy, painter, widget);
       
  6275             }
       
  6276             if (spinBox->subControls & SC_SpinBoxDown) {
       
  6277                 copy.subControls = SC_SpinBoxDown;
       
  6278                 copy.state = spinBox->state;
       
  6279                 QPalette pal2 = spinBox->palette;
       
  6280                 if (!(spinBox->stepEnabled & QAbstractSpinBox::StepDownEnabled)) {
       
  6281                     pal2.setCurrentColorGroup(QPalette::Disabled);
       
  6282                     copy.state &= ~State_Enabled;
       
  6283                 }
       
  6284                 copy.palette = pal2;
       
  6285                 if (spinBox->activeSubControls == SC_SpinBoxDown && (spinBox->state & State_Sunken)) {
       
  6286                     copy.state |= State_On;
       
  6287                     copy.state |= State_Sunken;
       
  6288                 } else {
       
  6289                     copy.state |= State_Raised;
       
  6290                     copy.state &= ~State_Sunken;
       
  6291                 }
       
  6292                 primitiveElement = (spinBox->buttonSymbols == QAbstractSpinBox::PlusMinus ? PE_IndicatorArrowDownBig
       
  6293                                                                        : PE_IndicatorArrowDownBig);
       
  6294                 copy.rect = proxy()->subControlRect(CC_SpinBox, spinBox, SC_SpinBoxDown, widget);
       
  6295                 qDrawPlainRect(painter, copy.rect, option->palette.shadow().color(), proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), &copy.palette.brush(QPalette::Base));
       
  6296                 if (copy.state & (State_Sunken | State_On))
       
  6297                     qDrawPlainRect(painter, copy.rect, option->palette.shadow().color(), proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), &copy.palette.brush(QPalette::Shadow));
       
  6298                 else
       
  6299                     qDrawPlainRect(painter, copy.rect, option->palette.shadow().color(), proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), &copy.palette.brush(QPalette::Base));
       
  6300                 copy.rect.adjust(3, 0, -4, 0);
       
  6301                 if (primitiveElement == PE_IndicatorArrowUp || primitiveElement == PE_IndicatorArrowDown) {
       
  6302                     int frameWidth = proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget);
       
  6303                     copy.rect = copy.rect.adjusted(frameWidth, frameWidth, -frameWidth, -frameWidth);
       
  6304                     proxy()->drawPrimitive(PrimitiveElement(primitiveElement), &copy, painter, widget);
       
  6305                 }
       
  6306                 else {
       
  6307                     proxy()->drawPrimitive(PrimitiveElement(primitiveElement), &copy, painter, widget);
       
  6308                 }
       
  6309                 if (spinBox->frame && (spinBox->subControls & SC_SpinBoxFrame)) {
       
  6310                     QRect r = proxy()->subControlRect(CC_SpinBox, spinBox, SC_SpinBoxEditField, widget);
       
  6311                 }
       
  6312             }
       
  6313         }
       
  6314         break;
       
  6315 #endif // QT_NO_SPINBOX
       
  6316 
       
  6317     default:
       
  6318         QWindowsStyle::drawComplexControl(control, option, painter, widget);
       
  6319         break;
       
  6320     }
       
  6321 }
       
  6322 
       
  6323 QSize QWindowsMobileStyle::sizeFromContents(ContentsType type, const QStyleOption *option,
       
  6324                                             const QSize &size, const QWidget *widget) const {
       
  6325 
       
  6326     QSize newSize = QWindowsStyle::sizeFromContents(type, option, size, widget);
       
  6327     switch (type) {
       
  6328     case CT_PushButton:
       
  6329        if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
       
  6330             newSize = QWindowsStyle::sizeFromContents(type, option, size, widget);
       
  6331             int w = newSize.width(),
       
  6332                 h = newSize.height();
       
  6333             int defwidth = 0;
       
  6334             if (button->features & QStyleOptionButton::AutoDefaultButton)
       
  6335                 defwidth = 2 * proxy()->pixelMetric(PM_ButtonDefaultIndicator, button, widget);
       
  6336             if (w < 75 + defwidth && button->icon.isNull())
       
  6337                 w = 75 + defwidth;
       
  6338             if (h < 23 + defwidth)
       
  6339                 h = 23 + defwidth;
       
  6340             newSize = QSize(w + 4, h + 4);
       
  6341         }
       
  6342         break;
       
  6343 
       
  6344 #ifndef QT_NO_GROUPBOX
       
  6345     case CT_GroupBox:
       
  6346         if (const QGroupBox *grb = static_cast<const QGroupBox *>(widget)) {
       
  6347             newSize = size + QSize(!grb->isFlat() ? 16 : 0, !grb->isFlat() ? 16 : 0);
       
  6348         }
       
  6349         break;
       
  6350 #endif // QT_NO_GROUPBOX
       
  6351 
       
  6352     case CT_RadioButton:
       
  6353     case CT_CheckBox:
       
  6354         newSize = size;
       
  6355         if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
       
  6356             bool isRadio = (type == CT_RadioButton);
       
  6357             QRect irect = visualRect(button->direction, button->rect,
       
  6358                                      proxy()->subElementRect(isRadio ? SE_RadioButtonIndicator
       
  6359                                                             : SE_CheckBoxIndicator, button, widget));
       
  6360             int h = proxy()->pixelMetric(isRadio ? PM_ExclusiveIndicatorHeight
       
  6361                                         : PM_IndicatorHeight, button, widget);
       
  6362             int margins = (!button->icon.isNull() && button->text.isEmpty()) ? 0 : 10;
       
  6363              if (d_func()->doubleControls)
       
  6364                  margins *= 2;
       
  6365             newSize += QSize(irect.right() + margins, 1);
       
  6366             newSize.setHeight(qMax(newSize.height(), h));
       
  6367         }
       
  6368         break;
       
  6369 #ifndef QT_NO_COMBOBOX
       
  6370     case CT_ComboBox:
       
  6371         if (const QStyleOptionComboBox *comboBox = qstyleoption_cast<const QStyleOptionComboBox *>(option)) {
       
  6372             int fw = comboBox->frame ? proxy()->pixelMetric(PM_ComboBoxFrameWidth, option, widget) * 2 : 0;
       
  6373             newSize = QSize(newSize.width() + fw + 9, newSize.height() + fw); //Nine is a magic Number - See CommonStyle for real magic (23)
       
  6374         }
       
  6375         break;
       
  6376 #endif
       
  6377 #ifndef QT_NO_SPINBOX
       
  6378     case CT_SpinBox:
       
  6379         if (const QStyleOptionSpinBox *spinBox = qstyleoption_cast<const QStyleOptionSpinBox *>(option)) {
       
  6380             int fw = spinBox->frame ? proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget) * 2 : 0;
       
  6381             newSize = QSize(newSize.width() + fw-5, newSize.height() + fw-6);
       
  6382         }
       
  6383         break;
       
  6384 #endif
       
  6385 #ifndef QT_NO_LINEEDIT
       
  6386     case CT_LineEdit:
       
  6387         newSize += QSize(0,1);
       
  6388         break;
       
  6389 #endif
       
  6390     case CT_ToolButton:
       
  6391         newSize = QSize(newSize.width() + 1, newSize.height());
       
  6392         break;
       
  6393     case CT_TabBarTab:
       
  6394         if (d_func()->doubleControls)
       
  6395             newSize = QSize(newSize.width(), 42);
       
  6396         else
       
  6397             newSize = QSize(newSize.width(), 21);
       
  6398         break;
       
  6399     case CT_HeaderSection:
       
  6400         newSize += QSize(4, 2);
       
  6401         break;
       
  6402 #ifndef QT_NO_ITEMVIEWS
       
  6403 #ifdef Q_WS_WINCE_WM
       
  6404     case CT_ItemViewItem:
       
  6405         if (d_func()->wm65)
       
  6406             if (d_func()->doubleControls)
       
  6407                 newSize.setHeight(46);
       
  6408             else
       
  6409                 newSize.setHeight(23);
       
  6410         break;
       
  6411 #endif //Q_WS_WINCE_WM
       
  6412 #endif //QT_NO_ITEMVIEWS
       
  6413     default:
       
  6414         break;
       
  6415     }
       
  6416     return newSize;
       
  6417 }
       
  6418 
       
  6419 QRect QWindowsMobileStyle::subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const {
       
  6420 
       
  6421     QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
       
  6422     QRect rect = QWindowsStyle::subElementRect(element, option, widget);
       
  6423     switch (element) {
       
  6424 #ifndef QT_NO_TABWIDGET
       
  6425     case SE_TabWidgetTabBar:
       
  6426         if (d->doubleControls)
       
  6427             rect.adjust(-2, 0, 2, 0);
       
  6428         else
       
  6429             rect.adjust(-2, 0, 2, 0);
       
  6430         break;
       
  6431 #endif //QT_NO_TABWIDGET
       
  6432     case SE_CheckBoxFocusRect:
       
  6433         rect.adjust(1,0,-2,-1);
       
  6434         break;
       
  6435     case SE_RadioButtonFocusRect:
       
  6436         rect.adjust(1,1,-2,-2);
       
  6437         break;
       
  6438     default:
       
  6439         break;
       
  6440 #ifndef QT_NO_SLIDER
       
  6441     case SE_SliderFocusRect:
       
  6442         if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(option)) {
       
  6443             rect = slider->rect;
       
  6444         }
       
  6445         break;
       
  6446     case SE_PushButtonFocusRect:
       
  6447         if (d->doubleControls)
       
  6448             rect.adjust(-1, -1, 0, 0);
       
  6449         break;
       
  6450 #endif // QT_NO_SLIDER
       
  6451 #ifndef QT_NO_ITEMVIEWS
       
  6452         case SE_ItemViewItemFocusRect:
       
  6453 #ifdef Q_WS_WINCE_WM
       
  6454             if (d->wm65)
       
  6455                 rect = QRect();
       
  6456 #endif
       
  6457         break;
       
  6458 #endif //QT_NO_ITEMVIEWS
       
  6459     }
       
  6460     return rect;
       
  6461 }
       
  6462 
       
  6463 QRect QWindowsMobileStyle::subControlRect(ComplexControl control, const QStyleOptionComplex *option,
       
  6464                                           SubControl subControl, const QWidget *widget) const {
       
  6465 
       
  6466     QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
       
  6467 
       
  6468     QRect rect = QCommonStyle::subControlRect(control, option, subControl, widget);
       
  6469     switch (control) {
       
  6470 
       
  6471 #ifndef QT_NO_SCROLLBAR
       
  6472     case CC_ScrollBar:
       
  6473         if (const QStyleOptionSlider *scrollbar = qstyleoption_cast<const QStyleOptionSlider *>(option)) {
       
  6474             int sliderButtonExtent = proxy()->pixelMetric(PM_ScrollBarExtent, scrollbar, widget);
       
  6475             float stretchFactor = 1.4f;
       
  6476             int sliderButtonExtentDir = int (sliderButtonExtent * stretchFactor);
       
  6477 
       
  6478 #ifdef Q_WS_WINCE_WM
       
  6479             if (d->wm65)
       
  6480             {
       
  6481                 sliderButtonExtent = d->imageScrollbarHandleUp.width();
       
  6482                 sliderButtonExtentDir = d->imageScrollbarHandleUp.height();
       
  6483             }
       
  6484 #endif //Q_WS_WINCE_WM
       
  6485 
       
  6486             int sliderlen;
       
  6487             int maxlen = ((scrollbar->orientation == Qt::Horizontal) ?
       
  6488                 scrollbar->rect.width() : scrollbar->rect.height()) - (sliderButtonExtentDir * 2);
       
  6489             // calculate slider length
       
  6490             if (scrollbar->maximum != scrollbar->minimum) {
       
  6491                 uint range = scrollbar->maximum - scrollbar->minimum;
       
  6492                 sliderlen = (qint64(scrollbar->pageStep) * maxlen) / (range + scrollbar->pageStep);
       
  6493 
       
  6494                 int slidermin = proxy()->pixelMetric(PM_ScrollBarSliderMin, scrollbar, widget);
       
  6495                 if (sliderlen < slidermin || range > INT_MAX / 2)
       
  6496                     sliderlen = slidermin;
       
  6497                 if (sliderlen > maxlen)
       
  6498                     sliderlen = maxlen;
       
  6499             } else {
       
  6500                 sliderlen = maxlen;
       
  6501             }
       
  6502             int sliderstart = sliderButtonExtentDir + sliderPositionFromValue(scrollbar->minimum,
       
  6503                 scrollbar->maximum,
       
  6504                 scrollbar->sliderPosition,
       
  6505                 maxlen - sliderlen,
       
  6506                 scrollbar->upsideDown);
       
  6507             if (d->smartphone) {
       
  6508                 sliderstart -= sliderButtonExtentDir;
       
  6509                 sliderlen += 2*sliderButtonExtent;
       
  6510             }
       
  6511             switch (subControl) {
       
  6512             case SC_ScrollBarSubLine:            // top/left button
       
  6513                 if (scrollbar->orientation == Qt::Horizontal) {
       
  6514                     int buttonWidth = qMin(scrollbar->rect.width() / 2, sliderButtonExtentDir );
       
  6515                     rect.setRect(0, 0, buttonWidth, sliderButtonExtent);
       
  6516                 } else {
       
  6517                     int buttonHeight = qMin(scrollbar->rect.height() / 2, sliderButtonExtentDir);
       
  6518                     rect.setRect(0, 0, sliderButtonExtent, buttonHeight);
       
  6519                 }
       
  6520                 if (d->smartphone)
       
  6521                     rect.setRect(0, 0, 0, 0);
       
  6522                 break;
       
  6523             case SC_ScrollBarAddLine:            // bottom/right button
       
  6524                 if (scrollbar->orientation == Qt::Horizontal) {
       
  6525                     int buttonWidth = qMin(scrollbar->rect.width()/2, sliderButtonExtentDir);
       
  6526                     rect.setRect(scrollbar->rect.width() - buttonWidth, 0, buttonWidth, sliderButtonExtent);
       
  6527                 } else {
       
  6528                     int buttonHeight = qMin(scrollbar->rect.height()/2, sliderButtonExtentDir );
       
  6529                     rect.setRect(0, scrollbar->rect.height() - buttonHeight, sliderButtonExtent, buttonHeight);
       
  6530                 }
       
  6531                 if (d->smartphone)
       
  6532                     rect.setRect(0, 0, 0, 0);
       
  6533                 break;
       
  6534             case SC_ScrollBarSubPage:            // between top/left button and slider
       
  6535                 if (scrollbar->orientation == Qt::Horizontal)
       
  6536                     if (d->smartphone)
       
  6537                        rect.setRect(0, 0, sliderstart, sliderButtonExtent);
       
  6538                     else
       
  6539                       rect.setRect(sliderButtonExtent, 0, sliderstart - sliderButtonExtent, sliderButtonExtent);
       
  6540                 else
       
  6541                     if (d->smartphone)
       
  6542                       rect.setRect(0, 0, sliderButtonExtent, sliderstart);
       
  6543                     else
       
  6544                       rect.setRect(0, sliderButtonExtent, sliderButtonExtent, sliderstart - sliderButtonExtent);
       
  6545                 break;
       
  6546             case SC_ScrollBarAddPage:            // between bottom/right button and slider
       
  6547                 if (scrollbar->orientation == Qt::Horizontal)
       
  6548                     if (d->smartphone)
       
  6549                       rect.setRect(sliderstart + sliderlen, 0,
       
  6550                                   maxlen - sliderstart - sliderlen + 2*sliderButtonExtent, sliderButtonExtent);
       
  6551                     else
       
  6552                       rect.setRect(sliderstart + sliderlen, 0,
       
  6553                                    maxlen - sliderstart - sliderlen + sliderButtonExtent, sliderButtonExtent);
       
  6554                 else
       
  6555                     if (d->smartphone)
       
  6556                       rect.setRect(0, sliderstart + sliderlen, sliderButtonExtent,
       
  6557                                   maxlen - sliderstart - sliderlen + 2*sliderButtonExtent);
       
  6558                     else
       
  6559                        rect.setRect(0, sliderstart + sliderlen, sliderButtonExtent,
       
  6560                                   maxlen - sliderstart - sliderlen + sliderButtonExtent);
       
  6561                 break;
       
  6562             case SC_ScrollBarGroove:
       
  6563                 if (scrollbar->orientation == Qt::Horizontal)
       
  6564                     rect.setRect(sliderButtonExtent, 0, scrollbar->rect.width() - sliderButtonExtent * 2,
       
  6565                                 scrollbar->rect.height());
       
  6566                 else
       
  6567                     rect.setRect(0, sliderButtonExtent, scrollbar->rect.width(),
       
  6568                                 scrollbar->rect.height() - sliderButtonExtent * 2);
       
  6569                 break;
       
  6570             case SC_ScrollBarSlider:
       
  6571                 if (scrollbar->orientation == Qt::Horizontal)
       
  6572                     rect.setRect(sliderstart, 0, sliderlen, sliderButtonExtent);
       
  6573                 else
       
  6574                     rect.setRect(0, sliderstart, sliderButtonExtent, sliderlen);
       
  6575                 break;
       
  6576             default:
       
  6577                 break;
       
  6578             }
       
  6579             rect = visualRect(scrollbar->direction, scrollbar->rect, rect);
       
  6580         }
       
  6581         break;
       
  6582 #endif // QT_NO_SCROLLBAR
       
  6583 
       
  6584 
       
  6585 
       
  6586 #ifndef QT_NO_TOOLBUTTON
       
  6587     case CC_ToolButton:
       
  6588         if (const QStyleOptionToolButton *toolButton = qstyleoption_cast<const QStyleOptionToolButton *>(option)) {
       
  6589             int mbi = proxy()->pixelMetric(PM_MenuButtonIndicator, toolButton, widget);
       
  6590             rect = toolButton->rect;
       
  6591             switch (subControl) {
       
  6592             case SC_ToolButton:
       
  6593                 if ((toolButton->features
       
  6594                      & (QStyleOptionToolButton::Menu | QStyleOptionToolButton::PopupDelay))
       
  6595                     == QStyleOptionToolButton::Menu)
       
  6596                     rect.adjust(0, 0, -mbi, 0);
       
  6597                 break;
       
  6598             case SC_ToolButtonMenu:
       
  6599                 if ((toolButton->features
       
  6600                      & (QStyleOptionToolButton::Menu | QStyleOptionToolButton::PopupDelay))
       
  6601                     == QStyleOptionToolButton::Menu)
       
  6602                     rect.adjust(rect.width() - mbi, 1, 0, 1);
       
  6603                 break;
       
  6604             default:
       
  6605                 break;
       
  6606             }
       
  6607             rect = visualRect(toolButton->direction, toolButton->rect, rect);
       
  6608         }
       
  6609         break;
       
  6610 #endif // QT_NO_TOOLBUTTON
       
  6611 
       
  6612 #ifndef QT_NO_SLIDER
       
  6613         case CC_Slider:
       
  6614         if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(option)) {
       
  6615             int tickOffset = proxy()->pixelMetric(PM_SliderTickmarkOffset, slider, widget);
       
  6616             int thickness = proxy()->pixelMetric(PM_SliderControlThickness, slider, widget);
       
  6617             switch (subControl) {
       
  6618             case SC_SliderHandle: {
       
  6619                 int sliderPos = 0;
       
  6620                 int len = proxy()->pixelMetric(PM_SliderLength, slider, widget);
       
  6621                 bool horizontal = slider->orientation == Qt::Horizontal;
       
  6622                 sliderPos = sliderPositionFromValue(slider->minimum, slider->maximum,
       
  6623                                                     slider->sliderPosition,
       
  6624                                                     (horizontal ? slider->rect.width()
       
  6625                                                                 : slider->rect.height()) - len,
       
  6626                                                     slider->upsideDown);
       
  6627                 if (horizontal)
       
  6628                     rect.setRect(slider->rect.x() + sliderPos, slider->rect.y() + tickOffset, len, thickness);
       
  6629                 else
       
  6630                     rect.setRect(slider->rect.x() + tickOffset, slider->rect.y() + sliderPos, thickness, len);
       
  6631                 break; }
       
  6632             default:
       
  6633                 break;
       
  6634             }
       
  6635             rect = visualRect(slider->direction, slider->rect, rect);
       
  6636         }
       
  6637         break;
       
  6638 #endif //QT_NO_SLIDER
       
  6639 #ifndef QT_NO_COMBOBOX
       
  6640     case CC_ComboBox:
       
  6641         if (const QStyleOptionComboBox *comboBox = qstyleoption_cast<const QStyleOptionComboBox *>(option)) {
       
  6642         int x = comboBox->rect.x(),
       
  6643             y = comboBox->rect.y(),
       
  6644             wi = comboBox->rect.width(),
       
  6645             he = comboBox->rect.height();
       
  6646         int xpos = x;
       
  6647         int margin = comboBox->frame ? (d->doubleControls ? 2 : 1) : 0;
       
  6648         int bmarg = comboBox->frame ? (d->doubleControls ? 2 : 1) :  0;
       
  6649         if (subControl == SC_ComboBoxArrow)
       
  6650           xpos += wi - int((he - 2*bmarg)*0.9) - bmarg;
       
  6651         else
       
  6652           xpos += wi - (he - 2*bmarg) - bmarg;
       
  6653         switch (subControl) {
       
  6654         case SC_ComboBoxArrow:
       
  6655             rect.setRect(xpos, y + bmarg, he - 2*bmarg, he - 2*bmarg);
       
  6656             break;
       
  6657         case SC_ComboBoxEditField:
       
  6658             rect.setRect(x + margin, y + margin, wi - 2 * margin - int((he - 2*bmarg) * 0.84f), he - 2 * margin);
       
  6659             if (d->doubleControls) {
       
  6660                 if (comboBox->editable)
       
  6661                     rect.adjust(2, 0, 0, 0);
       
  6662                 else
       
  6663                     rect.adjust(4, 2, 0, -2);
       
  6664             } else if (!comboBox->editable) {
       
  6665                 rect.adjust(2, 1, 0, -1);
       
  6666             }
       
  6667             break;
       
  6668         case SC_ComboBoxFrame:
       
  6669             rect = comboBox->rect;
       
  6670             break;
       
  6671         default:
       
  6672         break;
       
  6673         }
       
  6674     }
       
  6675 #endif //QT_NO_COMBOBOX
       
  6676 #ifndef QT_NO_SPINBOX
       
  6677     case CC_SpinBox:
       
  6678         if (const QStyleOptionSpinBox *spinBox = qstyleoption_cast<const QStyleOptionSpinBox *>(option)) {
       
  6679             QSize bs;
       
  6680             int fw = spinBox->frame ? proxy()->pixelMetric(PM_SpinBoxFrameWidth, spinBox, widget) : 0;
       
  6681             bs.setHeight(qMax(d->doubleControls ? 28 : 14, (spinBox->rect.height())));
       
  6682             // 1.6 -approximate golden mean
       
  6683             bs.setWidth(qMax(d->doubleControls ? 28 : 14, qMin((bs.height()*7/8), (spinBox->rect.width() / 8))));
       
  6684             bs = bs.expandedTo(QApplication::globalStrut());
       
  6685             int x, lx, rx;
       
  6686             x = spinBox->rect.width() - bs.width()*2;
       
  6687             lx = fw;
       
  6688             rx = x - fw;
       
  6689             switch (subControl) {
       
  6690             case SC_SpinBoxUp:
       
  6691                 rect = QRect(x + proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), 0 , bs.width(), bs.height());
       
  6692                 break;
       
  6693             case SC_SpinBoxDown:
       
  6694                 rect = QRect(x + bs.width(), 0, bs.width(), bs.height());
       
  6695                 break;
       
  6696             case SC_SpinBoxEditField:
       
  6697                 if (spinBox->buttonSymbols == QAbstractSpinBox::NoButtons) {
       
  6698                     rect = QRect(lx, fw, spinBox->rect.width() - 2*fw - 2, spinBox->rect.height() - 2*fw);
       
  6699                 } else {
       
  6700                     rect = QRect(lx, fw, rx-2, spinBox->rect.height() - 2*fw);
       
  6701                 }
       
  6702                 break;
       
  6703             case SC_SpinBoxFrame:
       
  6704                 rect = spinBox->rect;
       
  6705             default:
       
  6706                 break;
       
  6707           }
       
  6708           rect = visualRect(spinBox->direction, spinBox->rect, rect);
       
  6709         }
       
  6710         break;
       
  6711 #endif // Qt_NO_SPINBOX
       
  6712 #ifndef QT_NO_GROUPBOX
       
  6713     case CC_GroupBox: {
       
  6714         if (const QStyleOptionGroupBox *groupBox = qstyleoption_cast<const QStyleOptionGroupBox *>(option)) {
       
  6715             switch (subControl) {
       
  6716             case SC_GroupBoxFrame:
       
  6717                 // FALL THROUGH
       
  6718             case SC_GroupBoxContents: {
       
  6719                 int topMargin = 0;
       
  6720                 int topHeight = 0;
       
  6721                 int bottomMargin = 0;
       
  6722                 int labelMargin = 2;
       
  6723 
       
  6724                 QRect frameRect = groupBox->rect;
       
  6725                 int verticalAlignment = styleHint(SH_GroupBox_TextLabelVerticalAlignment, groupBox, widget);
       
  6726                 if (groupBox->text.size()) {
       
  6727                     topHeight = groupBox->fontMetrics.height();
       
  6728                     if (verticalAlignment & Qt::AlignVCenter)
       
  6729                         topMargin = topHeight+5;
       
  6730                     else if (verticalAlignment & Qt::AlignTop)
       
  6731                         topMargin = -topHeight+5;
       
  6732                 }
       
  6733                 if (subControl == SC_GroupBoxFrame) {
       
  6734                     frameRect.setTop(topMargin);
       
  6735                     frameRect.setBottom(frameRect.height() + bottomMargin);
       
  6736                     rect = frameRect;
       
  6737                     break;
       
  6738                 }
       
  6739                 int frameWidth = 0;
       
  6740                 if (groupBox->text.size()) {
       
  6741                     frameWidth = proxy()->pixelMetric(PM_DefaultFrameWidth, groupBox, widget);
       
  6742                     rect = frameRect.adjusted(frameWidth, frameWidth + topHeight + labelMargin, -frameWidth, -frameWidth);
       
  6743                 }
       
  6744                 else {
       
  6745                    rect = groupBox->rect;
       
  6746                 }
       
  6747                 break;
       
  6748             }
       
  6749             case SC_GroupBoxCheckBox:
       
  6750                 // FALL THROUGH
       
  6751             case SC_GroupBoxLabel: {
       
  6752                 QFontMetrics fontMetrics = groupBox->fontMetrics;
       
  6753                 int h = fontMetrics.height();
       
  6754                 int textWidth = fontMetrics.size(Qt::TextShowMnemonic, groupBox->text + QLatin1Char(' ')).width();
       
  6755                 int margX = (groupBox->features & QStyleOptionFrameV2::Flat) ? 0 : 2;
       
  6756                 int margY = (groupBox->features & QStyleOptionFrameV2::Flat) ? 0 : 2;
       
  6757                 rect = groupBox->rect.adjusted(margX, margY, -margX, 0);
       
  6758                 if (groupBox->text.size())
       
  6759                     rect.setHeight(h);
       
  6760                 else
       
  6761                   rect.setHeight(0);
       
  6762                 int indicatorWidth = proxy()->pixelMetric(PM_IndicatorWidth, option, widget);
       
  6763                 int indicatorSpace = proxy()->pixelMetric(PM_CheckBoxLabelSpacing, option, widget) - 1;
       
  6764                 bool hasCheckBox = groupBox->subControls & QStyle::SC_GroupBoxCheckBox;
       
  6765                 int checkBoxSize = hasCheckBox ? (indicatorWidth + indicatorSpace) : 0;
       
  6766 
       
  6767                 // Adjusted rect for label + indicatorWidth + indicatorSpace
       
  6768                 QRect totalRect = alignedRect(groupBox->direction, groupBox->textAlignment,
       
  6769                                               QSize(textWidth + checkBoxSize, h), rect);
       
  6770 
       
  6771                 // Adjust totalRect if checkbox is set
       
  6772                 if (hasCheckBox) {
       
  6773                     bool ltr = groupBox->direction == Qt::LeftToRight;
       
  6774                     int left = 2;
       
  6775                     // Adjust for check box
       
  6776                     if (subControl == SC_GroupBoxCheckBox) {
       
  6777                         int indicatorHeight = proxy()->pixelMetric(PM_IndicatorHeight, option, widget);
       
  6778                         left = ltr ? totalRect.left() : (totalRect.right() - indicatorWidth);
       
  6779                         int top = totalRect.top() + (fontMetrics.height() - indicatorHeight) / 2;
       
  6780                         totalRect.setRect(left, top, indicatorWidth, indicatorHeight);
       
  6781                     // Adjust for label
       
  6782                     } else {
       
  6783                         left = ltr ? (totalRect.left() + checkBoxSize - 2) : totalRect.left();
       
  6784                         totalRect.setRect(left, totalRect.top(),
       
  6785                                           totalRect.width() - checkBoxSize, totalRect.height());
       
  6786                     }
       
  6787                 }
       
  6788                   if ((subControl== SC_GroupBoxLabel))
       
  6789                       totalRect.adjust(-2,0,6,0);
       
  6790                   rect = totalRect;
       
  6791                 break;
       
  6792             }
       
  6793             default:
       
  6794                 break;
       
  6795             }
       
  6796         }
       
  6797         break;
       
  6798     }
       
  6799 #endif // QT_NO_GROUPBOX
       
  6800     default:
       
  6801         break;
       
  6802     }
       
  6803     return rect;
       
  6804 }
       
  6805 
       
  6806 QPalette QWindowsMobileStyle::standardPalette() const {
       
  6807     QPalette palette (Qt::black,QColor(198, 195, 198), QColor(222, 223, 222 ),
       
  6808                       QColor(132, 130, 132), QColor(198, 195, 198), Qt::black, Qt::white, Qt::white, QColor(198, 195, 198));
       
  6809     palette.setColor(QPalette::Window, QColor(206, 223, 239));
       
  6810     palette.setColor(QPalette::Link, QColor(8,77,123)); //Alternate TextColor for labels...
       
  6811     palette.setColor(QPalette::Base, Qt::white);
       
  6812     palette.setColor(QPalette::Button, QColor(206, 223, 239));
       
  6813     palette.setColor(QPalette::Highlight, QColor(49, 146, 214));
       
  6814     palette.setColor(QPalette::Light, Qt::white);
       
  6815     palette.setColor(QPalette::Text, Qt::black);
       
  6816     palette.setColor(QPalette::ButtonText, Qt::black);
       
  6817     palette.setColor(QPalette::Midlight, QColor(222, 223, 222 ));
       
  6818     palette.setColor(QPalette::Dark, QColor(132, 130, 132));
       
  6819     palette.setColor(QPalette::Mid, QColor(189, 190, 189));
       
  6820     palette.setColor(QPalette::Shadow, QColor(0, 0, 0));
       
  6821     palette.setColor(QPalette::BrightText, QColor(33, 162, 33)); //color for ItemView checked indicator (arrow)
       
  6822     return palette;
       
  6823 }
       
  6824 
       
  6825 
       
  6826 /*! \reimp */
       
  6827 void QWindowsMobileStyle::polish(QApplication *application) {
       
  6828     QWindowsStyle::polish(application);
       
  6829 }
       
  6830 
       
  6831 /*! \reimp */
       
  6832 void QWindowsMobileStyle::polish(QWidget *widget) {
       
  6833 
       
  6834 #ifndef QT_NO_TOOLBAR
       
  6835     if (QToolBar *toolBar = qobject_cast<QToolBar*>(widget)) {
       
  6836         QPalette pal = toolBar->palette();
       
  6837         pal.setColor(QPalette::Background, pal.button().color());
       
  6838         toolBar->setPalette(pal);
       
  6839     }
       
  6840     else
       
  6841 #endif //QT_NO_TOOLBAR
       
  6842 
       
  6843 #ifndef QT_NO_PROPERTIES
       
  6844         if (QAbstractButton *pushButton = qobject_cast<QAbstractButton*>(widget)) {
       
  6845             QVariant oldFont = widget->property("_q_styleWindowsMobileFont");
       
  6846             if (!oldFont.isValid()) {
       
  6847                 QFont f = pushButton->font();
       
  6848                 widget->setProperty("_q_styleWindowsMobileFont", f);
       
  6849                 f.setBold(true);
       
  6850                 int p = f.pointSize();
       
  6851                 if (p > 2)
       
  6852                     f.setPointSize(p-1);
       
  6853                 pushButton->setFont(f);
       
  6854             }
       
  6855         }
       
  6856 #endif
       
  6857         QWindowsStyle::polish(widget);
       
  6858 }
       
  6859 
       
  6860 void QWindowsMobileStyle::unpolish(QWidget *widget)
       
  6861 {
       
  6862 #ifndef QT_NO_PROPERTIES
       
  6863     if (QAbstractButton *pushButton = qobject_cast<QAbstractButton*>(widget)) {
       
  6864         QVariant oldFont = widget->property("_q_styleWindowsMobileFont");
       
  6865         if (oldFont.isValid()) {
       
  6866             widget->setFont(qVariantValue<QFont>(oldFont));
       
  6867         widget->setProperty("_q_styleWindowsMobileFont", QVariant());
       
  6868         }
       
  6869     }
       
  6870 #endif
       
  6871     QWindowsStyle::unpolish(widget);
       
  6872 }
       
  6873 
       
  6874 void QWindowsMobileStyle::unpolish(QApplication *app)
       
  6875 {
       
  6876     QWindowsStyle::unpolish(app);
       
  6877 }
       
  6878 
       
  6879 /*! \reimp */
       
  6880 void QWindowsMobileStyle::polish(QPalette &palette) {
       
  6881     QWindowsStyle::polish(palette);
       
  6882 }
       
  6883 
       
  6884 int QWindowsMobileStyle::pixelMetric(PixelMetric pm, const QStyleOption *opt, const QWidget *widget) const {
       
  6885 
       
  6886     QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
       
  6887     int ret;
       
  6888 
       
  6889     switch (pm) {
       
  6890     case PM_DefaultTopLevelMargin:
       
  6891         ret =0;
       
  6892         break;
       
  6893     case PM_DefaultLayoutSpacing:
       
  6894         d->doubleControls ? ret = 8 : ret = 4;
       
  6895         break;
       
  6896     case PM_HeaderMargin:
       
  6897         d->doubleControls ? ret = 2 : ret = 1;
       
  6898         break;
       
  6899     case PM_DefaultChildMargin:
       
  6900         d->doubleControls ? ret = 10 : ret = 5;
       
  6901         break;
       
  6902     case PM_ToolBarSeparatorExtent:
       
  6903         d->doubleControls ? ret = 6 : ret = 3;
       
  6904         break;
       
  6905     case PM_DefaultFrameWidth:
       
  6906         d->doubleControls ? ret = 2 : ret = 1;
       
  6907         break;
       
  6908     case PM_MenuVMargin:
       
  6909         ret = 1;
       
  6910         break;
       
  6911     case PM_MenuHMargin:
       
  6912         ret = 1;
       
  6913         break;
       
  6914     case PM_MenuButtonIndicator:
       
  6915         ret = d->doubleControls ? 24 : 14;
       
  6916         break;
       
  6917     case PM_ComboBoxFrameWidth:
       
  6918         d->doubleControls ? ret = 2 : ret = 1;
       
  6919         break;
       
  6920     case PM_SpinBoxFrameWidth:
       
  6921         d->doubleControls ? ret = 2 : ret = 1;
       
  6922         break;
       
  6923     case PM_ButtonDefaultIndicator:
       
  6924     case PM_ButtonShiftHorizontal:
       
  6925     case PM_ButtonShiftVertical:
       
  6926         d->doubleControls ? ret = 2 : ret = 1;
       
  6927         break;
       
  6928 #ifndef QT_NO_TABBAR
       
  6929    case PM_TabBarTabShiftHorizontal:
       
  6930         ret = 0;
       
  6931         break;
       
  6932     case PM_TabBarTabShiftVertical:
       
  6933         ret = 0;
       
  6934         break;
       
  6935 #endif
       
  6936     case PM_MaximumDragDistance:
       
  6937         ret = 60;
       
  6938         break;
       
  6939    case PM_TabBarTabVSpace:
       
  6940         ret = d->doubleControls ? 12 : 6;
       
  6941         break;
       
  6942    case PM_TabBarBaseHeight:
       
  6943        ret = 0;
       
  6944        break;
       
  6945       case PM_IndicatorWidth:
       
  6946           ret = d->doubleControls ? windowsMobileIndicatorSize * 2 : windowsMobileIndicatorSize;
       
  6947         break;
       
  6948     case PM_IndicatorHeight:
       
  6949         ret = d->doubleControls ? windowsMobileIndicatorSize * 2 : windowsMobileIndicatorSize;
       
  6950         break;
       
  6951     case PM_ExclusiveIndicatorWidth:
       
  6952         ret = d->doubleControls ? windowsMobileExclusiveIndicatorSize * 2 + 4: windowsMobileExclusiveIndicatorSize + 2;
       
  6953         break;
       
  6954     case PM_ExclusiveIndicatorHeight:
       
  6955         ret = d->doubleControls ? windowsMobileExclusiveIndicatorSize * 2 + 4: windowsMobileExclusiveIndicatorSize + 2;
       
  6956         break;
       
  6957 #ifndef QT_NO_SLIDER
       
  6958     case PM_SliderLength:
       
  6959         ret = d->doubleControls ? 16 : 8;
       
  6960         break;
       
  6961     case PM_FocusFrameHMargin:
       
  6962         ret = d->doubleControls ? 1 : 2;
       
  6963         break;
       
  6964     case PM_SliderThickness:
       
  6965         ret = d->doubleControls ? windowsMobileSliderThickness * 2: windowsMobileSliderThickness;
       
  6966         break;
       
  6967      case PM_TabBarScrollButtonWidth:
       
  6968          ret = d->doubleControls ? 14 * 2 : 18;
       
  6969       case PM_CheckBoxLabelSpacing:
       
  6970       case PM_RadioButtonLabelSpacing:
       
  6971         ret = d->doubleControls ? 6 * 2 : 6;
       
  6972         break;
       
  6973         // Returns the number of pixels to use for the business part of the
       
  6974         // slider (i.e., the non-tickmark portion). The remaining space is shared
       
  6975         // equally between the tickmark regions.
       
  6976     case PM_SliderControlThickness:
       
  6977         if (const QStyleOptionSlider *sl = qstyleoption_cast<const QStyleOptionSlider *>(opt)) {
       
  6978             int space = (sl->orientation == Qt::Horizontal) ? sl->rect.height() : sl->rect.width();
       
  6979             int ticks = sl->tickPosition;
       
  6980             int n = 0;
       
  6981             if (ticks & QSlider::TicksAbove)
       
  6982                 ++n;
       
  6983             if (ticks & QSlider::TicksBelow)
       
  6984                 ++n;
       
  6985             if (!n) {
       
  6986                 ret = space;
       
  6987                 break;
       
  6988             }
       
  6989             int thick = 8;
       
  6990             if (ticks != QSlider::TicksBothSides && ticks != QSlider::NoTicks)
       
  6991                 thick += proxy()->pixelMetric(PM_SliderLength, sl, widget) / 4;
       
  6992 
       
  6993             space -= thick;
       
  6994             if (space > 0)
       
  6995                 thick += (space * 2) / (n + 2);
       
  6996             ret = thick;
       
  6997         } else {
       
  6998             ret = 0;
       
  6999         }
       
  7000         break;
       
  7001 #endif // QT_NO_SLIDER
       
  7002 #ifndef QT_NO_MENU
       
  7003     case PM_SmallIconSize:
       
  7004         d->doubleControls ? ret = windowsMobileIconSize * 2 : ret = windowsMobileIconSize;
       
  7005         break;
       
  7006     case PM_ButtonMargin:
       
  7007         d->doubleControls ? ret = 8 : ret = 4;
       
  7008         break;
       
  7009     case PM_LargeIconSize:
       
  7010         d->doubleControls ? ret = 64 : ret = 32;
       
  7011         break;
       
  7012     case PM_IconViewIconSize:
       
  7013         ret = proxy()->pixelMetric(PM_LargeIconSize, opt, widget);
       
  7014         break;
       
  7015     case PM_ToolBarIconSize:
       
  7016         d->doubleControls ? ret = 2 * windowsMobileIconSize : ret = windowsMobileIconSize;
       
  7017         break;
       
  7018     case PM_DockWidgetTitleMargin:
       
  7019         ret = 2;
       
  7020         break;
       
  7021 #if defined(Q_WS_WIN)
       
  7022 #else
       
  7023     case PM_DockWidgetFrameWidth:
       
  7024         ret = 4;
       
  7025         break;
       
  7026 #endif // Q_WS_WIN
       
  7027     break;
       
  7028 #endif // QT_NO_MENU
       
  7029 
       
  7030    case PM_TitleBarHeight:
       
  7031         d->doubleControls ? ret = 42 : ret = 21;
       
  7032         break;
       
  7033    case PM_ScrollBarSliderMin:
       
  7034 #ifdef Q_WS_WINCE_WM
       
  7035        if (d->wm65)
       
  7036 #else
       
  7037        if (false)
       
  7038 #endif
       
  7039        {
       
  7040            d->doubleControls ? ret = 68 : ret = 34;
       
  7041        } else {
       
  7042            d->doubleControls ? ret = 36 : ret = 18;
       
  7043        }
       
  7044         break;
       
  7045    case PM_ScrollBarExtent: {
       
  7046        
       
  7047        if (d->smartphone)
       
  7048            ret = 9;
       
  7049        else
       
  7050          d->doubleControls ? ret = 25 : ret = 13;
       
  7051 
       
  7052 #ifdef Q_WS_WINCE_WM
       
  7053        if (d->wm65)
       
  7054 #else
       
  7055        if (false)
       
  7056 #endif
       
  7057        {
       
  7058            d->doubleControls ? ret = 26 : ret = 13;
       
  7059            break;
       
  7060        }
       
  7061 
       
  7062 #ifndef QT_NO_SCROLLAREA
       
  7063        //Check if the scrollbar is part of an abstractItemView and set size according
       
  7064        if (widget)
       
  7065        if (QWidget *parent = widget->parentWidget())
       
  7066            if (qobject_cast<QAbstractScrollArea *>(parent->parentWidget()))
       
  7067                if (d->smartphone)
       
  7068                  ret = 8;
       
  7069                else
       
  7070                  d->doubleControls ? ret = 24 : ret = 12;
       
  7071 #endif
       
  7072        }
       
  7073        break;
       
  7074     case PM_SplitterWidth:
       
  7075         ret = qMax(4, QApplication::globalStrut().width());
       
  7076         break;
       
  7077 
       
  7078 #if defined(Q_WS_WIN)
       
  7079     case PM_MDIFrameWidth:
       
  7080         ret = 1;
       
  7081         break;
       
  7082 #endif
       
  7083     case PM_ToolBarExtensionExtent:
       
  7084         d->doubleControls ? ret = 32 : ret = 16;
       
  7085         break;
       
  7086     case PM_ToolBarItemMargin:
       
  7087         d->doubleControls ? ret = 2 : ret = 1;
       
  7088         break;
       
  7089     case PM_ToolBarItemSpacing:
       
  7090         d->doubleControls ? ret = 2 : ret = 1;
       
  7091         break;
       
  7092     case PM_ToolBarHandleExtent:
       
  7093         d->doubleControls ? ret = 16 : ret = 8;
       
  7094         break;
       
  7095     case PM_ButtonIconSize:
       
  7096         d->doubleControls ? ret = 32 : ret = 16;
       
  7097         break;
       
  7098     case PM_TextCursorWidth:
       
  7099         ret = 2;
       
  7100         break;
       
  7101     case PM_TabBar_ScrollButtonOverlap:
       
  7102         ret = 0;
       
  7103         break;
       
  7104     default:
       
  7105         ret = QWindowsStyle::pixelMetric(pm, opt, widget);
       
  7106         break;
       
  7107     }
       
  7108     return ret;
       
  7109 }
       
  7110 
       
  7111 int QWindowsMobileStyle::styleHint(StyleHint hint, const QStyleOption *opt, const QWidget *widget,
       
  7112                                    QStyleHintReturn *returnData) const {
       
  7113 
       
  7114     int ret;
       
  7115     switch (hint) {
       
  7116     case SH_Menu_MouseTracking:
       
  7117     case SH_ComboBox_ListMouseTracking:
       
  7118     case SH_EtchDisabledText:
       
  7119         ret = 0;
       
  7120         break;
       
  7121     case SH_DitherDisabledText:
       
  7122         ret = 0;
       
  7123         break;
       
  7124     case SH_ItemView_ShowDecorationSelected:
       
  7125         ret = 0;
       
  7126         break;
       
  7127 #ifndef QT_NO_TABWIDGET
       
  7128     case SH_TabWidget_DefaultTabPosition:
       
  7129         ret = QTabWidget::South;
       
  7130         break;
       
  7131 #endif
       
  7132     case SH_ToolBar_Movable:
       
  7133         ret = false;
       
  7134         break;
       
  7135     case SH_ScrollBar_ContextMenu:
       
  7136         ret = false;
       
  7137         break;
       
  7138     case SH_MenuBar_AltKeyNavigation:
       
  7139         ret = false;
       
  7140         break;
       
  7141     case SH_RequestSoftwareInputPanel:
       
  7142         ret = RSIP_OnMouseClick;
       
  7143         break;
       
  7144     default:
       
  7145           ret = QWindowsStyle::styleHint(hint, opt, widget, returnData);
       
  7146        break;
       
  7147     }
       
  7148     return ret;
       
  7149 }
       
  7150 
       
  7151 QPixmap QWindowsMobileStyle::standardPixmap(StandardPixmap sp, const QStyleOption *option,
       
  7152                                      const QWidget *widget) const {
       
  7153 
       
  7154     QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
       
  7155     switch (sp) {
       
  7156 #ifndef QT_NO_IMAGEFORMAT_XPM
       
  7157     case SP_ToolBarHorizontalExtensionButton: {
       
  7158         QPixmap pixmap = QCommonStyle::standardPixmap(sp, option, widget);
       
  7159         if (d->doubleControls)
       
  7160             return pixmap.scaledToHeight(pixmap.height() * 2);
       
  7161         else
       
  7162           return pixmap;
       
  7163      }
       
  7164      case SP_TitleBarMaxButton:
       
  7165      case SP_TitleBarCloseButton:
       
  7166      case SP_TitleBarNormalButton:
       
  7167      case SP_TitleBarMinButton: {
       
  7168          QImage image;
       
  7169          switch (sp) {
       
  7170             case SP_TitleBarMaxButton:
       
  7171                 image = d->imageMaximize;
       
  7172             break;
       
  7173             case SP_TitleBarCloseButton:
       
  7174                 image = d->imageClose;
       
  7175             break;
       
  7176             case SP_TitleBarNormalButton:
       
  7177                 image = d->imageNormalize;
       
  7178             break;
       
  7179             case SP_TitleBarMinButton:
       
  7180                 image = d->imageMinimize;
       
  7181             break;
       
  7182             default:
       
  7183             break;
       
  7184          }
       
  7185          if (option) {
       
  7186              image.setColor(0, option->palette.shadow().color().rgba());
       
  7187              image.setColor(1, option->palette.highlight().color().rgba());
       
  7188              image.setColor(2, option->palette.highlight().color().lighter(150).rgba());
       
  7189              image.setColor(3, option->palette.highlightedText().color().rgba());
       
  7190          }
       
  7191 
       
  7192          return QPixmap::fromImage(image);
       
  7193      }
       
  7194 
       
  7195 #endif
       
  7196     default:
       
  7197         return QWindowsStyle::standardPixmap(sp, option, widget);
       
  7198     }
       
  7199 }
       
  7200 
       
  7201 QPixmap QWindowsMobileStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap,
       
  7202                                                  const QStyleOption *option) const {
       
  7203 
       
  7204     switch (iconMode) {
       
  7205     case QIcon::Selected: {
       
  7206 #ifdef Q_WS_WINCE_WM
       
  7207         if (d_func()->wm65)
       
  7208             return pixmap;
       
  7209 #endif //Q_WS_WINCE_WM
       
  7210         QImage img = pixmap.toImage().convertToFormat(QImage::Format_ARGB32);
       
  7211         int imgh = img.height();
       
  7212         int imgw = img.width();
       
  7213         for (int y = 0; y < imgh; y += 2) {
       
  7214             for (int x = 0; x < imgw; x += 2) {
       
  7215                 QColor c = option->palette.highlight().color().rgb();
       
  7216                 c.setAlpha( qAlpha(img.pixel(x, y)));
       
  7217                 QRgb pixel = c.rgba();
       
  7218                 img.setPixel(x, y, pixel);
       
  7219             }
       
  7220         }
       
  7221         return QPixmap::fromImage(img);
       
  7222     }
       
  7223     default:
       
  7224     break;
       
  7225     }
       
  7226     return QWindowsStyle::generatedIconPixmap(iconMode, pixmap, option);
       
  7227 }
       
  7228 
       
  7229 
       
  7230 bool QWindowsMobileStyle::doubleControls() const {
       
  7231 
       
  7232     QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
       
  7233 
       
  7234     return d->doubleControls;
       
  7235 }
       
  7236 
       
  7237 void QWindowsMobileStyle::setDoubleControls(bool doubleControls) {
       
  7238 
       
  7239    QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
       
  7240 
       
  7241    d->doubleControls = doubleControls;
       
  7242 }
       
  7243 
       
  7244 QT_END_NAMESPACE
       
  7245 
       
  7246 #endif // QT_NO_STYLE_WINDOWSMOBILE
       
  7247