util/src/gui/styles/qwindowsmobilestyle.cpp
changeset 7 f7bc934e204c
equal deleted inserted replaced
3:41300fa6a67c 7:f7bc934e204c
       
     1 /****************************************************************************
       
     2 **
       
     3 ** Copyright (C) 2010 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     currentTintButton = color;
       
  4046 
       
  4047     imageTabEnd = QImage(tabend_xpm);
       
  4048     imageTabSelectedEnd = QImage(tabselectedend_xpm);
       
  4049     imageTabSelectedBegin = QImage(tabselectedbeginn_xpm);
       
  4050     imageTabMiddle = QImage(tabmiddle_xpm);
       
  4051     tintImage(&imageTabEnd, color, 0.0);
       
  4052     tintImage(&imageTabSelectedEnd, color, 0.0);
       
  4053     tintImage(&imageTabSelectedBegin, color, 0.0);
       
  4054     tintImage(&imageTabMiddle, color, 0.0);
       
  4055 
       
  4056     if (!doubleControls) {
       
  4057         int height = imageTabMiddle.height() / 2 + 1;
       
  4058         imageTabEnd = imageTabEnd.scaledToHeight(height);
       
  4059         imageTabMiddle = imageTabMiddle.scaledToHeight(height);
       
  4060         imageTabSelectedEnd = imageTabSelectedEnd.scaledToHeight(height);
       
  4061         imageTabSelectedBegin = imageTabSelectedBegin.scaledToHeight(height);
       
  4062     }
       
  4063 }
       
  4064 
       
  4065 void QWindowsMobileStylePrivate::tintImagesHigh(QColor color)
       
  4066 {
       
  4067     if (currentTintHigh == color)
       
  4068         return;
       
  4069     currentTintHigh = color;
       
  4070     tintListViewHighlight(color);
       
  4071     imageScrollbarHandleUpHigh = imageScrollbarHandleUp;
       
  4072     imageScrollbarHandleDownHigh = imageScrollbarHandleDown;
       
  4073     tintImagePal(&imageScrollbarHandleDownHigh, color, qreal(0.8));
       
  4074     tintImagePal(&imageScrollbarHandleUpHigh, color, qreal(0.8));
       
  4075 }
       
  4076 
       
  4077 void QWindowsMobileStylePrivate::tintListViewHighlight(QColor color)
       
  4078 {
       
  4079     imageListViewHighlightCornerRight = QImage(listviewhighcornerright_xpm);
       
  4080     tintImage(&imageListViewHighlightCornerRight, color, qreal(0.0));
       
  4081 
       
  4082     imageListViewHighlightCornerLeft = QImage(listviewhighcornerleft_xpm);
       
  4083     tintImage(&imageListViewHighlightCornerLeft, color, qreal(0.0));
       
  4084 
       
  4085     imageListViewHighlightMiddle = QImage(listviewhighmiddle_xpm);
       
  4086     tintImage(&imageListViewHighlightMiddle, color, qreal(0.0));
       
  4087      
       
  4088      int height = imageListViewHighlightMiddle.height();
       
  4089      if (!doubleControls) {
       
  4090          height = height / 2;
       
  4091          imageListViewHighlightCornerRight = imageListViewHighlightCornerRight.scaledToHeight(height);
       
  4092          imageListViewHighlightCornerLeft = imageListViewHighlightCornerLeft.scaledToHeight(height);
       
  4093          imageListViewHighlightMiddle = imageListViewHighlightMiddle.scaledToHeight(height);
       
  4094      }
       
  4095 }
       
  4096 
       
  4097 #endif //Q_WS_WINCE_WM
       
  4098 
       
  4099 void QWindowsMobileStylePrivate::setupWindowsMobileStyle65()
       
  4100 {
       
  4101 #ifdef Q_WS_WINCE_WM
       
  4102     wm65 = qt_wince_is_windows_mobile_65();
       
  4103     if (wm65) {
       
  4104         imageScrollbarHandleUp =  QImage(sbhandleup_xpm);
       
  4105         imageScrollbarHandleDown = QImage(sbhandledown_xpm);
       
  4106         imageScrollbarGripUp = QImage(sbgripup_xpm);
       
  4107         imageScrollbarGripDown = QImage(sbgripdown_xpm);
       
  4108         imageScrollbarGripMiddle = QImage(sbgripmiddle_xpm);
       
  4109 
       
  4110         if (!doubleControls) {
       
  4111             imageScrollbarHandleUp = imageScrollbarHandleUp.scaledToHeight(imageScrollbarHandleUp.height() / 2);
       
  4112             imageScrollbarHandleDown = imageScrollbarHandleDown.scaledToHeight(imageScrollbarHandleDown.height() / 2);
       
  4113             imageScrollbarGripMiddle = imageScrollbarGripMiddle.scaledToHeight(imageScrollbarGripMiddle.height() / 2);
       
  4114             imageScrollbarGripUp = imageScrollbarGripUp.scaledToHeight(imageScrollbarGripUp.height() / 2);
       
  4115             imageScrollbarGripDown = imageScrollbarGripDown.scaledToHeight(imageScrollbarGripDown.height() / 2);
       
  4116         } else {
       
  4117         }
       
  4118         tintImagesHigh(Qt::blue);
       
  4119     }
       
  4120 #endif //Q_WS_WINCE_WM
       
  4121 }
       
  4122 
       
  4123 void QWindowsMobileStylePrivate::drawTabBarTab(QPainter *painter, const QStyleOptionTab *tab)
       
  4124 {
       
  4125 #ifndef QT_NO_TABBAR
       
  4126 #ifdef Q_WS_WINCE_WM
       
  4127     if (wm65) {
       
  4128         tintImagesButton(tab->palette.button().color());
       
  4129         QRect r;
       
  4130         r.setTopLeft(tab->rect.topRight() - QPoint(imageTabMiddle.width(), 0));
       
  4131         r.setBottomRight(tab->rect.bottomRight());
       
  4132         if (tab->state & QStyle::State_Selected) {
       
  4133             painter->fillRect(tab->rect, tab->palette.window());
       
  4134         } else {
       
  4135             painter->fillRect(tab->rect, QColor(imageTabMiddle.pixel(0,0)));
       
  4136         }
       
  4137         if  (tab->selectedPosition ==  QStyleOptionTab::NextIsSelected) {
       
  4138             painter->drawImage(r, imageTabSelectedBegin);
       
  4139         } else if (tab->position == QStyleOptionTab::End ||
       
  4140             tab->position == QStyleOptionTab::OnlyOneTab) {
       
  4141                 if (!(tab->state & QStyle::State_Selected)) {
       
  4142                     painter->drawImage(r, imageTabEnd);
       
  4143                 }
       
  4144         } else if (tab->state & QStyle::State_Selected) {
       
  4145             painter->drawImage(r, imageTabSelectedEnd);
       
  4146         } else {
       
  4147             painter->drawImage(r, imageTabMiddle);
       
  4148         }
       
  4149         if (tab->position == QStyleOptionTab::Beginning && ! (tab->state & QStyle::State_Selected)) {
       
  4150             painter->drawImage(tab->rect.topLeft() - QPoint(imageTabMiddle.width() * 0.60, 0), imageTabSelectedEnd);
       
  4151         }
       
  4152         //imageTabBarBig
       
  4153         return;
       
  4154     }
       
  4155 #endif //Q_WS_WINCE_WM
       
  4156     painter->save();
       
  4157     painter->setPen(tab->palette.shadow().color());
       
  4158     if (doubleControls) {
       
  4159         QPen pen = painter->pen();
       
  4160         pen.setWidth(2);
       
  4161         pen.setCapStyle(Qt::FlatCap);
       
  4162         painter->setPen(pen);
       
  4163     }
       
  4164     if(tab->shape == QTabBar::RoundedNorth) {
       
  4165         if (tab->state & QStyle::State_Selected) {
       
  4166             painter->fillRect(tab->rect, tab->palette.light());
       
  4167             painter->drawLine(tab->rect.topRight(), tab->rect.bottomRight());
       
  4168         }
       
  4169         else {
       
  4170             painter->fillRect(tab->rect, tab->palette.button());
       
  4171             painter->drawLine(tab->rect.bottomLeft() , tab->rect.bottomRight());
       
  4172             painter->drawLine(tab->rect.topRight(), tab->rect.bottomRight());
       
  4173         }
       
  4174     }
       
  4175     else if(tab->shape == QTabBar::RoundedSouth) {
       
  4176         if (tab->state & QStyle::State_Selected) {
       
  4177             painter->fillRect(tab->rect.adjusted(0,-2,0,0), tab->palette.light());
       
  4178             painter->drawLine(tab->rect.topRight(), tab->rect.bottomRight());
       
  4179         }
       
  4180         else {
       
  4181             painter->fillRect(tab->rect, tab->palette.button());
       
  4182             if (doubleControls)
       
  4183                 painter->drawLine(tab->rect.topLeft() + QPoint(0,1), tab->rect.topRight() + QPoint(0,1));
       
  4184             else
       
  4185                 painter->drawLine(tab->rect.topLeft(), tab->rect.topRight());
       
  4186             painter->drawLine(tab->rect.topRight(), tab->rect.bottomRight());
       
  4187         }
       
  4188     }
       
  4189     else if(tab->shape == QTabBar::RoundedEast) {
       
  4190         if (tab->state & QStyle::State_Selected) {
       
  4191             painter->fillRect(tab->rect, tab->palette.light());
       
  4192             painter->drawLine(tab->rect.topLeft(), tab->rect.topRight());
       
  4193         }
       
  4194         else {
       
  4195             painter->fillRect(tab->rect, tab->palette.button());
       
  4196             painter->drawLine(tab->rect.topLeft(), tab->rect.bottomLeft());
       
  4197             painter->drawLine(tab->rect.topLeft(), tab->rect.topRight());
       
  4198         }
       
  4199     }
       
  4200     else if(tab->shape == QTabBar::RoundedWest) {
       
  4201         if (tab->state & QStyle::State_Selected) {
       
  4202             painter->fillRect(tab->rect, tab->palette.light());
       
  4203             painter->drawLine(tab->rect.bottomLeft(), tab->rect.bottomRight());
       
  4204         }
       
  4205         else {
       
  4206             painter->fillRect(tab->rect, tab->palette.button());
       
  4207             painter->drawLine(tab->rect.topRight(), tab->rect.bottomRight());
       
  4208             painter->drawLine(tab->rect.bottomLeft(), tab->rect.bottomRight());
       
  4209         }
       
  4210     }
       
  4211     painter->restore();
       
  4212 #endif //QT_NO_TABBAR
       
  4213 }
       
  4214 
       
  4215 void QWindowsMobileStylePrivate::drawPanelItemViewSelected(QPainter *painter, const QStyleOptionViewItemV4 *option, QRect rect)
       
  4216 {
       
  4217 #ifdef Q_WS_WINCE_WM
       
  4218     if (wm65) {
       
  4219         QRect r;
       
  4220         if (rect.isValid())
       
  4221             r = rect;
       
  4222         else 
       
  4223             r = option->rect;
       
  4224         tintImagesHigh(option->palette.highlight().color());
       
  4225 
       
  4226         painter->setPen(QColor(Qt::lightGray));
       
  4227 
       
  4228         if (option->viewItemPosition ==  QStyleOptionViewItemV4::Middle) {
       
  4229             painter->drawImage(r, imageListViewHighlightMiddle);
       
  4230         } else if (option->viewItemPosition ==  QStyleOptionViewItemV4::Beginning) {
       
  4231             painter->drawImage(r.adjusted(10, 0, 0, 0), imageListViewHighlightMiddle);
       
  4232         } else if (option->viewItemPosition ==  QStyleOptionViewItemV4::End) {
       
  4233             painter->drawImage(r.adjusted(0, 0, -10, 0), imageListViewHighlightMiddle);
       
  4234         } else {
       
  4235             painter->drawImage(r.adjusted(10, 0, -10, 0), imageListViewHighlightMiddle);
       
  4236         }
       
  4237 
       
  4238         QImage cornerLeft = imageListViewHighlightCornerLeft;
       
  4239         QImage cornerRight = imageListViewHighlightCornerRight;
       
  4240 
       
  4241         int width = r.width() > cornerRight.width() ? r.width() : cornerRight.width();
       
  4242 
       
  4243         if ((width * 2) > r.width()) {
       
  4244             width = (r.width() - 5) / 2;
       
  4245         }
       
  4246 
       
  4247         cornerLeft = cornerLeft.scaled(width, r.height());
       
  4248         cornerRight = cornerRight.scaled(width, r.height());
       
  4249 
       
  4250         if ((option->viewItemPosition ==  QStyleOptionViewItemV4::Beginning) || (option->viewItemPosition ==  QStyleOptionViewItemV4::OnlyOne) || !option->viewItemPosition) {
       
  4251             painter->drawImage(r.topLeft(), cornerLeft);
       
  4252         }
       
  4253         if ((option->viewItemPosition ==  QStyleOptionViewItemV4::End) || (option->viewItemPosition ==  QStyleOptionViewItemV4::OnlyOne) || !option->viewItemPosition) {
       
  4254             painter->drawImage(r.topRight() - QPoint(cornerRight.width(),0), cornerRight);
       
  4255         }
       
  4256         return;
       
  4257     }
       
  4258 #endif //Q_WS_WINCE_WM
       
  4259     QPalette::ColorGroup cg = option->state & QStyle::State_Enabled
       
  4260                                       ? QPalette::Normal : QPalette::Disabled;
       
  4261 
       
  4262     if (rect.isValid())
       
  4263         painter->fillRect(rect, option->palette.brush(cg, QPalette::Highlight));
       
  4264     else
       
  4265         painter->fillRect(option->rect, option->palette.brush(cg, QPalette::Highlight));
       
  4266 }
       
  4267 
       
  4268 void QWindowsMobileStylePrivate::drawScrollbarGrip(QPainter *p, QStyleOptionSlider *newScrollbar, const QStyleOptionComplex *option, bool drawCompleteFrame)
       
  4269 {
       
  4270 #ifdef Q_WS_WINCE_WM
       
  4271     if (wm65) {
       
  4272         if (newScrollbar->orientation == Qt::Horizontal) {
       
  4273             QTransform transform;
       
  4274             transform.rotate(-90);
       
  4275             QRect r = newScrollbar->rect;
       
  4276             p->drawImage(r.adjusted(10, 0, -10, 0), imageScrollbarGripMiddle.transformed(transform));
       
  4277             p->drawImage(r.topLeft(), imageScrollbarGripUp.transformed(transform));
       
  4278             p->drawImage(r.topRight() - QPoint(imageScrollbarGripDown.height() - 1, 0), imageScrollbarGripDown.transformed(transform));
       
  4279         } else {
       
  4280             QRect r = newScrollbar->rect;
       
  4281             p->drawImage(r.adjusted(0, 10, 0, -10), imageScrollbarGripMiddle);
       
  4282             p->drawImage(r.topLeft(), imageScrollbarGripUp);
       
  4283             p->drawImage(r.bottomLeft() - QPoint(0, imageScrollbarGripDown.height() - 1), imageScrollbarGripDown);
       
  4284         }
       
  4285         return ;
       
  4286     }
       
  4287 #endif
       
  4288         if (newScrollbar->orientation == Qt::Horizontal) {
       
  4289             p->fillRect(newScrollbar->rect,option->palette.button());
       
  4290             QRect r = newScrollbar->rect;
       
  4291             p->drawLine(r.topLeft(), r.bottomLeft());
       
  4292             p->drawLine(r.topRight(), r.bottomRight());
       
  4293             if (smartphone) {
       
  4294                 p->drawLine(r.topLeft(), r.topRight());
       
  4295                 p->drawLine(r.bottomLeft(), r.bottomRight());
       
  4296             }
       
  4297         }
       
  4298         else {
       
  4299             p->fillRect(newScrollbar->rect,option->palette.button());
       
  4300             QRect r = newScrollbar->rect;
       
  4301             p->drawLine(r.topLeft(), r.topRight());
       
  4302             p->drawLine(r.bottomLeft(), r.bottomRight());
       
  4303             if (smartphone) {
       
  4304                 p->drawLine(r.topLeft(), r.bottomLeft());
       
  4305                 p->drawLine(r.topRight(), r.bottomRight());
       
  4306             }
       
  4307         }
       
  4308         if (newScrollbar->state & QStyle::State_HasFocus) {
       
  4309             QStyleOptionFocusRect fropt;
       
  4310             fropt.QStyleOption::operator=(*newScrollbar);
       
  4311             fropt.rect.setRect(newScrollbar->rect.x() + 2, newScrollbar->rect.y() + 2,
       
  4312                 newScrollbar->rect.width() - 5,
       
  4313                 newScrollbar->rect.height() - 5);
       
  4314         }
       
  4315     int gripMargin = doubleControls ? 4 : 2;
       
  4316     int doubleLines = doubleControls ? 2 : 1;
       
  4317     //If there is a frame around the scrollbar (abstractScrollArea),
       
  4318     //then the margin is different, because of the missing frame
       
  4319     int gripMarginFrame = doubleControls ? 3 : 1;
       
  4320     if (drawCompleteFrame)
       
  4321         gripMarginFrame = 0;
       
  4322     //draw grips
       
  4323     if (!smartphone)
       
  4324         if (newScrollbar->orientation == Qt::Horizontal) {
       
  4325             for (int i = -3; i < 3; i += 2) {
       
  4326                 p->drawLine(
       
  4327                     QPoint(newScrollbar->rect.center().x() + i * doubleLines + 1,
       
  4328                     newScrollbar->rect.top() + gripMargin +gripMarginFrame),
       
  4329                     QPoint(newScrollbar->rect.center().x() + i * doubleLines + 1,
       
  4330                     newScrollbar->rect.bottom() - gripMargin));
       
  4331             }
       
  4332         } else {
       
  4333             for (int i = -2; i < 4 ; i += 2) {
       
  4334                 p->drawLine(
       
  4335                     QPoint(newScrollbar->rect.left() + gripMargin + gripMarginFrame ,
       
  4336                     newScrollbar->rect.center().y() + 1 + i * doubleLines - 1),
       
  4337                     QPoint(newScrollbar->rect.right() - gripMargin,
       
  4338                     newScrollbar->rect.center().y() + 1 + i * doubleLines - 1));
       
  4339             }
       
  4340         }
       
  4341         if (!smartphone) {
       
  4342             QRect r;
       
  4343             if (doubleControls)
       
  4344                 r = option->rect.adjusted(1, 1, -1, 0);
       
  4345             else
       
  4346                 r = option->rect.adjusted(0, 0, -1, 0);
       
  4347             if (drawCompleteFrame && doubleControls)
       
  4348                 r.adjust(0, 0, 0, -1);
       
  4349             //Check if the scrollbar is part of an abstractItemView and draw the frame according
       
  4350             if (drawCompleteFrame)
       
  4351                 p->drawRect(r);
       
  4352             else
       
  4353                 if (newScrollbar->orientation == Qt::Horizontal)
       
  4354                     p->drawLine(r.topLeft(), r.topRight());
       
  4355                 else
       
  4356                     p->drawLine(r.topLeft(), r.bottomLeft());
       
  4357         }
       
  4358 }
       
  4359 
       
  4360 void QWindowsMobileStylePrivate::drawScrollbarHandleUp(QPainter *p, QStyleOptionSlider *opt, bool completeFrame, bool )
       
  4361 {
       
  4362 #ifdef Q_WS_WINCE_WM
       
  4363     if (wm65) {
       
  4364         tintImagesHigh(opt->palette.highlight().color());
       
  4365         QRect r = opt->rect;
       
  4366          if (opt->orientation == Qt::Horizontal) {
       
  4367             QTransform transform;
       
  4368             transform.rotate(-90);
       
  4369             if (opt->state & QStyle::State_Sunken)
       
  4370                 p->drawImage(r.topLeft(), imageScrollbarHandleUpHigh.transformed(transform));
       
  4371             else
       
  4372                 p->drawImage(r.topLeft(), imageScrollbarHandleUp.transformed(transform));
       
  4373          } else {
       
  4374              if (opt->state & QStyle::State_Sunken)
       
  4375                  p->drawImage(r.topLeft(), imageScrollbarHandleUpHigh);
       
  4376              else
       
  4377                  p->drawImage(r.topLeft(), imageScrollbarHandleUp);
       
  4378          }
       
  4379         return ;
       
  4380     }
       
  4381 #endif //Q_WS_WINCE_WM
       
  4382 
       
  4383     QBrush fill = opt->palette.button();
       
  4384     if (opt->state & QStyle::State_Sunken)
       
  4385         fill = opt->palette.shadow();
       
  4386 
       
  4387     QStyleOption arrowOpt = *opt;
       
  4388     if (doubleControls)
       
  4389         arrowOpt.rect = opt->rect.adjusted(4, 6, -5, -3);
       
  4390     else
       
  4391         arrowOpt.rect = opt->rect.adjusted(5, 6, -4, -3);
       
  4392 
       
  4393     bool horizontal = (opt->orientation == Qt::Horizontal);
       
  4394 
       
  4395     if (horizontal) {
       
  4396         p->fillRect(opt->rect,fill);
       
  4397         QRect r = opt->rect.adjusted(0,0,1,0);
       
  4398         p->drawLine(r.topRight(), r.bottomRight());
       
  4399         if (doubleControls)
       
  4400             arrowOpt.rect.adjust(0, -2 ,0, -2);
       
  4401         q_func()->proxy()->drawPrimitive(QStyle::PE_IndicatorArrowLeft, &arrowOpt, p, 0);
       
  4402     } else {
       
  4403         p->fillRect(opt->rect,fill);
       
  4404         QRect r = opt->rect.adjusted(0, 0, 0, 1);
       
  4405         p->drawLine(r.bottomLeft(), r.bottomRight());
       
  4406         if (completeFrame)
       
  4407             arrowOpt.rect.adjust(-2, 0, -2, 0);
       
  4408         if (doubleControls)
       
  4409             arrowOpt.rect.adjust(0, -4 , 0, -4);
       
  4410         if (completeFrame && doubleControls)
       
  4411             arrowOpt.rect.adjust(2, 0, 2, 0);
       
  4412         q_func()->proxy()->drawPrimitive(QStyle::PE_IndicatorArrowUp, &arrowOpt, p, 0);
       
  4413     }
       
  4414 }
       
  4415 
       
  4416 void QWindowsMobileStylePrivate::drawScrollbarHandleDown(QPainter *p, QStyleOptionSlider *opt, bool completeFrame, bool secondScrollBar)
       
  4417 {
       
  4418 #ifndef QT_NO_SCROLLBAR
       
  4419 #ifdef Q_WS_WINCE_WM
       
  4420     if (wm65) {
       
  4421         tintImagesHigh(opt->palette.highlight().color());
       
  4422         QRect r = opt->rect;
       
  4423         if (opt->orientation == Qt::Horizontal) {
       
  4424             QTransform transform;
       
  4425             transform.rotate(-90);
       
  4426             if (opt->state & QStyle::State_Sunken)
       
  4427                 p->drawImage(r.topLeft(), imageScrollbarHandleDownHigh.transformed(transform));
       
  4428             else
       
  4429                 p->drawImage(r.topLeft(), imageScrollbarHandleDown.transformed(transform));
       
  4430         } else {
       
  4431             if (opt->state & QStyle::State_Sunken)
       
  4432                 p->drawImage(r.topLeft(), imageScrollbarHandleDownHigh);
       
  4433             else
       
  4434                 p->drawImage(r.topLeft(), imageScrollbarHandleDown);
       
  4435         }
       
  4436         return ;
       
  4437     }
       
  4438 #endif //Q_WS_WINCE_WM
       
  4439 
       
  4440     QBrush fill = opt->palette.button();
       
  4441     if (opt->state & QStyle::State_Sunken)
       
  4442         fill = opt->palette.shadow();
       
  4443 
       
  4444     QStyleOption arrowOpt = *opt;
       
  4445     if (doubleControls)
       
  4446         arrowOpt.rect = opt->rect.adjusted(4, 0, -5, 3);
       
  4447     else
       
  4448         arrowOpt.rect = opt->rect.adjusted(5, 6, -4, -3);
       
  4449 
       
  4450     bool horizontal = (opt->orientation == Qt::Horizontal);
       
  4451 
       
  4452     if (horizontal) {
       
  4453         p->fillRect(opt->rect,fill);
       
  4454         QRect r = opt->rect.adjusted(0, 0, 0, 0);
       
  4455         p->drawLine(r.topLeft(), r.bottomLeft());
       
  4456         if (secondScrollBar)
       
  4457             p->drawLine(r.topRight(), r.bottomRight());
       
  4458         if (doubleControls)
       
  4459             arrowOpt.rect.adjust(0, 4, 0, 4 );
       
  4460         q_func()->proxy()->drawPrimitive(QStyle::PE_IndicatorArrowRight, &arrowOpt, p, 0);
       
  4461     } else {
       
  4462         p->fillRect(opt->rect,fill);
       
  4463         QRect r = opt->rect.adjusted(0, -1, 0, -1);
       
  4464         p->drawLine(r.topLeft(), r.topRight());
       
  4465         if (secondScrollBar)
       
  4466             p->drawLine(r.bottomLeft() + QPoint(0,1), r.bottomRight() + QPoint(0, 1));
       
  4467         if (completeFrame)
       
  4468             arrowOpt.rect.adjust(-2, 0, -2, 0);
       
  4469         if (doubleControls)
       
  4470             arrowOpt.rect.adjust(1, 0, 1, 0 );
       
  4471         if (completeFrame && doubleControls)
       
  4472             arrowOpt.rect.adjust(1, 0, 1, 0);
       
  4473         q_func()->proxy()->drawPrimitive(QStyle::PE_IndicatorArrowDown, &arrowOpt, p, 0);
       
  4474     }
       
  4475 #endif //QT_NO_SCROLLBAR
       
  4476 }
       
  4477 
       
  4478 void QWindowsMobileStylePrivate::drawScrollbarGroove(QPainter *p,const QStyleOptionSlider *opt)
       
  4479 {
       
  4480 #ifndef QT_NO_SCROLLBAR
       
  4481 #ifdef Q_OS_WINCE_WM
       
  4482     if (wm65) {
       
  4483         p->fillRect(opt->rect, QColor(231, 231, 231));
       
  4484         return ;
       
  4485     }
       
  4486 #endif
       
  4487             QBrush fill;
       
  4488             if (smartphone) {
       
  4489                 fill = opt->palette.light();
       
  4490                 p->fillRect(opt->rect, fill);
       
  4491                 fill = opt->palette.button();
       
  4492                 QImage image;
       
  4493 #ifndef QT_NO_IMAGEFORMAT_XPM
       
  4494                 if (opt->orientation == Qt::Horizontal)
       
  4495                   image = QImage(vertlines_xpm);
       
  4496                 else
       
  4497                   image = QImage(horlines_xpm);
       
  4498 #endif
       
  4499                 image.setColor(1, opt->palette.button().color().rgb());
       
  4500                 fill.setTextureImage(image);
       
  4501             }
       
  4502             else {
       
  4503               fill = opt->palette.light();
       
  4504             }
       
  4505             p->fillRect(opt->rect, fill);
       
  4506 #endif //QT_NO_SCROLLBAR
       
  4507 }
       
  4508 
       
  4509 QWindowsMobileStyle::QWindowsMobileStyle(QWindowsMobileStylePrivate &dd) : QWindowsStyle(dd) {
       
  4510     qApp->setEffectEnabled(Qt::UI_FadeMenu, false);
       
  4511     qApp->setEffectEnabled(Qt::UI_AnimateMenu, false);
       
  4512 }
       
  4513 
       
  4514 QWindowsMobileStyle::QWindowsMobileStyle() : QWindowsStyle(*new QWindowsMobileStylePrivate) {
       
  4515     qApp->setEffectEnabled(Qt::UI_FadeMenu, false);
       
  4516     qApp->setEffectEnabled(Qt::UI_AnimateMenu, false);
       
  4517 }
       
  4518 
       
  4519 QWindowsMobileStylePrivate::QWindowsMobileStylePrivate() :QWindowsStylePrivate() {
       
  4520 
       
  4521 #ifdef Q_WS_WINCE
       
  4522    doubleControls = qt_wince_is_high_dpi();
       
  4523    smartphone = qt_wince_is_smartphone();
       
  4524 #else
       
  4525    doubleControls = false;
       
  4526    smartphone = false;
       
  4527 #endif //Q_WS_WINCE
       
  4528 
       
  4529 #ifndef QT_NO_IMAGEFORMAT_XPM
       
  4530 
       
  4531    imageArrowDown = QImage(arrowdown_xpm);
       
  4532    imageArrowUp = QImage(arrowdown_xpm).mirrored();
       
  4533    imageArrowLeft = QImage(arrowleft_xpm);
       
  4534    imageArrowRight = QImage(arrowleft_xpm).mirrored(true, false);
       
  4535    if (doubleControls) {
       
  4536        imageRadioButton = QImage(radiobutton_xpm);
       
  4537        imageRadioButtonChecked = QImage(radiochecked_xpm);
       
  4538        imageChecked = QImage(checkedlight_xpm);
       
  4539        imageCheckedBold = QImage(checkedbold_xpm);
       
  4540        imageRadioButtonHighlighted = QImage(highlightedradiobutton_xpm);
       
  4541        imageClose = QImage(cross_big_xpm);
       
  4542        imageMaximize = QImage(max_big_xpm);
       
  4543        imageMinimize = QImage(min_big_xpm);
       
  4544        imageNormalize = QImage(normal_big_xpm);
       
  4545    } else {
       
  4546        imageRadioButton = QImage(radiobutton_low_xpm);
       
  4547        imageRadioButtonChecked = QImage(radiochecked_low_xpm);
       
  4548        imageChecked = QImage(checkedlight_low_xpm);
       
  4549        imageCheckedBold = QImage(checkedbold_low_xpm);
       
  4550        imageRadioButtonHighlighted = QImage(highlightedradiobutton_low_xpm);
       
  4551        imageClose = QImage(cross_small_xpm);
       
  4552        imageMaximize = QImage(max_small_xpm);
       
  4553        imageMinimize = QImage(min_small_xpm);
       
  4554        imageNormalize = QImage(normal_small_xpm);
       
  4555    }
       
  4556 
       
  4557    setupWindowsMobileStyle65();
       
  4558 
       
  4559 
       
  4560    imageArrowDownBig = QImage(arrowdown_big_xpm);
       
  4561    imageArrowUpBig = QImage(arrowdown_big_xpm).mirrored();
       
  4562    imageArrowLeftBig = QImage(arrowleft_big_xpm);
       
  4563    imageArrowRightBig = QImage(arrowleft_big_xpm).mirrored(true, false);
       
  4564 
       
  4565 #endif
       
  4566 }
       
  4567 
       
  4568 void QWindowsMobileStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option,
       
  4569                                     QPainter *painter, const QWidget *widget) const {
       
  4570 
       
  4571    QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
       
  4572 
       
  4573     bool doRestore = false;
       
  4574     QRect rect = option->rect;
       
  4575     painter->setClipping(false);
       
  4576 
       
  4577     switch (element) {
       
  4578     case PE_PanelButtonTool: {
       
  4579         int penSize = 1;
       
  4580         if (d->doubleControls)
       
  4581             penSize = 2;
       
  4582         if (widget)
       
  4583             if (QWidget *parent = widget->parentWidget())
       
  4584 #ifndef QT_NO_TABWIDGET
       
  4585                 if (qobject_cast<QTabWidget *>(parent->parentWidget())) {
       
  4586 #else
       
  4587                 if (false) {
       
  4588 #endif //QT_NO_TABBAR
       
  4589                     rect.adjust(0,2*penSize,0,-1*penSize);
       
  4590                         qDrawPlainRect(painter, rect, option->palette.shadow().color(), penSize, &option->palette.light());
       
  4591                     if (option->state & (State_Sunken))
       
  4592                         qDrawPlainRect(painter, rect, option->palette.shadow().color(), penSize, &option->palette.shadow());
       
  4593                 }
       
  4594                 else {
       
  4595                     if (!(option->state & State_AutoRaise) || (option->state & (State_Sunken | State_On)))
       
  4596                         qDrawPlainRect(painter,option->rect.adjusted(0, penSize, 0, -1 * penSize) ,
       
  4597                                        option->palette.button().color(), 0, &option->palette.button());
       
  4598                     if (option->state & (State_Sunken)) {
       
  4599                         qDrawPlainRect(painter, rect, option->palette.shadow().color(), penSize, &option->palette.light());
       
  4600                     }
       
  4601                     if (option->state & (State_On)){
       
  4602                         QBrush fill = QBrush(option->palette.light().color());
       
  4603                         painter->fillRect(rect.adjusted(windowsItemFrame , windowsItemFrame ,
       
  4604                                           -windowsItemFrame , -windowsItemFrame ), fill);
       
  4605                         qDrawPlainRect(painter, rect, option->palette.shadow().color(), penSize, &option->palette.light());
       
  4606                     }
       
  4607                 }
       
  4608                 break; }
       
  4609     case PE_IndicatorButtonDropDown:
       
  4610         if (d->doubleControls)
       
  4611           qDrawPlainRect(painter, option->rect, option->palette.shadow().color(), 2, &option->palette.button());
       
  4612         else
       
  4613           qDrawPlainRect(painter, option->rect, option->palette.shadow().color(), 1, &option->palette.button());
       
  4614         break;
       
  4615 #ifndef QT_NO_TABBAR
       
  4616     case PE_IndicatorTabTear:
       
  4617         if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) {
       
  4618             bool rtl = tab->direction == Qt::RightToLeft;
       
  4619             QRect rect = tab->rect;
       
  4620             QPainterPath path;
       
  4621             rect.setTop(rect.top() + ((tab->state & State_Selected) ? 1 : 3));
       
  4622             rect.setBottom(rect.bottom() - ((tab->state & State_Selected) ? 0 : 2));
       
  4623             path.moveTo(QPoint(rtl ? rect.right() : rect.left(), rect.top()));
       
  4624             int count = 3;
       
  4625             for(int jags = 1; jags <= count; ++jags, rtl = !rtl)
       
  4626                 path.lineTo(QPoint(rtl ? rect.left() : rect.right(), rect.top() + jags * rect.height()/count));
       
  4627             painter->setPen(QPen(tab->palette.light(), qreal(.8)));
       
  4628             painter->setBrush(tab->palette.background());
       
  4629             painter->setRenderHint(QPainter::Antialiasing);
       
  4630             painter->drawPath(path);
       
  4631         }
       
  4632         break;
       
  4633 #endif //QT_NO_TABBAR
       
  4634 
       
  4635 #ifndef QT_NO_TOOLBAR
       
  4636     case PE_IndicatorToolBarSeparator: {
       
  4637             painter->save();
       
  4638             QPoint p1, p2;
       
  4639             if (option->state & State_Horizontal) {
       
  4640                 p1 = QPoint(option->rect.width()/2, 0);
       
  4641                 p2 = QPoint(p1.x(), option->rect.height());
       
  4642             } else {
       
  4643                 p1 = QPoint(0, option->rect.height()/2);
       
  4644                 p2 = QPoint(option->rect.width(), p1.y());
       
  4645             }
       
  4646 
       
  4647 
       
  4648             painter->setPen(option->palette.mid().color());
       
  4649             if (d->doubleControls) {
       
  4650                 QPen pen = painter->pen();
       
  4651                 pen.setWidth(2);
       
  4652                 pen.setCapStyle(Qt::FlatCap);
       
  4653                 painter->setPen(pen);
       
  4654             }
       
  4655             painter->drawLine(p1, p2);
       
  4656             painter->restore();
       
  4657             break; }
       
  4658 #endif // QT_NO_TOOLBAR
       
  4659     case PE_IndicatorToolBarHandle:
       
  4660         painter->save();
       
  4661         painter->translate(option->rect.x(), option->rect.y());
       
  4662         if (option->state & State_Horizontal) {
       
  4663             int x = option->rect.width() / 2 - 4;
       
  4664             if (QApplication::layoutDirection() == Qt::RightToLeft)
       
  4665                 x -= 2;
       
  4666             if (option->rect.height() > 4) {
       
  4667                 qDrawWinButton(painter,x-1,0,7,option->rect.height(), option->palette, false,  0);
       
  4668 
       
  4669                 qDrawShadePanel(painter, x, 1, 3, option->rect.height() - 1,
       
  4670                     option->palette, false,  0);
       
  4671                 qDrawShadePanel(painter, x + 3, 1, 3, option->rect.height() - 1,
       
  4672                     option->palette, false,  0);
       
  4673                 painter->setPen(option->palette.button().color());
       
  4674             }
       
  4675         } else {
       
  4676             if (option->rect.width() > 4) {
       
  4677                 int y = option->rect.height() / 2 - 4;
       
  4678                 qDrawShadePanel(painter, 2, y, option->rect.width() - 2, 3,
       
  4679                     option->palette, false,  0);
       
  4680                 qDrawShadePanel(painter, 2, y + 3, option->rect.width() - 2, 3,
       
  4681                     option->palette, false,  0);
       
  4682             }
       
  4683         }
       
  4684         painter->restore();
       
  4685         break;
       
  4686 
       
  4687 #ifndef QT_NO_PROGRESSBAR
       
  4688     case PE_IndicatorProgressChunk: {
       
  4689             bool vertical = false;
       
  4690             if (const QStyleOptionProgressBarV2 *pb2 = qstyleoption_cast<const QStyleOptionProgressBarV2 *>(option))
       
  4691                 vertical = (pb2->orientation == Qt::Vertical);
       
  4692             if (!vertical) {
       
  4693                 painter->fillRect(option->rect.x(), option->rect.y()+2, option->rect.width(), option->rect.height()-4,
       
  4694                             option->palette.brush(QPalette::Highlight));
       
  4695             } else {
       
  4696                 painter->fillRect(option->rect.x()+2, option->rect.y(), option->rect.width()-4, option->rect.height(),
       
  4697                             option->palette.brush(QPalette::Highlight));
       
  4698             }
       
  4699         }
       
  4700         break;
       
  4701 #endif // QT_NO_PROGRESSBAR
       
  4702 
       
  4703     case PE_FrameButtonTool: {
       
  4704 #ifndef QT_NO_DOCKWIDGET
       
  4705             if (widget && widget->inherits("QDockWidgetTitleButton")) {
       
  4706                 if (const QDockWidget *dw = qobject_cast<const QDockWidget *>(widget->parent()))
       
  4707                     if (dw->isFloating()){
       
  4708                         qDrawPlainRect(painter,option->rect.adjusted(1, 1, 0, 0),
       
  4709                                        option->palette.shadow().color(),1,&option->palette.button());
       
  4710                         return;
       
  4711                     }
       
  4712             }
       
  4713 #endif // QT_NO_DOCKWIDGET
       
  4714         QBrush fill;
       
  4715         bool stippled;
       
  4716         bool panel = (element == PE_PanelButtonTool);
       
  4717         if ((!(option->state & State_Sunken ))
       
  4718             && (!(option->state & State_Enabled)
       
  4719             || ((option->state & State_Enabled ) && !(option->state & State_MouseOver)))
       
  4720             && (option->state & State_On)) {
       
  4721                 fill = QBrush(option->palette.light().color(), Qt::Dense4Pattern);
       
  4722                 stippled = true;
       
  4723         } else {
       
  4724             fill = option->palette.brush(QPalette::Button);
       
  4725             stippled = false;
       
  4726         }
       
  4727         if (option->state & (State_Raised | State_Sunken | State_On)) {
       
  4728             if (option->state & State_AutoRaise) {
       
  4729                 if(option->state & (State_Enabled | State_Sunken | State_On)){
       
  4730                     if (panel)
       
  4731                         qDrawPlainRect(painter, option->rect,option->palette.shadow().color(),d->doubleControls, &fill);
       
  4732                     else
       
  4733                         qDrawPlainRect(painter, option->rect,option->palette.shadow().color(),d->doubleControls, &fill);
       
  4734                 }
       
  4735                 if (stippled) {
       
  4736                     painter->setPen(option->palette.button().color());
       
  4737                     painter->drawRect(option->rect.adjusted(1, 1, -2, -2));
       
  4738                 }
       
  4739             } else {
       
  4740                 qDrawPlainRect(painter, option->rect,option->palette.shadow().color(),d->doubleControls, &fill);
       
  4741             }
       
  4742         } else {
       
  4743             painter->fillRect(option->rect, fill);
       
  4744         }
       
  4745         break; }
       
  4746 
       
  4747     case PE_FrameFocusRect:
       
  4748         if (const QStyleOptionFocusRect *fropt = qstyleoption_cast<const QStyleOptionFocusRect *>(option)) {
       
  4749             //### check for d->alt_down
       
  4750             int penSize;
       
  4751             d->doubleControls ? penSize = 2 : penSize = 1;
       
  4752             bool alternateFocusStyle = false;
       
  4753             if (!widget)
       
  4754                 alternateFocusStyle = true;
       
  4755 #ifndef QT_NO_COMBOBOX
       
  4756             if (qobject_cast<const QComboBox*>(widget))
       
  4757                 alternateFocusStyle = true;
       
  4758 #endif
       
  4759             if (!(fropt->state & State_KeyboardFocusChange) && !styleHint(SH_UnderlineShortcut, option))
       
  4760                 return;
       
  4761             QRect r = option->rect;
       
  4762             painter->save();
       
  4763             painter->setBackgroundMode(Qt::TransparentMode);
       
  4764             if (alternateFocusStyle) {
       
  4765                 QColor bg_col = fropt->backgroundColor;
       
  4766                 if (!bg_col.isValid())
       
  4767                     bg_col = painter->background().color();
       
  4768                 // Create an "XOR" color.
       
  4769                 QColor patternCol((bg_col.red() ^ 0xff) & 0xff,
       
  4770                     (bg_col.green() ^ 0xff) & 0xff,
       
  4771                     (bg_col.blue() ^ 0xff) & 0xff);
       
  4772                 painter->setBrush(QBrush(patternCol, Qt::Dense4Pattern));
       
  4773                 painter->setBrushOrigin(r.topLeft());
       
  4774             }
       
  4775             else {
       
  4776                 painter->setPen(option->palette.highlight().color());
       
  4777                 painter->setBrush(option->palette.highlight());
       
  4778             }
       
  4779             painter->setPen(Qt::NoPen);
       
  4780             painter->setBrushOrigin(r.topLeft());
       
  4781             painter->drawRect(r.left(), r.top(), r.width(), penSize);    // Top
       
  4782             painter->drawRect(r.left(), r.bottom(), r.width() + penSize - 1, penSize); // Bottom
       
  4783             painter->drawRect(r.left(), r.top(), penSize, r.height());   // Left
       
  4784             painter->drawRect(r.right(), r.top(), penSize, r.height());  // Right
       
  4785             painter->restore();
       
  4786         }
       
  4787         break;
       
  4788 
       
  4789     case PE_PanelButtonBevel: {
       
  4790         QBrush fill;
       
  4791         bool panel = element != PE_FrameButtonBevel;
       
  4792         painter->setBrushOrigin(option->rect.topLeft());
       
  4793         if (!(option->state & State_Sunken) && (option->state & State_On))
       
  4794             fill = QBrush(option->palette.light().color(), Qt::Dense4Pattern);
       
  4795         else
       
  4796             fill = option->palette.brush(QPalette::Button);
       
  4797 
       
  4798         if (option->state & (State_Raised | State_On | State_Sunken)) {
       
  4799             if (d->doubleControls)
       
  4800               qDrawPlainRect(painter, option->rect,option->palette.shadow().color(),2,&fill);
       
  4801             else
       
  4802               qDrawPlainRect(painter, option->rect,option->palette.shadow().color(),1,&fill);
       
  4803         } else {
       
  4804             if (panel)
       
  4805                 painter->fillRect(option->rect, fill);
       
  4806             else
       
  4807                 painter->drawRect(option->rect);
       
  4808         }
       
  4809         break; }
       
  4810 
       
  4811     case PE_FrameGroupBox:
       
  4812         if (const QStyleOptionFrame *frame = qstyleoption_cast<const QStyleOptionFrame *>(option)) {
       
  4813 
       
  4814             const QStyleOptionFrameV2 *frame2 = qstyleoption_cast<const QStyleOptionFrameV2 *>(option);
       
  4815             if (frame2 && !(frame2->features & QStyleOptionFrameV2::Flat)) {
       
  4816               QPen oldPen = painter->pen();
       
  4817               QRect r = frame->rect;
       
  4818               painter->setPen(frame->palette.shadow().color());
       
  4819               painter->fillRect(r.x(), r.y(), r.x() + r.width()-1,
       
  4820                                 r.y() + r.height() - windowsMobileFrameGroupBoxOffset,
       
  4821               frame->palette.light());
       
  4822               painter ->drawLine(r.topLeft() + QPoint(-2, 1), r.topRight()+ QPoint(0, 1));
       
  4823               if (d->doubleControls)
       
  4824                 painter ->drawLine(r.topLeft() + QPoint(-2, 2), r.topRight()+ QPoint(0, 2));
       
  4825               painter->setPen(oldPen);
       
  4826             }
       
  4827         }
       
  4828         break;
       
  4829 
       
  4830    case PE_IndicatorCheckBox: {
       
  4831         QBrush fill;
       
  4832         QRect r = d->doubleControls ? option->rect.adjusted(0,1,0,-1) : option->rect;
       
  4833         if (option->state & State_NoChange)
       
  4834             fill = QBrush(option->palette.shadow().color(), Qt::Dense4Pattern);
       
  4835         else if (option->state & State_Sunken)
       
  4836             fill = option->palette.button();
       
  4837         else if (option->state & State_Enabled)
       
  4838             fill = option->palette.base();
       
  4839         else
       
  4840             fill = option->palette.background();
       
  4841         painter->save();
       
  4842         doRestore = true;
       
  4843         if (d->doubleControls && (option->state & State_NoChange))
       
  4844             painter->fillRect(r, fill);
       
  4845         else
       
  4846             painter->fillRect(option->rect, fill);
       
  4847         painter->setPen(option->palette.shadow().color());
       
  4848         painter->drawLine(r.topLeft(), r.topRight());
       
  4849         painter->drawLine(r.topRight(), r.bottomRight());
       
  4850         painter->drawLine(r.bottomLeft(), r.bottomRight());
       
  4851         painter->drawLine(r.bottomLeft(), r.topLeft());
       
  4852         if (d->doubleControls) {
       
  4853             QRect r0 = r.adjusted(1, 1, -1, -1);
       
  4854             painter->drawLine(r0.topLeft(), r0.topRight());
       
  4855             painter->drawLine(r0.topRight(), r0.bottomRight());
       
  4856             painter->drawLine(r0.bottomLeft(), r0.bottomRight());
       
  4857             painter->drawLine(r0.bottomLeft(), r0.topLeft());
       
  4858         }
       
  4859         if (option->state & State_HasFocus) {
       
  4860             painter->setPen(option->palette.highlight().color());
       
  4861             QRect r2 = d->doubleControls ? r.adjusted(2, 2, -2, -2) : r.adjusted(1, 1, -1, -1);
       
  4862             painter->drawLine(r2.topLeft(), r2.topRight());
       
  4863             painter->drawLine(r2.topRight(), r2.bottomRight());
       
  4864             painter->drawLine(r2.bottomLeft(), r2.bottomRight());
       
  4865             painter->drawLine(r2.bottomLeft(), r2.topLeft());
       
  4866             if (d->doubleControls) {
       
  4867                 QRect r3 = r2.adjusted(1, 1, -1, -1);
       
  4868                 painter->drawLine(r3.topLeft(), r3.topRight());
       
  4869                 painter->drawLine(r3.topRight(), r3.bottomRight());
       
  4870                 painter->drawLine(r3.bottomLeft(), r3.bottomRight());
       
  4871                 painter->drawLine(r3.bottomLeft(), r3.topLeft());
       
  4872             }
       
  4873             painter->setPen(option->palette.shadow().color());
       
  4874         }
       
  4875         //fall through...
       
  4876     }
       
  4877     case PE_IndicatorViewItemCheck:
       
  4878     case PE_Q3CheckListIndicator: {
       
  4879         if (!doRestore) {
       
  4880             painter->save();
       
  4881             doRestore = true;
       
  4882         }
       
  4883         if (element == PE_Q3CheckListIndicator || element == PE_IndicatorViewItemCheck) {
       
  4884             painter->setPen(option->palette.shadow().color());
       
  4885             if (option->state & State_NoChange)
       
  4886                 painter->setBrush(option->palette.brush(QPalette::Button));
       
  4887             if (d->doubleControls) {
       
  4888                 QRect r = QRect(option->rect.x(), option->rect.y(), windowsMobileitemViewCheckBoxSize * 2, windowsMobileitemViewCheckBoxSize * 2);
       
  4889                 qDrawPlainRect(painter, r, option->palette.shadow().color(), 2);
       
  4890             } else {
       
  4891                 QRect r = QRect(option->rect.x(), option->rect.y(), windowsMobileitemViewCheckBoxSize, windowsMobileitemViewCheckBoxSize);
       
  4892                 qDrawPlainRect(painter, r, option->palette.shadow().color(), 1);
       
  4893             }            
       
  4894             if (option->state & State_Enabled)
       
  4895                 d->imageChecked.setColor(1, option->palette.shadow().color().rgba());
       
  4896             else
       
  4897               d->imageChecked.setColor(1, option->palette.dark().color().rgba());
       
  4898             if (!(option->state & State_Off)) {
       
  4899                 if (d->doubleControls)
       
  4900                     painter->drawImage(option->rect.x(), option->rect.y(), d->imageChecked);
       
  4901                 else
       
  4902                     painter->drawImage(option->rect.x() + 3, option->rect.y() + 3, d->imageChecked);
       
  4903             }
       
  4904         }
       
  4905         else {
       
  4906             if (option->state & State_NoChange)
       
  4907                 d->imageCheckedBold.setColor(1, option->palette.dark().color().rgba());
       
  4908             else if (option->state & State_Enabled)
       
  4909                 d->imageCheckedBold.setColor(1, option->palette.shadow().color().rgba());
       
  4910             else
       
  4911                 d->imageCheckedBold.setColor(1, option->palette.dark().color().rgba());
       
  4912             if (!(option->state & State_Off)) {
       
  4913                 if (d->doubleControls)
       
  4914                     painter->drawImage(option->rect.x() + 2, option->rect.y(), d->imageCheckedBold);
       
  4915                 else
       
  4916                     painter->drawImage(option->rect.x() + 3, option->rect.y() + 3, d->imageCheckedBold);
       
  4917             }
       
  4918         }
       
  4919         if (doRestore)
       
  4920             painter->restore();
       
  4921         break; }
       
  4922     case PE_IndicatorRadioButton: {
       
  4923         painter->save();
       
  4924 
       
  4925         if (option->state & State_HasFocus) {
       
  4926             d->imageRadioButtonHighlighted.setColor(1, option->palette.shadow().color().rgba());
       
  4927             d->imageRadioButtonHighlighted.setColor(2, option->palette.highlight().color().rgba());
       
  4928             painter->drawImage(option->rect.x(), option->rect.y(), d->imageRadioButtonHighlighted);
       
  4929         }
       
  4930         else {
       
  4931             d->imageRadioButton.setColor(1, option->palette.shadow().color().rgba());
       
  4932             painter->drawImage(option->rect.x(), option->rect.y(), d->imageRadioButton);
       
  4933         }
       
  4934         if (option->state & (State_Sunken | State_On)) {
       
  4935             if  (option->state & State_Enabled)
       
  4936                 d->imageRadioButtonChecked.setColor(1, option->palette.shadow().color().rgba());
       
  4937             else
       
  4938                 d->imageRadioButtonChecked.setColor(1, option->palette.dark().color().rgba());
       
  4939 
       
  4940             static const int offset = d->doubleControls ? 6 : 3;
       
  4941             painter->drawImage(option->rect.x() + offset, option->rect.y() + offset, d->imageRadioButtonChecked);
       
  4942         }
       
  4943         painter->restore();
       
  4944         break; }
       
  4945    case PE_PanelButtonCommand:
       
  4946        if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
       
  4947            QBrush fill;
       
  4948            State flags = option->state;
       
  4949            QPalette pal = option->palette;
       
  4950            QRect r = option->rect;
       
  4951            if ((flags & State_Sunken || flags & State_On) )
       
  4952                fill = pal.brush(QPalette::Shadow);
       
  4953            else
       
  4954                fill = pal.brush(QPalette::Button);
       
  4955             int singleLine = 1;
       
  4956             int doubleLine = 2;
       
  4957             if (d->doubleControls) {
       
  4958                 singleLine = 2;
       
  4959                 doubleLine = 4;
       
  4960             }
       
  4961            if (button->features & QStyleOptionButton::DefaultButton && flags & State_Sunken) {
       
  4962                if (d->doubleControls) {
       
  4963                  qDrawPlainRect(painter, r, pal.shadow().color(), 1, &fill);
       
  4964                  qDrawPlainRect(painter, r.adjusted(1, 1, -1, 1), pal.shadow().color(), 1, &fill);
       
  4965                }
       
  4966                else {
       
  4967                     qDrawPlainRect(painter, r, pal.shadow().color(), 1, &fill);
       
  4968                }
       
  4969            } else if (flags & (State_Raised | State_Sunken | State_On | State_Sunken)) {
       
  4970                qDrawPlainRect(painter, r, pal.shadow().color(), singleLine, &fill);
       
  4971            } else {
       
  4972                painter->fillRect(r, fill);
       
  4973            }
       
  4974        }
       
  4975        break;
       
  4976    case PE_FrameDefaultButton: {
       
  4977        painter->save();
       
  4978        painter->setPen(option->palette.shadow().color());
       
  4979        QRect rect = option->rect;
       
  4980        if (d->doubleControls) {
       
  4981            rect.adjust(1, 1, -2, -2);
       
  4982            painter->drawRect(rect);
       
  4983            painter->drawRect(rect.adjusted(1, 1, -1, -1));
       
  4984        }
       
  4985 
       
  4986        else {
       
  4987             rect.adjust(2, 2, -3, -3);
       
  4988             painter->drawRect(rect);
       
  4989        }
       
  4990        painter->restore();
       
  4991        break; }
       
  4992    case PE_IndicatorSpinPlus:
       
  4993    case PE_IndicatorSpinMinus: {
       
  4994        QRect r = option->rect;
       
  4995        int fw = proxy()->pixelMetric(PM_DefaultFrameWidth, option, widget)+2;
       
  4996        QRect br = r.adjusted(fw, fw, -fw, -fw);
       
  4997        int offset = (option->state & State_Sunken) ? 1 : 0;
       
  4998        int step = (br.width() + 4) / 5;
       
  4999        painter->fillRect(br.x() + offset, br.y() + offset +br.height() / 2 - step / 2,
       
  5000                          br.width(), step, option->palette.buttonText());
       
  5001        if (element == PE_IndicatorSpinPlus)
       
  5002            painter->fillRect(br.x() + br.width() / 2 - step / 2 + offset, br.y() + offset+4,
       
  5003                              step, br.height() - 7, option->palette.buttonText());
       
  5004        break; }
       
  5005     case PE_IndicatorSpinUp:
       
  5006     case PE_IndicatorSpinDown: {
       
  5007         painter->save();
       
  5008             QPoint points[7];
       
  5009             switch (element) {
       
  5010                 case PE_IndicatorSpinUp:
       
  5011                     points[0] = QPoint(-2, -4);
       
  5012                     points[1] = QPoint(-2, 2);
       
  5013                     points[2] = QPoint(-1, -3);
       
  5014                     points[3] = QPoint(-1, 1);
       
  5015                     points[4] = QPoint(0, -2);
       
  5016                     points[5] = QPoint(0, 0);
       
  5017                     points[6] = QPoint(1, -1);
       
  5018                 break;
       
  5019                 case PE_IndicatorSpinDown:
       
  5020                     points[0] = QPoint(0, -4);
       
  5021                     points[1] = QPoint(0, 2);
       
  5022                     points[2] = QPoint(-1, -3);
       
  5023                     points[3] = QPoint(-1, 1);
       
  5024                     points[4] = QPoint(-2, -2);
       
  5025                     points[5] = QPoint(-2, 0);
       
  5026                     points[6] = QPoint(-3, -1);
       
  5027                 break;
       
  5028                 default:
       
  5029                 break;
       
  5030             }
       
  5031             if (option->state & State_Sunken)
       
  5032                 painter->translate(proxy()->pixelMetric(PM_ButtonShiftHorizontal),
       
  5033                 proxy()->pixelMetric(PM_ButtonShiftVertical));
       
  5034             if (option->state & State_Enabled) {
       
  5035                 painter->translate(option->rect.x() + option->rect.width() / 2,
       
  5036                                    option->rect.y() + option->rect.height() / 2);
       
  5037                 painter->setPen(option->palette.buttonText().color());
       
  5038                 painter->drawLine(points[0], points[1]);
       
  5039                 painter->drawLine(points[2], points[3]);
       
  5040                 painter->drawLine(points[4], points[5]);
       
  5041                 painter->drawPoint(points[6]);
       
  5042             } else {
       
  5043                 painter->translate(option->rect.x() + option->rect.width() / 2 + 1,
       
  5044                                    option->rect.y() + option->rect.height() / 2 + 1);
       
  5045                 painter->setPen(option->palette.light().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                 painter->translate(-1, -1);
       
  5051                 painter->setPen(option->palette.mid().color());
       
  5052                 painter->drawLine(points[0], points[1]);
       
  5053                 painter->drawLine(points[2], points[3]);
       
  5054                 painter->drawLine(points[4], points[5]);
       
  5055                 painter->drawPoint(points[6]);
       
  5056             }
       
  5057         painter->restore();
       
  5058         break; }
       
  5059 
       
  5060     case PE_IndicatorArrowUpBig:
       
  5061     case PE_IndicatorArrowDownBig:
       
  5062     case PE_IndicatorArrowLeftBig:
       
  5063     case PE_IndicatorArrowRightBig:
       
  5064 
       
  5065     case PE_IndicatorArrowUp:
       
  5066     case PE_IndicatorArrowDown:
       
  5067     case PE_IndicatorArrowRight:
       
  5068     case PE_IndicatorArrowLeft: {
       
  5069             painter->save();
       
  5070 
       
  5071             if (d->doubleControls) {
       
  5072                 QColor color;
       
  5073                 if (option->state & State_Sunken)
       
  5074                     color = option->palette.light().color();
       
  5075                 else
       
  5076                     color = option->palette.buttonText().color();
       
  5077                 QImage image;
       
  5078                 int xoffset, yoffset;
       
  5079                 bool isTabBarArrow = widget && widget->parent()
       
  5080                                    && widget->inherits("QToolButton")
       
  5081                                    && widget->parent()->inherits("QTabBar");
       
  5082 
       
  5083                 switch (element) {
       
  5084                     case PE_IndicatorArrowUp:
       
  5085                           image = d->imageArrowUp;
       
  5086                           xoffset = 1;
       
  5087                           yoffset = 12;
       
  5088                           break;
       
  5089                     case PE_IndicatorArrowDown:
       
  5090                           image = d->imageArrowDown;
       
  5091                           xoffset = 1;
       
  5092                           yoffset =12;
       
  5093                           break;
       
  5094                     case PE_IndicatorArrowLeft:
       
  5095                           image = d->imageArrowLeft;
       
  5096                           xoffset = 8;
       
  5097                           yoffset = isTabBarArrow ? 12 : 2;
       
  5098                           break;
       
  5099                     case PE_IndicatorArrowRight:
       
  5100                           image = d->imageArrowRight;
       
  5101                           xoffset = 8;
       
  5102                           yoffset = isTabBarArrow ? 12 : 2;
       
  5103                           break;
       
  5104                      case PE_IndicatorArrowUpBig:
       
  5105                           image = d->imageArrowUpBig;
       
  5106                           xoffset = 3;
       
  5107                           yoffset = 12;
       
  5108                           break;
       
  5109                     case PE_IndicatorArrowDownBig:
       
  5110                           image = d->imageArrowDownBig;
       
  5111                           xoffset = 2;
       
  5112                           yoffset =12;
       
  5113                           break;
       
  5114                     case PE_IndicatorArrowLeftBig:
       
  5115                           image = d->imageArrowLeftBig;
       
  5116                           xoffset = 8;
       
  5117                           yoffset = 2;
       
  5118                           break;
       
  5119                     case PE_IndicatorArrowRightBig:
       
  5120                           image = d->imageArrowRightBig;
       
  5121                           xoffset = 8;
       
  5122                           yoffset = 2;
       
  5123                           break;
       
  5124                     default:
       
  5125                           break;
       
  5126                 }
       
  5127                 image.setColor(1, color.rgba());
       
  5128                 painter->drawImage(option->rect.x() + xoffset, option->rect.y() + yoffset, image);
       
  5129             }
       
  5130             else {                
       
  5131                  QPoint points[7];
       
  5132                  switch (element) {
       
  5133                      case PE_IndicatorArrowUp:
       
  5134                      case PE_IndicatorArrowUpBig:
       
  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_IndicatorArrowDown:
       
  5144                      case PE_IndicatorArrowDownBig:
       
  5145                          points[0] = QPoint(-3, -1);
       
  5146                          points[1] = QPoint(3, -1);
       
  5147                          points[2] = QPoint(-2, 0);
       
  5148                          points[3] = QPoint(2, 0);
       
  5149                          points[4] = QPoint(-1, 1);
       
  5150                          points[5] = QPoint(1, 1);
       
  5151                          points[6] = QPoint(0, 2);
       
  5152                          break;
       
  5153                      case PE_IndicatorArrowRight:
       
  5154                      case PE_IndicatorArrowRightBig:
       
  5155                          points[0] = QPoint(-2, -3);
       
  5156                          points[1] = QPoint(-2, 3);
       
  5157                          points[2] = QPoint(-1, -2);
       
  5158                          points[3] = QPoint(-1, 2);
       
  5159                          points[4] = QPoint(0, -1);
       
  5160                          points[5] = QPoint(0, 1);
       
  5161                          points[6] = QPoint(1, 0);
       
  5162                          break;
       
  5163                      case PE_IndicatorArrowLeft:
       
  5164                      case PE_IndicatorArrowLeftBig:
       
  5165                          points[0] = QPoint(0, -3);
       
  5166                          points[1] = QPoint(0, 3);
       
  5167                          points[2] = QPoint(-1, -2);
       
  5168                          points[3] = QPoint(-1, 2);
       
  5169                          points[4] = QPoint(-2, -1);
       
  5170                          points[5] = QPoint(-2, 1);
       
  5171                          points[6] = QPoint(-3, 0);
       
  5172                          break;
       
  5173                      default:
       
  5174                      break;
       
  5175                     }
       
  5176                     if (option->state & State_Sunken)
       
  5177                         painter->setPen(option->palette.light().color());
       
  5178                     else
       
  5179                         painter->setPen(option->palette.buttonText().color());
       
  5180                     if (option->state & State_Enabled) {
       
  5181                         painter->translate(option->rect.x() + option->rect.width() / 2,
       
  5182                             option->rect.y() + option->rect.height() / 2 - 1);
       
  5183                         painter->drawLine(points[0], points[1]);
       
  5184                         painter->drawLine(points[2], points[3]);
       
  5185                         painter->drawLine(points[4], points[5]);
       
  5186                         painter->drawPoint(points[6]);
       
  5187                     } else {
       
  5188                         painter->translate(option->rect.x() + option->rect.width() / 2,
       
  5189                             option->rect.y() + option->rect.height() / 2 - 1);
       
  5190                         painter->setPen(option->palette.mid().color());
       
  5191                         painter->drawLine(points[0], points[1]);
       
  5192                         painter->drawLine(points[2], points[3]);
       
  5193                         painter->drawLine(points[4], points[5]);
       
  5194                         painter->drawPoint(points[6]);
       
  5195                     }                
       
  5196             }
       
  5197         painter->restore();
       
  5198         break; }
       
  5199 #ifndef QT_NO_TABWIDGET
       
  5200     case PE_FrameTabWidget:
       
  5201         if (const QStyleOptionTabWidgetFrame *tab = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(option)) {
       
  5202           QRect rect = option->rect;
       
  5203         QPalette pal = option->palette;
       
  5204         painter->save();
       
  5205         QBrush fill = pal.light();
       
  5206           painter->fillRect(rect, fill);
       
  5207           painter->setPen(pal.shadow().color());
       
  5208           if (d->doubleControls) {
       
  5209               QPen pen = painter->pen();
       
  5210               pen.setWidth(2);
       
  5211               pen.setCapStyle(Qt::FlatCap);
       
  5212               painter->setPen(pen);
       
  5213           }
       
  5214           switch (tab->shape) {
       
  5215             case QTabBar::RoundedNorth:
       
  5216 #ifdef Q_WS_WINCE_WM
       
  5217                 if (!d->wm65)
       
  5218 #endif
       
  5219                 {
       
  5220                 if (d->doubleControls)
       
  5221                     painter->drawLine(rect.topLeft() + QPoint(0, 1), rect.topRight() + QPoint(0, 1));
       
  5222                 else
       
  5223                     painter->drawLine(rect.topLeft(), rect.topRight());
       
  5224                 }
       
  5225                 break;
       
  5226             case QTabBar::RoundedSouth:
       
  5227 #ifdef Q_WS_WINCE_WM
       
  5228                 if (!d->wm65)
       
  5229 #endif
       
  5230                 {
       
  5231                 if (d->doubleControls)
       
  5232                   painter->drawLine(rect.bottomLeft(), rect.bottomRight());
       
  5233                 else
       
  5234                   painter->drawLine(rect.bottomLeft(), rect.bottomRight());
       
  5235                 }
       
  5236                 break;
       
  5237             case QTabBar::RoundedEast:
       
  5238 #ifdef Q_WS_WINCE_WM
       
  5239                 if (!d->wm65)
       
  5240 #endif
       
  5241                 painter->drawLine(rect.topRight(), rect.bottomRight());
       
  5242                 break;
       
  5243             case QTabBar::RoundedWest:
       
  5244 #ifdef Q_WS_WINCE_WM
       
  5245                 if (!d->wm65)
       
  5246 #endif
       
  5247                 painter->drawLine(rect.topLeft(), rect.bottomLeft());
       
  5248                 break;
       
  5249             case QTabBar::TriangularWest:
       
  5250             case QTabBar::TriangularEast:
       
  5251             case QTabBar::TriangularSouth:
       
  5252             case QTabBar::TriangularNorth:
       
  5253                 if (d->doubleControls)
       
  5254                   qDrawPlainRect(painter, rect.adjusted(0,-2,0,0), option->palette.shadow().color(),2,&pal.light());
       
  5255                 else
       
  5256                   qDrawPlainRect(painter, rect, option->palette.shadow().color(),1,&pal.light());
       
  5257                 break;
       
  5258             default:
       
  5259                 break;
       
  5260             }
       
  5261             painter->restore();
       
  5262         }
       
  5263         break;
       
  5264 #endif //QT_NO_TABBAR
       
  5265 #ifndef QT_NO_ITEMVIEWS
       
  5266     case PE_PanelItemViewRow:
       
  5267         if (const QStyleOptionViewItemV4 *vopt = qstyleoption_cast<const QStyleOptionViewItemV4 *>(option)) {
       
  5268             QPalette::ColorGroup cg = vopt->state & QStyle::State_Enabled
       
  5269                                       ? QPalette::Normal : QPalette::Disabled;
       
  5270             if (cg == QPalette::Normal && !(vopt->state & QStyle::State_Active))
       
  5271                 cg = QPalette::Inactive;
       
  5272 
       
  5273             if ((vopt->state & QStyle::State_Selected) &&  proxy()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, option, widget))
       
  5274                  d->drawPanelItemViewSelected(painter, vopt);
       
  5275             else if (vopt->features & QStyleOptionViewItemV2::Alternate)
       
  5276                 painter->fillRect(vopt->rect, vopt->palette.brush(cg, QPalette::AlternateBase));
       
  5277             else if (!(vopt->state & QStyle::State_Enabled))
       
  5278                 painter->fillRect(vopt->rect, vopt->palette.brush(cg, QPalette::Base));
       
  5279         }
       
  5280         break;
       
  5281     case PE_PanelItemViewItem:
       
  5282         if (const QStyleOptionViewItemV4 *vopt = qstyleoption_cast<const QStyleOptionViewItemV4 *>(option)) {
       
  5283             QPalette::ColorGroup cg = vopt->state & QStyle::State_Enabled
       
  5284                                       ? QPalette::Normal : QPalette::Disabled;
       
  5285             if (cg == QPalette::Normal && !(vopt->state & QStyle::State_Active))
       
  5286                 cg = QPalette::Inactive;
       
  5287 
       
  5288             if (vopt->showDecorationSelected && (vopt->state & QStyle::State_Selected)) {
       
  5289                 d->drawPanelItemViewSelected(painter, vopt);
       
  5290             } else {
       
  5291                 if (vopt->backgroundBrush.style() != Qt::NoBrush) {
       
  5292                     QPointF oldBO = painter->brushOrigin();
       
  5293                     painter->setBrushOrigin(vopt->rect.topLeft());
       
  5294                     painter->fillRect(vopt->rect, vopt->backgroundBrush);
       
  5295                     painter->setBrushOrigin(oldBO);
       
  5296                 }
       
  5297 
       
  5298                 if (vopt->state & QStyle::State_Selected) {
       
  5299                     QRect textRect = proxy()->subElementRect(QStyle::SE_ItemViewItemText,  option, widget);
       
  5300                     d->drawPanelItemViewSelected(painter, vopt, textRect);
       
  5301                 }
       
  5302             }
       
  5303         }
       
  5304         break;
       
  5305 #endif //QT_NO_ITEMVIEWS
       
  5306 
       
  5307     case PE_FrameWindow: {
       
  5308         QPalette popupPal = option->palette;
       
  5309         popupPal.setColor(QPalette::Light, option->palette.background().color());
       
  5310         popupPal.setColor(QPalette::Midlight, option->palette.light().color());
       
  5311         if (d->doubleControls)
       
  5312             qDrawPlainRect(painter, option->rect, popupPal.shadow().color(),2,0);
       
  5313         else
       
  5314             qDrawPlainRect(painter, option->rect, popupPal.shadow().color(),1,0);
       
  5315         break; }
       
  5316     case PE_FrameTabBarBase: {
       
  5317         break; }
       
  5318     case PE_Widget:
       
  5319         break;
       
  5320     case PE_IndicatorMenuCheckMark: {
       
  5321         int markW = option->rect.width() > 7 ? 7 : option->rect.width();
       
  5322         int markH = markW;
       
  5323         if (d->doubleControls)
       
  5324             markW*=2;
       
  5325             markH*=2;
       
  5326         int posX = option->rect.x() + (option->rect.width() - markW)/2 + 1;
       
  5327         int posY = option->rect.y() + (option->rect.height() - markH)/2;
       
  5328 
       
  5329         QVector<QLineF> a;
       
  5330         a.reserve(markH);
       
  5331 
       
  5332         int i, xx, yy;
       
  5333         xx = posX;
       
  5334         yy = 3 + posY;
       
  5335         for (i = 0; i < markW/2; ++i) {
       
  5336             a << QLineF(xx, yy, xx, yy + 2);
       
  5337             ++xx;
       
  5338             ++yy;
       
  5339         }
       
  5340         yy -= 2;
       
  5341         for (; i < markH; ++i) {
       
  5342             a << QLineF(xx, yy, xx, yy + 2);
       
  5343             ++xx;
       
  5344             --yy;
       
  5345         }
       
  5346         if (!(option->state & State_Enabled) && !(option->state & State_On)) {
       
  5347             int pnt;
       
  5348             painter->setPen(option->palette.highlightedText().color());
       
  5349             QPoint offset(1, 1);
       
  5350             for (pnt = 0; pnt < a.size(); ++pnt)
       
  5351                 a[pnt].translate(offset.x(), offset.y());
       
  5352             painter->drawLines(a);
       
  5353             for (pnt = 0; pnt < a.size(); ++pnt)
       
  5354                 a[pnt].translate(offset.x(), offset.y());
       
  5355         }
       
  5356         painter->setPen(option->palette.text().color());
       
  5357         painter->drawLines(a);
       
  5358         break; }
       
  5359     case PE_Frame:
       
  5360         qDrawPlainRect(painter, option->rect, option->palette.shadow().color(),
       
  5361                        d->doubleControls ? 2 : 1, &option->palette.background());
       
  5362         break;
       
  5363     case PE_FrameLineEdit:
       
  5364     case PE_FrameMenu:
       
  5365         if (d->doubleControls)
       
  5366             qDrawPlainRect(painter, option->rect, option->palette.shadow().color(),2);
       
  5367         else
       
  5368             qDrawPlainRect(painter, option->rect, option->palette.shadow().color(),1);
       
  5369         break;
       
  5370     case PE_FrameStatusBar:
       
  5371         if (d->doubleControls)
       
  5372             qDrawPlainRect(painter, option->rect, option->palette.shadow().color(),2,0);
       
  5373         else
       
  5374             qDrawPlainRect(painter, option->rect, option->palette.shadow().color(),1,0);
       
  5375         break;
       
  5376 
       
  5377     default:
       
  5378         QWindowsStyle::drawPrimitive(element, option, painter, widget);
       
  5379         break;
       
  5380     }
       
  5381 }
       
  5382 
       
  5383 void QWindowsMobileStyle::drawControl(ControlElement element, const QStyleOption *option,
       
  5384                                       QPainter *painter, const QWidget *widget) const {
       
  5385 
       
  5386 
       
  5387    QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
       
  5388 
       
  5389    
       
  5390    painter->setClipping(false);
       
  5391    switch (element) {
       
  5392    case CE_MenuBarEmptyArea:
       
  5393         painter->setClipping(true);
       
  5394         QWindowsStyle::drawControl(element, option, painter, widget);
       
  5395         break;
       
  5396    case CE_PushButtonBevel:
       
  5397         if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
       
  5398             QRect br = button->rect;
       
  5399             int dbi = proxy()->pixelMetric(PM_ButtonDefaultIndicator, button, widget);
       
  5400 
       
  5401             if (button->features & QStyleOptionButton::AutoDefaultButton)
       
  5402                 br.setCoords(br.left() + dbi, br.top() + dbi, br.right() - dbi, br.bottom() - dbi);
       
  5403             QStyleOptionButton tmpBtn = *button;
       
  5404             tmpBtn.rect = br;
       
  5405             proxy()->drawPrimitive(PE_PanelButtonCommand, &tmpBtn, painter, widget);
       
  5406             if (button->features & QStyleOptionButton::HasMenu) {
       
  5407                 int mbi = proxy()->pixelMetric(PM_MenuButtonIndicator, button, widget);
       
  5408                 QRect ir = button->rect;
       
  5409                 QStyleOptionButton newButton = *button;
       
  5410                 if (d->doubleControls)
       
  5411                     newButton.rect = QRect(ir.right() - mbi, ir.height() - 30, mbi, ir.height() - 4);
       
  5412                 else
       
  5413                     newButton.rect = QRect(ir.right() - mbi, ir.height() - 20, mbi, ir.height() - 4);
       
  5414                 proxy()->drawPrimitive(PE_IndicatorArrowDown, &newButton, painter, widget);
       
  5415             }
       
  5416             if (button->features & QStyleOptionButton::DefaultButton)
       
  5417                 proxy()->drawPrimitive(PE_FrameDefaultButton, option, painter, widget);
       
  5418         }
       
  5419         break;
       
  5420    case CE_RadioButton:
       
  5421    case CE_CheckBox:
       
  5422        if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
       
  5423            bool isRadio = (element == CE_RadioButton);
       
  5424            QStyleOptionButton subopt = *button;
       
  5425            subopt.rect = proxy()->subElementRect(isRadio ? SE_RadioButtonIndicator
       
  5426                : SE_CheckBoxIndicator, button, widget);
       
  5427            proxy()->drawPrimitive(isRadio ? PE_IndicatorRadioButton : PE_IndicatorCheckBox,
       
  5428                &subopt, painter, widget);
       
  5429            subopt.rect = proxy()->subElementRect(isRadio ? SE_RadioButtonContents
       
  5430                : SE_CheckBoxContents, button, widget);
       
  5431            proxy()->drawControl(isRadio ? CE_RadioButtonLabel : CE_CheckBoxLabel, &subopt, painter, widget);
       
  5432            if (button->state & State_HasFocus) {
       
  5433                QStyleOptionFocusRect fropt;
       
  5434                fropt.QStyleOption::operator=(*button);
       
  5435                fropt.rect = proxy()->subElementRect(isRadio ? SE_RadioButtonFocusRect
       
  5436                    : SE_CheckBoxFocusRect, button, widget);
       
  5437                proxy()->drawPrimitive(PE_FrameFocusRect, &fropt, painter, widget);
       
  5438            }
       
  5439        }
       
  5440        break;
       
  5441    case CE_RadioButtonLabel:
       
  5442    case CE_CheckBoxLabel:
       
  5443        if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
       
  5444            uint alignment = visualAlignment(button->direction, Qt::AlignLeft | Qt::AlignVCenter);
       
  5445            if (!styleHint(SH_UnderlineShortcut, button, widget))
       
  5446                alignment |= Qt::TextHideMnemonic;
       
  5447            QPixmap pix;
       
  5448            QRect textRect = button->rect;
       
  5449            if (!button->icon.isNull()) {
       
  5450                pix = button->icon.pixmap(button->iconSize, button->state & State_Enabled ? QIcon::Normal : QIcon::Disabled);
       
  5451                proxy()->drawItemPixmap(painter, button->rect, alignment, pix);
       
  5452                if (button->direction == Qt::RightToLeft)
       
  5453                    textRect.setRight(textRect.right() - button->iconSize.width() - 4);
       
  5454                else
       
  5455                    textRect.setLeft(textRect.left() + button->iconSize.width() + 4);
       
  5456            }
       
  5457            if (!button->text.isEmpty()){
       
  5458                if (button->state & State_Enabled)
       
  5459                    proxy()->drawItemText(painter, textRect, alignment | Qt::TextShowMnemonic,
       
  5460                    button->palette, false, button->text, QPalette::WindowText);
       
  5461                else
       
  5462                    proxy()->drawItemText(painter, textRect, alignment | Qt::TextShowMnemonic,
       
  5463                    button->palette, false, button->text, QPalette::Mid);
       
  5464            }
       
  5465        }
       
  5466        break;
       
  5467 #ifndef QT_NO_PROGRESSBAR
       
  5468     case CE_ProgressBarGroove:
       
  5469         if (d->doubleControls)
       
  5470             qDrawPlainRect(painter, option->rect, option->palette.shadow().color(), 2, &option->palette.brush(QPalette::Window));
       
  5471         else
       
  5472             qDrawPlainRect(painter, option->rect, option->palette.shadow().color(), 1, &option->palette.brush(QPalette::Window));
       
  5473         break;
       
  5474 #endif //QT_NO_PROGRESSBAR
       
  5475 #ifndef QT_NO_TABBAR
       
  5476     case CE_TabBarTab:
       
  5477         if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) {
       
  5478             proxy()->drawControl(CE_TabBarTabShape, tab, painter, widget);
       
  5479             proxy()->drawControl(CE_TabBarTabLabel, tab, painter, widget);
       
  5480         }
       
  5481         break;
       
  5482     case CE_TabBarTabShape:
       
  5483         if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) {
       
  5484             
       
  5485             if (tab->shape == QTabBar::RoundedNorth || tab->shape == QTabBar::RoundedEast ||
       
  5486                 tab->shape == QTabBar::RoundedSouth || tab->shape == QTabBar::RoundedWest) {
       
  5487                     d->drawTabBarTab(painter, tab);
       
  5488             } else {
       
  5489                 QCommonStyle::drawControl(element, option, painter, widget);
       
  5490             }
       
  5491             break; }
       
  5492 
       
  5493 #endif // QT_NO_TABBAR
       
  5494 
       
  5495 #ifndef QT_NO_TOOLBAR
       
  5496     case CE_ToolBar:
       
  5497         if (const QStyleOptionToolBar *toolBar = qstyleoption_cast<const QStyleOptionToolBar *>(option)) {
       
  5498         QRect rect = option->rect;
       
  5499         painter->save();
       
  5500         painter->setPen(option->palette.dark().color());
       
  5501         painter->fillRect(rect,option->palette.button());
       
  5502         if (d->doubleControls) {
       
  5503             QPen pen = painter->pen();
       
  5504             pen.setWidth(4);
       
  5505             painter->setPen(pen);
       
  5506         }
       
  5507         if (toolBar->toolBarArea == Qt::TopToolBarArea)
       
  5508             painter->drawLine(rect.bottomLeft(), rect.bottomRight());
       
  5509         else
       
  5510             painter->drawLine(rect.topLeft(), rect.topRight());
       
  5511         painter->restore();
       
  5512         break; }
       
  5513 #endif //QT_NO_TOOLBAR
       
  5514     case CE_Header:
       
  5515         if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(option)) {
       
  5516             QRegion clipRegion = painter->clipRegion();
       
  5517             painter->setClipRect(option->rect);
       
  5518             proxy()->drawControl(CE_HeaderSection, header, painter, widget);
       
  5519             QStyleOptionHeader subopt = *header;
       
  5520             subopt.rect = proxy()->subElementRect(SE_HeaderLabel, header, widget);
       
  5521             if (header->state & State_Sunken) 
       
  5522                 subopt.palette.setColor(QPalette::ButtonText, header->palette.brightText().color());
       
  5523             subopt.state |= QStyle::State_On;
       
  5524             if (subopt.rect.isValid())
       
  5525                 proxy()->drawControl(CE_HeaderLabel, &subopt, painter, widget);
       
  5526             if (header->sortIndicator != QStyleOptionHeader::None) {
       
  5527                 subopt.rect = proxy()->subElementRect(SE_HeaderArrow, option, widget);
       
  5528                 proxy()->drawPrimitive(PE_IndicatorHeaderArrow, &subopt, painter, widget);
       
  5529             }
       
  5530             painter->setClipRegion(clipRegion);
       
  5531         }
       
  5532         break;
       
  5533 
       
  5534     case CE_HeaderSection:
       
  5535         if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(option)) {
       
  5536             QBrush fill;
       
  5537             QColor color;
       
  5538             QRect rect = option->rect;
       
  5539             painter->setPen(option->palette.shadow().color());
       
  5540 
       
  5541             int penSize = 1;
       
  5542 
       
  5543             if (d->doubleControls) {
       
  5544                 penSize = 2;
       
  5545                 QPen pen = painter->pen();
       
  5546                 pen.setWidth(2);
       
  5547                 pen.setCapStyle(Qt::FlatCap);
       
  5548                 painter->setPen(pen);
       
  5549             }
       
  5550 
       
  5551             //fix Frame
       
  5552 
       
  5553             if (header->position == QStyleOptionHeader::End
       
  5554                 || (header->position == QStyleOptionHeader::OnlyOneSection
       
  5555                 && !header->text.isEmpty()))
       
  5556                 if (Qt::Horizontal == header->orientation )
       
  5557                   rect.adjust(0, 0, penSize, 0);
       
  5558                 else
       
  5559                   rect.adjust(0, 0, 0, penSize);
       
  5560 
       
  5561             if (option->state & State_Sunken) {
       
  5562                 fill = option->palette.brush(QPalette::Shadow);
       
  5563                 color = option->palette.light().color();
       
  5564                 painter->drawLine(rect.bottomLeft(), rect.bottomRight());
       
  5565                 painter->drawLine(rect.topRight(), rect.bottomRight());
       
  5566                 rect.adjust(0, 0, -penSize, -penSize);
       
  5567             }
       
  5568             else {
       
  5569                 fill = option->palette.brush(QPalette::Button);
       
  5570                 color = option->palette.shadow().color();
       
  5571                 if (Qt::Horizontal == header->orientation )
       
  5572                     rect.adjust(-penSize, 0, 0, 0);
       
  5573                 else
       
  5574                   rect.adjust(0, -penSize, 0, 0);
       
  5575             }
       
  5576             if (Qt::Horizontal == header->orientation )
       
  5577                     rect.adjust(0,-penSize,0,0);
       
  5578                 else
       
  5579                   rect.adjust(-penSize, 0, 0, 0);
       
  5580 
       
  5581             if (option->state & State_Sunken) {
       
  5582                 qDrawPlainRect(painter, rect, color, penSize, &fill);
       
  5583             } else {
       
  5584                 //Corner
       
  5585                 rect.adjust(-penSize, 0, 0, 0);
       
  5586                 qDrawPlainRect(painter, rect, color, penSize, &fill);
       
  5587             }
       
  5588 
       
  5589             //Hack to get rid of some double lines... StyleOptions need a clean flag for that
       
  5590              rect = option->rect;
       
  5591 #ifndef QT_NO_SCROLLAREA
       
  5592              if (const QAbstractScrollArea *abstractScrollArea = qobject_cast<const QAbstractScrollArea *> (widget) ) {
       
  5593                  QRect rectScrollArea = abstractScrollArea->geometry();
       
  5594                  if (Qt::Horizontal == header->orientation )
       
  5595                      if ((rectScrollArea.right() - rect.right() ) > 1)
       
  5596                          painter->drawLine(rect.topRight(), rect.bottomRight());
       
  5597                      else ;
       
  5598                  else
       
  5599                      if ((rectScrollArea.bottom() - rect.bottom() ) > 1)
       
  5600                          painter->drawLine(rect.bottomLeft(), rect.bottomRight());
       
  5601              }
       
  5602 #endif // QT_NO_SCROLLAREA
       
  5603             break;
       
  5604         }
       
  5605 #ifndef QT_NO_COMBOBOX
       
  5606     case CE_ComboBoxLabel:
       
  5607         // This is copied from qcommonstyle.cpp with the difference, that
       
  5608         // the editRect isn't adjusted when calling drawItemText.
       
  5609         if (const QStyleOptionComboBox *cb = qstyleoption_cast<const QStyleOptionComboBox *>(option)) {
       
  5610             QRect editRect = proxy()->subControlRect(CC_ComboBox, cb, SC_ComboBoxEditField, widget);
       
  5611             painter->save();
       
  5612             painter->setClipRect(editRect);
       
  5613             if (!cb->currentIcon.isNull()) {
       
  5614                 QIcon::Mode mode = cb->state & State_Enabled ? QIcon::Normal
       
  5615                                                              : QIcon::Disabled;
       
  5616                 QPixmap pixmap = cb->currentIcon.pixmap(cb->iconSize, mode);
       
  5617                 QRect iconRect(editRect);
       
  5618                 iconRect.setWidth(cb->iconSize.width() + 4);
       
  5619                 iconRect = alignedRect(cb->direction,
       
  5620                                        Qt::AlignLeft | Qt::AlignVCenter,
       
  5621                                        iconRect.size(), editRect);
       
  5622                 if (cb->editable)
       
  5623                     painter->fillRect(iconRect, option->palette.brush(QPalette::Base));
       
  5624                 proxy()->drawItemPixmap(painter, iconRect, Qt::AlignCenter, pixmap);
       
  5625 
       
  5626                 if (cb->direction == Qt::RightToLeft)
       
  5627                     editRect.translate(-4 - cb->iconSize.width(), 0);
       
  5628                 else
       
  5629                     editRect.translate(cb->iconSize.width() + 4, 0);
       
  5630             }
       
  5631             if (!cb->currentText.isEmpty() && !cb->editable) {
       
  5632                 proxy()->drawItemText(painter, editRect,
       
  5633                              visualAlignment(cb->direction, Qt::AlignLeft | Qt::AlignVCenter),
       
  5634                              cb->palette, cb->state & State_Enabled, cb->currentText);
       
  5635             }
       
  5636             painter->restore();
       
  5637         }
       
  5638         break;
       
  5639 #endif // QT_NO_COMBOBOX
       
  5640 #ifndef QT_NO_DOCKWIDGET
       
  5641     case CE_DockWidgetTitle:
       
  5642         if (const QStyleOptionDockWidget *dwOpt = qstyleoption_cast<const QStyleOptionDockWidget *>(option)) {
       
  5643             const QStyleOptionDockWidgetV2 *v2
       
  5644                 = qstyleoption_cast<const QStyleOptionDockWidgetV2*>(option);
       
  5645             bool verticalTitleBar = v2 == 0 ? false : v2->verticalTitleBar;
       
  5646 
       
  5647             QRect rect = dwOpt->rect;
       
  5648             QRect r = rect;
       
  5649 
       
  5650             if (verticalTitleBar) {
       
  5651                 QSize s = r.size();
       
  5652                 s.transpose();
       
  5653                 r.setSize(s);
       
  5654 
       
  5655                 painter->save();
       
  5656                 painter->translate(r.left(), r.top() + r.width());
       
  5657                 painter->rotate(-90);
       
  5658                 painter->translate(-r.left(), -r.top());
       
  5659             }
       
  5660 
       
  5661             bool floating = false;
       
  5662             bool active = dwOpt->state & State_Active;
       
  5663             int menuOffset = 0; //used to center text when floated
       
  5664             QColor inactiveCaptionTextColor = option->palette.highlightedText().color();
       
  5665             if (dwOpt->movable) {
       
  5666                 QColor left, right;
       
  5667 
       
  5668                 //Titlebar gradient
       
  5669                 if (widget && widget->isWindow()) {
       
  5670                     floating = true;
       
  5671                     if (active) {
       
  5672                         right = option->palette.highlight().color();
       
  5673                         left = right.lighter(125);
       
  5674                     } else {
       
  5675                         left  = option->palette.highlight().color().lighter(125);
       
  5676                         right = QColor(0xff, 0xff, 0xff);
       
  5677                     }
       
  5678                     menuOffset = 2;
       
  5679                     QBrush fillBrush(left);
       
  5680                     if (left != right) {
       
  5681                         QPoint p1(r.x(), r.top() + r.height()/2);
       
  5682                         QPoint p2(rect.right(), r.top() + r.height()/2);
       
  5683                         QLinearGradient lg(p1, p2);
       
  5684                         lg.setColorAt(0, left);
       
  5685                         lg.setColorAt(1, right);
       
  5686                         fillBrush = lg;
       
  5687                     }
       
  5688                     painter->fillRect(r.adjusted(0, 0, 0, -3), fillBrush);
       
  5689                 } else {
       
  5690                     painter->fillRect(r.adjusted(0, 0, 0, -3), option->palette.button().color());
       
  5691                 }
       
  5692                 painter->setPen(dwOpt->palette.color(QPalette::Light));
       
  5693                 if (!widget || !widget->isWindow()) {
       
  5694                     painter->drawLine(r.topLeft(), r.topRight());
       
  5695                     painter->setPen(dwOpt->palette.color(QPalette::Dark));
       
  5696                     painter->drawLine(r.bottomLeft(), r.bottomRight());            }
       
  5697             }
       
  5698             if (!dwOpt->title.isEmpty()) {
       
  5699                 QFont oldFont = painter->font();
       
  5700                 QFont newFont = oldFont;
       
  5701                 if (newFont.pointSize() > 2)
       
  5702                     newFont.setPointSize(newFont.pointSize() - 2);
       
  5703                 if (floating)
       
  5704                     newFont.setBold(true);
       
  5705                 painter->setFont(newFont);
       
  5706                 QPalette palette = dwOpt->palette;
       
  5707                 palette.setColor(QPalette::Window, inactiveCaptionTextColor);
       
  5708                 QRect titleRect = proxy()->subElementRect(SE_DockWidgetTitleBarText, option, widget);
       
  5709                 if (verticalTitleBar) {
       
  5710                     titleRect = QRect(r.left() + rect.bottom()
       
  5711                                         - titleRect.bottom(),
       
  5712                                     r.top() + titleRect.left() - rect.left(),
       
  5713                                     titleRect.height(), titleRect.width());
       
  5714                 }
       
  5715                 proxy()->drawItemText(painter, titleRect,
       
  5716                             Qt::AlignLeft | Qt::AlignVCenter | Qt::TextShowMnemonic, palette,
       
  5717                             dwOpt->state & State_Enabled, dwOpt->title,
       
  5718                             floating ? (active ? QPalette::BrightText : QPalette::Window) : QPalette::WindowText);
       
  5719                 painter->setFont(oldFont);
       
  5720             }
       
  5721             if (verticalTitleBar)
       
  5722                 painter->restore();
       
  5723         }
       
  5724         return;
       
  5725 #endif // QT_NO_DOCKWIDGET
       
  5726 
       
  5727     case CE_PushButtonLabel:
       
  5728         if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
       
  5729             painter->save();
       
  5730             QRect ir = button->rect;
       
  5731             QPalette::ColorRole colorRole;
       
  5732             uint tf = Qt::AlignVCenter | Qt::TextShowMnemonic;
       
  5733             if (!styleHint(SH_UnderlineShortcut, button, widget))
       
  5734                 tf |= Qt::TextHideMnemonic;
       
  5735 
       
  5736             if (button->state & (State_On | State_Sunken))
       
  5737                 colorRole = QPalette::Light;
       
  5738             else
       
  5739                 colorRole = QPalette::ButtonText;
       
  5740 
       
  5741             if (!button->icon.isNull()) {
       
  5742                 QIcon::Mode mode = button->state & State_Enabled ? QIcon::Normal
       
  5743                     : QIcon::Disabled;
       
  5744                 if (mode == QIcon::Normal && button->state & State_HasFocus)
       
  5745                     mode = QIcon::Active;
       
  5746                 QIcon::State state = QIcon::Off;
       
  5747                 if (button->state & State_On)
       
  5748                     state = QIcon::On;
       
  5749                 QPixmap pixmap = button->icon.pixmap(button->iconSize, mode, state);
       
  5750                 int pixw = pixmap.width();
       
  5751                 int pixh = pixmap.height();
       
  5752                 //Center the icon if there is no text
       
  5753 
       
  5754                 QPoint point;
       
  5755                 if (button->text.isEmpty()) {
       
  5756                     point = QPoint(ir.x() + ir.width() / 2 - pixw / 2,
       
  5757                         ir.y() + ir.height() / 2 - pixh / 2);
       
  5758                 } else {
       
  5759                     point = QPoint(ir.x() + 2, ir.y() + ir.height() / 2 - pixh / 2);
       
  5760                 }
       
  5761                 if (button->direction == Qt::RightToLeft)
       
  5762                     point.rx() += pixw;
       
  5763 
       
  5764                 if ((button->state & (State_On | State_Sunken)) && button->direction == Qt::RightToLeft)
       
  5765                     point.rx() -= proxy()->pixelMetric(PM_ButtonShiftHorizontal, option, widget) * 2;
       
  5766 
       
  5767                 painter->drawPixmap(visualPos(button->direction, button->rect, point), pixmap);
       
  5768 
       
  5769                 if (button->direction == Qt::RightToLeft)
       
  5770                     ir.translate(-4, 0);
       
  5771                 else
       
  5772                     ir.translate(pixw + 4, 0);
       
  5773                 ir.setWidth(ir.width() - (pixw + 4));
       
  5774                 // left-align text if there is
       
  5775                 if (!button->text.isEmpty())
       
  5776                     tf |= Qt::AlignLeft;
       
  5777             } else {
       
  5778                 tf |= Qt::AlignHCenter;
       
  5779             }
       
  5780             if (button->state & State_Enabled)
       
  5781                 proxy()->drawItemText(painter, ir, tf, button->palette, true, button->text, colorRole);
       
  5782             else
       
  5783             proxy()->drawItemText(painter, ir, tf, button->palette, true, button->text, QPalette::Mid);
       
  5784             painter->restore();
       
  5785         }
       
  5786         break;
       
  5787         default:
       
  5788             QWindowsStyle::drawControl(element, option, painter, widget);
       
  5789             break;
       
  5790     }
       
  5791 }
       
  5792 
       
  5793 void QWindowsMobileStyle::drawComplexControl(ComplexControl control, const QStyleOptionComplex *option,
       
  5794                                              QPainter *painter, const QWidget *widget) const {
       
  5795 
       
  5796     painter->setClipping(false);
       
  5797     QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
       
  5798 
       
  5799     switch (control) {
       
  5800 #ifndef QT_NO_SLIDER
       
  5801     case CC_Slider:
       
  5802         if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(option)) {
       
  5803             int thickness  = proxy()->pixelMetric(PM_SliderControlThickness, slider, widget);
       
  5804             int len        = proxy()->pixelMetric(PM_SliderLength, slider, widget);
       
  5805             int ticks = slider->tickPosition;
       
  5806             QRect groove = proxy()->subControlRect(CC_Slider, slider, SC_SliderGroove, widget);
       
  5807             QRect handle = proxy()->subControlRect(CC_Slider, slider, SC_SliderHandle, widget);
       
  5808 
       
  5809             if ((slider->subControls & SC_SliderGroove) && groove.isValid()) {
       
  5810                 int mid = thickness / 2;
       
  5811                 if (ticks & QSlider::TicksAbove)
       
  5812                     mid += len / 8;
       
  5813                 if (ticks & QSlider::TicksBelow)
       
  5814                     mid -= len / 8;
       
  5815 
       
  5816                 painter->setPen(slider->palette.shadow().color());
       
  5817                 if (slider->orientation == Qt::Horizontal) {
       
  5818                     qDrawPlainRect(painter, groove.x(), groove.y() + mid - 2,
       
  5819                         groove.width(), 4, option->palette.shadow().color(),1,0);
       
  5820                 } else {
       
  5821                     qDrawPlainRect(painter, groove.x()+mid-2, groove.y(),
       
  5822                         4, groove.height(), option->palette.shadow().color(),1,0);
       
  5823                 }
       
  5824             }
       
  5825             if (slider->subControls & SC_SliderTickmarks) {
       
  5826                 QStyleOptionSlider tmpSlider = *slider;
       
  5827                 tmpSlider.subControls = SC_SliderTickmarks;
       
  5828                 QCommonStyle::drawComplexControl(control, &tmpSlider, painter, widget);
       
  5829             }
       
  5830 
       
  5831             if (slider->subControls & SC_SliderHandle) {
       
  5832                 const QColor c0 = slider->palette.shadow().color();
       
  5833                 const QColor c1 = slider->palette.dark().color();
       
  5834                 const QColor c3 = slider->palette.midlight().color();
       
  5835                 const QColor c4 = slider->palette.dark().color();
       
  5836                 QBrush handleBrush;
       
  5837 
       
  5838                 if (slider->state & State_Enabled) {
       
  5839                     handleBrush = slider->palette.color(QPalette::Light);
       
  5840                 } else {
       
  5841                     handleBrush = QBrush(slider->palette.color(QPalette::Shadow),
       
  5842                         Qt::Dense4Pattern);
       
  5843                 }
       
  5844                 int x = handle.x(), y = handle.y(),
       
  5845                     wi = handle.width(), he = handle.height();
       
  5846                 int x1 = x;
       
  5847                 int x2 = x+wi-1;
       
  5848                 int y1 = y;
       
  5849                 int y2 = y+he-1;
       
  5850 
       
  5851                 Qt::Orientation orient = slider->orientation;
       
  5852                 bool tickAbove = slider->tickPosition == QSlider::TicksAbove;
       
  5853                 bool tickBelow = slider->tickPosition == QSlider::TicksBelow;
       
  5854 
       
  5855                 if (slider->state & State_HasFocus) {
       
  5856                     QStyleOptionFocusRect fropt;
       
  5857                     fropt.QStyleOption::operator=(*slider);
       
  5858                     fropt.rect = proxy()->subElementRect(SE_SliderFocusRect, slider, widget);
       
  5859                     proxy()->drawPrimitive(PE_FrameFocusRect, &fropt, painter, widget);
       
  5860                 }
       
  5861                 if ((tickAbove && tickBelow) || (!tickAbove && !tickBelow)) {
       
  5862                     Qt::BGMode oldMode = painter->backgroundMode();
       
  5863                     painter->setBackgroundMode(Qt::OpaqueMode);
       
  5864                     qDrawPlainRect(painter, QRect(x, y, wi, he)
       
  5865                         ,slider->palette.shadow().color(),1,&handleBrush);
       
  5866                     painter->setBackgroundMode(oldMode);
       
  5867                     QBrush fill = QBrush(option->palette.light().color(), Qt::Dense4Pattern);
       
  5868                     if (slider->state & State_Sunken)
       
  5869                         painter->fillRect(QRectF(x1 + 2, y1 + 2, x2 - x1 - 3, y2 - y1 - 3),fill);
       
  5870                     return;
       
  5871                 }
       
  5872                 QSliderDirection dir;
       
  5873                 if (orient == Qt::Horizontal)
       
  5874                     if (tickAbove)
       
  5875                         dir = SliderUp;
       
  5876                     else
       
  5877                         dir = SliderDown;
       
  5878                 else
       
  5879                     if (tickAbove)
       
  5880                         dir = SliderLeft;
       
  5881                     else
       
  5882                         dir = SliderRight;
       
  5883                 QPolygon polygon;
       
  5884                 int d = 0;
       
  5885                 switch (dir) {
       
  5886                   case SliderUp:
       
  5887                       x2++;
       
  5888                       y1 = y1 + wi / 2;
       
  5889                       d =  (wi + 1) / 2 - 1;
       
  5890                       polygon.setPoints(5, x1, y1, x1, y2, x2, y2, x2, y1, x1 + d,y1 - d);
       
  5891                       break;
       
  5892                   case SliderDown:
       
  5893                       x2++;
       
  5894                       y2 = y2 - wi/2;
       
  5895                       d =  (wi + 1) / 2 - 1;
       
  5896                       polygon.setPoints(5, x1, y1, x1, y2, x1 + d,y2 + d, x2, y2, x2, y1);
       
  5897                   break;
       
  5898                       case SliderLeft:
       
  5899                       d =  (he + 1) / 2 - 1;
       
  5900                       x1 = x1 + he/2;
       
  5901                       polygon.setPoints(5, x1, y1, x1 - d, y1 + d, x1,y2, x2, y2, x2, y1);
       
  5902                       y1--;
       
  5903                       break;
       
  5904                   case SliderRight:
       
  5905                       d =  (he + 1) / 2 - 1;
       
  5906                       x2 = x2 - he/2;
       
  5907                       polygon.setPoints(5, x1, y1, x1, y2, x2,y2, x2 + d, y1 + d, x2, y1);
       
  5908                       y1--;
       
  5909                       break;
       
  5910                 }
       
  5911                 QBrush oldBrush = painter->brush();
       
  5912                 painter->setPen(Qt::NoPen);
       
  5913                 painter->setBrush(handleBrush);
       
  5914                 Qt::BGMode oldMode = painter->backgroundMode();
       
  5915                 painter->setBackgroundMode(Qt::OpaqueMode);
       
  5916                 painter->drawRect(x1, y1, x2-x1+1, y2-y1+1);
       
  5917                 painter->drawPolygon(polygon);
       
  5918                 QBrush fill = QBrush(option->palette.button().color(), Qt::Dense4Pattern);
       
  5919                 painter->setBrush(oldBrush);
       
  5920                 painter->setBackgroundMode(oldMode);
       
  5921                 if (slider->state & State_Sunken)
       
  5922                     painter->fillRect(QRectF(x1, y1, x2 - x1 + 1, y2 - y1 + 1),fill);
       
  5923 
       
  5924                 if (dir != SliderUp) {
       
  5925                     painter->setPen(c0);
       
  5926                     painter->drawLine(x1, y1, x2, y1);
       
  5927                 }
       
  5928                 if (dir != SliderLeft) {
       
  5929                     painter->setPen(c0);
       
  5930                     painter->drawLine(x1, y1, x1, y2);
       
  5931                 }
       
  5932                 if (dir != SliderRight) {
       
  5933                     painter->setPen(c0);
       
  5934                     painter->drawLine(x2, y1, x2, y2);
       
  5935                 }
       
  5936                 if (dir != SliderDown) {
       
  5937                     painter->setPen(c0);
       
  5938                     painter->drawLine(x1, y2, x2, y2);
       
  5939                 }
       
  5940                 switch (dir) {
       
  5941                   case SliderUp:
       
  5942                       if (slider->state & State_Sunken)
       
  5943                           painter->fillRect(QRectF(x1 + 3, y1 - d + 2, x2 - x1 - 4, y1),fill);
       
  5944                       painter->setPen(c0);
       
  5945                       painter->drawLine(x1, y1, x1 + d, y1 - d);
       
  5946                       d = wi - d - 1;
       
  5947                       painter->drawLine(x2, y1, x2 -d , y1 -d );
       
  5948                       d--;
       
  5949                       break;
       
  5950                   case SliderDown:
       
  5951                       if (slider->state & State_Sunken)
       
  5952                       painter->fillRect(QRectF(x1+3, y2 - d, x2 - x1  -4,y2 - 8),fill);
       
  5953                       painter->setPen(c0);
       
  5954                       painter->drawLine(x1, y2, x1 + d, y2 + d);
       
  5955                       d = wi - d - 1;
       
  5956                       painter->drawLine(x2, y2, x2 - d, y2 + d);
       
  5957                       d--;
       
  5958                       break;
       
  5959                   case SliderLeft:
       
  5960                       if (slider->state & State_Sunken)
       
  5961                           painter->fillRect(QRectF(x1 - d + 2, y1 + 2, x1, y2 - y1 - 3),fill);
       
  5962                       painter->setPen(c0);
       
  5963                       painter->drawLine(x1, y1, x1 - d, y1 + d);
       
  5964                       d = he - d - 1;
       
  5965                       painter->drawLine(x1, y2, x1 - d, y2 - d);
       
  5966                       d--;
       
  5967                       break;
       
  5968                   case SliderRight:
       
  5969                       if (slider->state & State_Sunken)
       
  5970                           painter->fillRect(QRectF(x2 - d - 4, y1 + 2, x2 - 4, y2 - y1 - 3),fill);
       
  5971                       painter->setPen(c0);
       
  5972                       painter->drawLine(x2, y1, x2 + d, y1 + d);
       
  5973                       painter->setPen(c0);
       
  5974                       d = he - d - 1;
       
  5975                       painter->drawLine(x2, y2, x2 + d, y2 - d);
       
  5976                       d--;
       
  5977                       break;
       
  5978                 }
       
  5979             }
       
  5980         }
       
  5981         break;
       
  5982 #endif //QT_NO_SLIDER
       
  5983 #ifndef QT_NO_SCROLLBAR
       
  5984     case CC_ScrollBar:
       
  5985         painter->save();
       
  5986         painter->setPen(option->palette.shadow().color());
       
  5987         if (d->doubleControls) {
       
  5988             QPen pen = painter->pen();
       
  5989             pen.setWidth(2);
       
  5990             pen.setCapStyle(Qt::SquareCap);
       
  5991             painter->setPen(pen);
       
  5992         }
       
  5993         if (const QStyleOptionSlider *scrollbar = qstyleoption_cast<const QStyleOptionSlider *>(option)) {
       
  5994             d->drawScrollbarGroove(painter, scrollbar);
       
  5995             // Make a copy here and reset it for each primitive.
       
  5996             QStyleOptionSlider newScrollbar = *scrollbar;
       
  5997             State saveFlags = scrollbar->state;
       
  5998             //Check if the scrollbar is part of an abstractItemView and draw the frame according
       
  5999             bool drawCompleteFrame = true;
       
  6000             bool secondScrollBar = false;
       
  6001             if (widget)
       
  6002                 if (QWidget *parent = widget->parentWidget()) {
       
  6003                     if (QAbstractScrollArea *abstractScrollArea = qobject_cast<QAbstractScrollArea *>(parent->parentWidget())) {
       
  6004                         drawCompleteFrame = (abstractScrollArea->frameStyle() == QFrame::NoFrame) ||  (abstractScrollArea->frameStyle() == QFrame::StyledPanel);
       
  6005                         secondScrollBar = (abstractScrollArea->horizontalScrollBar()->isVisible()
       
  6006                             && abstractScrollArea->verticalScrollBar()->isVisible()) ;
       
  6007                     }
       
  6008 #ifndef QT_NO_LISTVIEW
       
  6009                     if (QListView *listView = qobject_cast<QListView *>(parent->parentWidget()))
       
  6010                             drawCompleteFrame = false;
       
  6011 #endif
       
  6012                 }
       
  6013                 if (scrollbar->minimum == scrollbar->maximum)
       
  6014                     saveFlags |= State_Enabled;
       
  6015                 if (scrollbar->subControls & SC_ScrollBarSubLine) {
       
  6016                     newScrollbar.state = saveFlags;
       
  6017                     newScrollbar.rect = proxy()->subControlRect(control, &newScrollbar, SC_ScrollBarSubLine, widget);
       
  6018                     if (newScrollbar.rect.isValid()) {
       
  6019                         if (!(scrollbar->activeSubControls & SC_ScrollBarSubLine))
       
  6020                             newScrollbar.state &= ~(State_Sunken | State_MouseOver);
       
  6021                         d->drawScrollbarHandleUp(painter, &newScrollbar, drawCompleteFrame, secondScrollBar);
       
  6022                     }
       
  6023                 }
       
  6024                 if (scrollbar->subControls & SC_ScrollBarAddLine) {
       
  6025                     newScrollbar.rect = scrollbar->rect;
       
  6026                     newScrollbar.state = saveFlags;
       
  6027                     newScrollbar.rect = proxy()->subControlRect(control, &newScrollbar, SC_ScrollBarAddLine, widget);
       
  6028                     if (newScrollbar.rect.isValid()) {
       
  6029                         if (!(scrollbar->activeSubControls & SC_ScrollBarAddLine))
       
  6030                             newScrollbar.state &= ~(State_Sunken | State_MouseOver);
       
  6031                         d->drawScrollbarHandleDown(painter, &newScrollbar, drawCompleteFrame, secondScrollBar);
       
  6032                     }
       
  6033                 }
       
  6034                 if (scrollbar->subControls & SC_ScrollBarSlider) {
       
  6035 
       
  6036                       newScrollbar.rect = scrollbar->rect;
       
  6037                       newScrollbar.state = saveFlags;
       
  6038                       newScrollbar.rect = proxy()->subControlRect(control, &newScrollbar, SC_ScrollBarSlider, widget);
       
  6039 
       
  6040                       if (newScrollbar.rect.isValid()) {
       
  6041                           if (!(scrollbar->activeSubControls & SC_ScrollBarSlider))
       
  6042                               newScrollbar.state &= ~(State_Sunken | State_MouseOver);
       
  6043                           d->drawScrollbarGrip(painter, &newScrollbar, option, drawCompleteFrame);
       
  6044                       }
       
  6045                 }
       
  6046         }
       
  6047         painter->restore();
       
  6048         break;
       
  6049 #endif // QT_NO_SCROLLBAR
       
  6050     case CC_ToolButton:
       
  6051         if (const QStyleOptionToolButton *toolbutton
       
  6052                 = qstyleoption_cast<const QStyleOptionToolButton *>(option)) {
       
  6053             QRect button, menuarea;
       
  6054             bool isTabWidget = false;
       
  6055 #ifndef QT_NO_TABWIDGET
       
  6056             if (widget)
       
  6057                 if (QWidget *parent = widget->parentWidget())
       
  6058                     isTabWidget = (qobject_cast<QTabWidget *>(parent->parentWidget()));
       
  6059 #endif //QT_NO_TABWIDGET
       
  6060 
       
  6061             button = proxy()->subControlRect(control, toolbutton, SC_ToolButton, widget);
       
  6062             menuarea = proxy()->subControlRect(control, toolbutton, SC_ToolButtonMenu, widget);
       
  6063             State buttonFlags = toolbutton->state;
       
  6064             if (buttonFlags & State_AutoRaise) {
       
  6065                 if (!(buttonFlags & State_MouseOver)) {
       
  6066                     buttonFlags &= ~State_Raised;
       
  6067                 }
       
  6068             }
       
  6069             State menuFlags = buttonFlags;
       
  6070             if (toolbutton->activeSubControls & SC_ToolButton)
       
  6071                 buttonFlags |= State_Sunken;
       
  6072             if (toolbutton->activeSubControls & SC_ToolButtonMenu)
       
  6073                 menuFlags |= State_On;
       
  6074             QStyleOption tool(0);
       
  6075             tool.palette = toolbutton->palette;
       
  6076             if (toolbutton->subControls & SC_ToolButton) {
       
  6077                     tool.rect = button;
       
  6078                     tool.state = buttonFlags;
       
  6079                     proxy()->drawPrimitive(PE_PanelButtonTool, &tool, painter, widget);
       
  6080             }
       
  6081             if (toolbutton->subControls & SC_ToolButtonMenu) {
       
  6082                 tool.rect = menuarea;
       
  6083                 tool.state = buttonFlags & State_Enabled;
       
  6084                 QStyleOption toolMenu(0);
       
  6085                 toolMenu = *toolbutton;
       
  6086                 toolMenu.state = menuFlags;
       
  6087                 if (buttonFlags & State_Sunken)
       
  6088                   proxy()->drawPrimitive(PE_PanelButtonTool, &toolMenu, painter, widget);
       
  6089                 QStyleOption arrowOpt(0);
       
  6090                 arrowOpt.rect = tool.rect;
       
  6091                 arrowOpt.palette = tool.palette;
       
  6092                 State flags = State_None;
       
  6093                 if (menuFlags & State_Enabled)
       
  6094                     flags |= State_Enabled;
       
  6095                 if ((menuFlags & State_On) && !(buttonFlags & State_Sunken)) {
       
  6096                     flags |= State_Sunken;
       
  6097                     painter->fillRect(menuarea, option->palette.shadow());
       
  6098                 }
       
  6099                 arrowOpt.state = flags;
       
  6100                 proxy()->drawPrimitive(PE_IndicatorArrowDown, &arrowOpt, painter, widget);
       
  6101             }
       
  6102             if (toolbutton->state & State_HasFocus) {
       
  6103                 QStyleOptionFocusRect focusRect;
       
  6104                 focusRect.QStyleOption::operator=(*toolbutton);
       
  6105                 focusRect.rect.adjust(3, 3, -3, -3);
       
  6106                 if (toolbutton->features & QStyleOptionToolButton::Menu)
       
  6107                     focusRect.rect.adjust(0, 0, -proxy()->pixelMetric(QStyle::PM_MenuButtonIndicator,
       
  6108                                                          toolbutton, widget), 0);
       
  6109                 proxy()->drawPrimitive(PE_FrameFocusRect, &focusRect, painter, widget);
       
  6110             }
       
  6111             QStyleOptionToolButton label = *toolbutton;
       
  6112             if (isTabWidget)
       
  6113                 label.state = toolbutton->state;
       
  6114             else
       
  6115               label.state = toolbutton->state & State_Enabled;
       
  6116             int fw = proxy()->pixelMetric(PM_DefaultFrameWidth, option, widget);
       
  6117             label.rect = button.adjusted(fw, fw, -fw, -fw);
       
  6118             proxy()->drawControl(CE_ToolButtonLabel, &label, painter, widget);
       
  6119         }
       
  6120         break;
       
  6121 
       
  6122 #ifndef QT_NO_GROUPBOX
       
  6123     case CC_GroupBox:
       
  6124         if (const QStyleOptionGroupBox *groupBox = qstyleoption_cast<const QStyleOptionGroupBox *>(option)) {
       
  6125             // Draw frame
       
  6126             painter->save();
       
  6127             QFont font = painter->font();
       
  6128             font.setBold(true);
       
  6129             painter->setFont(font);
       
  6130             QStyleOptionGroupBox groupBoxFont = *groupBox;
       
  6131             groupBoxFont.fontMetrics = QFontMetrics(font);
       
  6132             QRect textRect = proxy()->subControlRect(CC_GroupBox, &groupBoxFont, SC_GroupBoxLabel, widget);
       
  6133             QRect checkBoxRect = proxy()->subControlRect(CC_GroupBox, option, SC_GroupBoxCheckBox, widget).adjusted(0,0,0,0);
       
  6134             if (groupBox->subControls & QStyle::SC_GroupBoxFrame) {
       
  6135                 QStyleOptionFrameV2 frame;
       
  6136                 frame.QStyleOption::operator=(*groupBox);
       
  6137                 frame.features = groupBox->features;
       
  6138                 frame.lineWidth = groupBox->lineWidth;
       
  6139                 frame.midLineWidth = groupBox->midLineWidth;
       
  6140                 frame.rect = proxy()->subControlRect(CC_GroupBox, option, SC_GroupBoxFrame, widget);
       
  6141                 painter->save();
       
  6142                 QRegion region(groupBox->rect);
       
  6143                 if (!groupBox->text.isEmpty()) {
       
  6144                     bool ltr = groupBox->direction == Qt::LeftToRight;
       
  6145                     QRect finalRect = checkBoxRect.united(textRect);
       
  6146                     if (groupBox->subControls & QStyle::SC_GroupBoxCheckBox)
       
  6147                         finalRect.adjust(ltr ? -4 : 0, 0, ltr ? 0 : 4, 0);
       
  6148                     region -= finalRect;
       
  6149                 }
       
  6150                 proxy()->drawPrimitive(PE_FrameGroupBox, &frame, painter, widget);
       
  6151                 painter->restore();
       
  6152             }
       
  6153              // Draw checkbox
       
  6154             if (groupBox->subControls & SC_GroupBoxCheckBox) {
       
  6155                 QStyleOptionButton box;
       
  6156                 box.QStyleOption::operator=(*groupBox);
       
  6157                 box.rect = checkBoxRect;
       
  6158                 proxy()->drawPrimitive(PE_IndicatorCheckBox, &box, painter, widget);
       
  6159             }
       
  6160             // Draw title
       
  6161             if ((groupBox->subControls & QStyle::SC_GroupBoxLabel) && !groupBox->text.isEmpty()) {
       
  6162                 QColor textColor = groupBox->textColor;
       
  6163                 if (textColor.isValid())
       
  6164                     painter->setPen(textColor);
       
  6165                 else
       
  6166                     painter->setPen(groupBox->palette.link().color());
       
  6167                 painter->setPen(groupBox->palette.link().color());
       
  6168 
       
  6169                 int alignment = int(groupBox->textAlignment);
       
  6170                 if (!styleHint(QStyle::SH_UnderlineShortcut, option, widget))
       
  6171                     alignment |= Qt::TextHideMnemonic;
       
  6172 
       
  6173                 if (groupBox->state & State_Enabled)
       
  6174                     proxy()->drawItemText(painter, textRect,  Qt::TextShowMnemonic | Qt::AlignHCenter | alignment,
       
  6175                     groupBox->palette, true, groupBox->text,
       
  6176                     textColor.isValid() ? QPalette::NoRole : QPalette::Link);
       
  6177                 else
       
  6178                     proxy()->drawItemText(painter, textRect,  Qt::TextShowMnemonic | Qt::AlignHCenter | alignment,
       
  6179                     groupBox->palette, true, groupBox->text, QPalette::Mid);
       
  6180                 if (groupBox->state & State_HasFocus) {
       
  6181                     QStyleOptionFocusRect fropt;
       
  6182                     fropt.QStyleOption::operator=(*groupBox);
       
  6183                     fropt.rect = textRect;
       
  6184                     proxy()->drawPrimitive(PE_FrameFocusRect, &fropt, painter, widget);
       
  6185                 }
       
  6186             }
       
  6187             painter->restore();
       
  6188         }
       
  6189         break;
       
  6190 #endif //QT_NO_GROUPBOX
       
  6191 
       
  6192 #ifndef QT_NO_COMBOBOX
       
  6193     case CC_ComboBox:
       
  6194         if (const QStyleOptionComboBox *cmb = qstyleoption_cast<const QStyleOptionComboBox *>(option)) {
       
  6195             QBrush editBrush = cmb->palette.brush(QPalette::Base);
       
  6196             if ((cmb->subControls & SC_ComboBoxFrame) && cmb->frame)
       
  6197                 qDrawPlainRect(painter, option->rect, option->palette.shadow().color(), proxy()->pixelMetric(PM_ComboBoxFrameWidth, option, widget), &editBrush);
       
  6198             else
       
  6199                 painter->fillRect(option->rect, editBrush);
       
  6200             State flags = State_None;
       
  6201             QRect ar = proxy()->subControlRect(CC_ComboBox, cmb, SC_ComboBoxArrow, widget);
       
  6202             if ((option->state & State_On)) {
       
  6203                 painter->fillRect(ar.adjusted(0, 0, 1, 1),cmb->palette.brush(QPalette::Shadow));
       
  6204             }
       
  6205             if (d->doubleControls)
       
  6206                 ar.adjust(5, 0, 5, 0);
       
  6207             else
       
  6208                 ar.adjust(2, 0, -2, 0);
       
  6209             if (option->state & State_Enabled)
       
  6210                 flags |= State_Enabled;
       
  6211             if (option->state & State_On)
       
  6212                 flags |= State_Sunken;
       
  6213             QStyleOption arrowOpt(0);
       
  6214             arrowOpt.rect = ar;
       
  6215             arrowOpt.palette = cmb->palette;
       
  6216             arrowOpt.state = flags;
       
  6217             proxy()->drawPrimitive(PrimitiveElement(PE_IndicatorArrowDownBig), &arrowOpt, painter, widget);
       
  6218             if (cmb->subControls & SC_ComboBoxEditField) {
       
  6219                 QRect re = proxy()->subControlRect(CC_ComboBox, cmb, SC_ComboBoxEditField, widget);
       
  6220                 if (cmb->state & State_HasFocus && !cmb->editable)
       
  6221                     painter->fillRect(re.x(), re.y(), re.width(), re.height(),
       
  6222                  cmb->palette.brush(QPalette::Highlight));
       
  6223                  if (cmb->state & State_HasFocus) {
       
  6224                     painter->setPen(cmb->palette.highlightedText().color());
       
  6225                     painter->setBackground(cmb->palette.highlight());
       
  6226                  } else {
       
  6227                     painter->setPen(cmb->palette.text().color());
       
  6228                     painter->setBackground(cmb->palette.background());
       
  6229                  }
       
  6230                  if (cmb->state & State_HasFocus && !cmb->editable) {
       
  6231                     QStyleOptionFocusRect focus;
       
  6232                     focus.QStyleOption::operator=(*cmb);
       
  6233                     focus.rect = proxy()->subElementRect(SE_ComboBoxFocusRect, cmb, widget);
       
  6234                     focus.state |= State_FocusAtBorder;
       
  6235                     focus.backgroundColor = cmb->palette.highlight().color();
       
  6236                     if ((option->state & State_On))
       
  6237                       proxy()->drawPrimitive(PE_FrameFocusRect, &focus, painter, widget);
       
  6238                }
       
  6239             }
       
  6240         }
       
  6241         break;
       
  6242 #endif // QT_NO_COMBOBOX
       
  6243 
       
  6244 
       
  6245 #ifndef QT_NO_SPINBOX
       
  6246     case CC_SpinBox:
       
  6247         if (const QStyleOptionSpinBox *spinBox = qstyleoption_cast<const QStyleOptionSpinBox *>(option)) {
       
  6248             QStyleOptionSpinBox copy = *spinBox;
       
  6249             //PrimitiveElement primitiveElement;
       
  6250             int primitiveElement;
       
  6251 
       
  6252             if (spinBox->frame && (spinBox->subControls & SC_SpinBoxFrame)) {
       
  6253                 QRect r = proxy()->subControlRect(CC_SpinBox, spinBox, SC_SpinBoxFrame, widget);
       
  6254                 qDrawPlainRect(painter, r, option->palette.shadow().color(), proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget),0);
       
  6255             }
       
  6256             QPalette shadePal(option->palette);
       
  6257             shadePal.setColor(QPalette::Button, option->palette.light().color());
       
  6258             shadePal.setColor(QPalette::Light, option->palette.base().color());
       
  6259             if (spinBox->subControls & SC_SpinBoxUp) {
       
  6260                 copy.subControls = SC_SpinBoxUp;
       
  6261                 QPalette pal2 = spinBox->palette;
       
  6262                 if (!(spinBox->stepEnabled & QAbstractSpinBox::StepUpEnabled)) {
       
  6263                     pal2.setCurrentColorGroup(QPalette::Disabled);
       
  6264                     copy.state &= ~State_Enabled;
       
  6265                 }
       
  6266                 copy.palette = pal2;
       
  6267                 if (spinBox->activeSubControls == SC_SpinBoxUp && (spinBox->state & State_Sunken)) {
       
  6268                     copy.state |= State_On;
       
  6269                     copy.state |= State_Sunken;
       
  6270                 } else {
       
  6271                     copy.state |= State_Raised;
       
  6272                     copy.state &= ~State_Sunken;
       
  6273                 }
       
  6274                 primitiveElement = (spinBox->buttonSymbols == QAbstractSpinBox::PlusMinus ? PE_IndicatorArrowUpBig
       
  6275                     : PE_IndicatorArrowUpBig);
       
  6276                 copy.rect = proxy()->subControlRect(CC_SpinBox, spinBox, SC_SpinBoxUp, widget);
       
  6277                 if (copy.state & (State_Sunken | State_On))
       
  6278                     qDrawPlainRect(painter, copy.rect, option->palette.shadow().color(), proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), &copy.palette.brush(QPalette::Shadow));
       
  6279                 else
       
  6280                   qDrawPlainRect(painter, copy.rect, option->palette.shadow().color(), proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), &copy.palette.brush(QPalette::Base));
       
  6281                 copy.rect.adjust(proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), 0, -pixelMetric(PM_SpinBoxFrameWidth, option, widget), 0);
       
  6282                 proxy()->drawPrimitive(PrimitiveElement(primitiveElement), &copy, painter, widget);
       
  6283             }
       
  6284             if (spinBox->subControls & SC_SpinBoxDown) {
       
  6285                 copy.subControls = SC_SpinBoxDown;
       
  6286                 copy.state = spinBox->state;
       
  6287                 QPalette pal2 = spinBox->palette;
       
  6288                 if (!(spinBox->stepEnabled & QAbstractSpinBox::StepDownEnabled)) {
       
  6289                     pal2.setCurrentColorGroup(QPalette::Disabled);
       
  6290                     copy.state &= ~State_Enabled;
       
  6291                 }
       
  6292                 copy.palette = pal2;
       
  6293                 if (spinBox->activeSubControls == SC_SpinBoxDown && (spinBox->state & State_Sunken)) {
       
  6294                     copy.state |= State_On;
       
  6295                     copy.state |= State_Sunken;
       
  6296                 } else {
       
  6297                     copy.state |= State_Raised;
       
  6298                     copy.state &= ~State_Sunken;
       
  6299                 }
       
  6300                 primitiveElement = (spinBox->buttonSymbols == QAbstractSpinBox::PlusMinus ? PE_IndicatorArrowDownBig
       
  6301                                                                        : PE_IndicatorArrowDownBig);
       
  6302                 copy.rect = proxy()->subControlRect(CC_SpinBox, spinBox, SC_SpinBoxDown, widget);
       
  6303                 qDrawPlainRect(painter, copy.rect, option->palette.shadow().color(), proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), &copy.palette.brush(QPalette::Base));
       
  6304                 if (copy.state & (State_Sunken | State_On))
       
  6305                     qDrawPlainRect(painter, copy.rect, option->palette.shadow().color(), proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), &copy.palette.brush(QPalette::Shadow));
       
  6306                 else
       
  6307                     qDrawPlainRect(painter, copy.rect, option->palette.shadow().color(), proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), &copy.palette.brush(QPalette::Base));
       
  6308                 copy.rect.adjust(3, 0, -4, 0);
       
  6309                 if (primitiveElement == PE_IndicatorArrowUp || primitiveElement == PE_IndicatorArrowDown) {
       
  6310                     int frameWidth = proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget);
       
  6311                     copy.rect = copy.rect.adjusted(frameWidth, frameWidth, -frameWidth, -frameWidth);
       
  6312                     proxy()->drawPrimitive(PrimitiveElement(primitiveElement), &copy, painter, widget);
       
  6313                 }
       
  6314                 else {
       
  6315                     proxy()->drawPrimitive(PrimitiveElement(primitiveElement), &copy, painter, widget);
       
  6316                 }
       
  6317                 if (spinBox->frame && (spinBox->subControls & SC_SpinBoxFrame)) {
       
  6318                     QRect r = proxy()->subControlRect(CC_SpinBox, spinBox, SC_SpinBoxEditField, widget);
       
  6319                 }
       
  6320             }
       
  6321         }
       
  6322         break;
       
  6323 #endif // QT_NO_SPINBOX
       
  6324 
       
  6325     default:
       
  6326         QWindowsStyle::drawComplexControl(control, option, painter, widget);
       
  6327         break;
       
  6328     }
       
  6329 }
       
  6330 
       
  6331 QSize QWindowsMobileStyle::sizeFromContents(ContentsType type, const QStyleOption *option,
       
  6332                                             const QSize &size, const QWidget *widget) const {
       
  6333 
       
  6334     QSize newSize = QWindowsStyle::sizeFromContents(type, option, size, widget);
       
  6335     switch (type) {
       
  6336     case CT_PushButton:
       
  6337        if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
       
  6338             newSize = QCommonStyle::sizeFromContents(type, option, size, widget);
       
  6339             int w = newSize.width(),
       
  6340                 h = newSize.height();
       
  6341             int defwidth = 0;
       
  6342             if (button->features & QStyleOptionButton::AutoDefaultButton)
       
  6343                 defwidth = 2 * proxy()->pixelMetric(PM_ButtonDefaultIndicator, button, widget);
       
  6344 
       
  6345             int minwidth = int(QStyleHelper::dpiScaled(55.0f));
       
  6346             int minheight = int(QStyleHelper::dpiScaled(19.0f));
       
  6347 
       
  6348             if (w < minwidth + defwidth && button->icon.isNull())
       
  6349                 w = minwidth + defwidth;
       
  6350             if (h < minheight + defwidth)
       
  6351                 h = minheight + defwidth;
       
  6352             newSize = QSize(w + 4, h + 4);
       
  6353         }
       
  6354         break;
       
  6355 
       
  6356 #ifndef QT_NO_GROUPBOX
       
  6357     case CT_GroupBox:
       
  6358         if (const QGroupBox *grb = static_cast<const QGroupBox *>(widget)) {
       
  6359             newSize = size + QSize(!grb->isFlat() ? 16 : 0, !grb->isFlat() ? 16 : 0);
       
  6360         }
       
  6361         break;
       
  6362 #endif // QT_NO_GROUPBOX
       
  6363 
       
  6364     case CT_RadioButton:
       
  6365     case CT_CheckBox:
       
  6366         newSize = size;
       
  6367         if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
       
  6368             bool isRadio = (type == CT_RadioButton);
       
  6369             QRect irect = visualRect(button->direction, button->rect,
       
  6370                                      proxy()->subElementRect(isRadio ? SE_RadioButtonIndicator
       
  6371                                                             : SE_CheckBoxIndicator, button, widget));
       
  6372             int h = proxy()->pixelMetric(isRadio ? PM_ExclusiveIndicatorHeight
       
  6373                                         : PM_IndicatorHeight, button, widget);
       
  6374             int margins = (!button->icon.isNull() && button->text.isEmpty()) ? 0 : 10;
       
  6375              if (d_func()->doubleControls)
       
  6376                  margins *= 2;
       
  6377             newSize += QSize(irect.right() + margins, 1);
       
  6378             newSize.setHeight(qMax(newSize.height(), h));
       
  6379         }
       
  6380         break;
       
  6381 #ifndef QT_NO_COMBOBOX
       
  6382     case CT_ComboBox:
       
  6383         if (const QStyleOptionComboBox *comboBox = qstyleoption_cast<const QStyleOptionComboBox *>(option)) {
       
  6384             int fw = comboBox->frame ? proxy()->pixelMetric(PM_ComboBoxFrameWidth, option, widget) * 2 : 0;
       
  6385             newSize = QSize(newSize.width() + fw + 9, newSize.height() + fw); //Nine is a magic Number - See CommonStyle for real magic (23)
       
  6386         }
       
  6387         break;
       
  6388 #endif
       
  6389 #ifndef QT_NO_SPINBOX
       
  6390     case CT_SpinBox:
       
  6391         if (const QStyleOptionSpinBox *spinBox = qstyleoption_cast<const QStyleOptionSpinBox *>(option)) {
       
  6392             int fw = spinBox->frame ? proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget) * 2 : 0;
       
  6393             newSize = QSize(newSize.width() + fw-5, newSize.height() + fw-6);
       
  6394         }
       
  6395         break;
       
  6396 #endif
       
  6397 #ifndef QT_NO_LINEEDIT
       
  6398     case CT_LineEdit:
       
  6399         newSize += QSize(0,1);
       
  6400         break;
       
  6401 #endif
       
  6402     case CT_ToolButton:
       
  6403         newSize = QSize(newSize.width() + 1, newSize.height());
       
  6404         break;
       
  6405     case CT_TabBarTab:
       
  6406         if (d_func()->doubleControls)
       
  6407             newSize = QSize(newSize.width(), 42);
       
  6408         else
       
  6409             newSize = QSize(newSize.width(), 21);
       
  6410         break;
       
  6411     case CT_HeaderSection:
       
  6412         newSize += QSize(4, 2);
       
  6413         break;
       
  6414 #ifndef QT_NO_ITEMVIEWS
       
  6415 #ifdef Q_WS_WINCE_WM
       
  6416     case CT_ItemViewItem:
       
  6417         if (d_func()->wm65)
       
  6418             if (d_func()->doubleControls)
       
  6419                 newSize.setHeight(46);
       
  6420             else
       
  6421                 newSize.setHeight(23);
       
  6422         break;
       
  6423 #endif //Q_WS_WINCE_WM
       
  6424 #endif //QT_NO_ITEMVIEWS
       
  6425     default:
       
  6426         break;
       
  6427     }
       
  6428     return newSize;
       
  6429 }
       
  6430 
       
  6431 QRect QWindowsMobileStyle::subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const {
       
  6432 
       
  6433     QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
       
  6434     QRect rect = QWindowsStyle::subElementRect(element, option, widget);
       
  6435     switch (element) {
       
  6436 #ifndef QT_NO_TABWIDGET
       
  6437     case SE_TabWidgetTabBar:
       
  6438         if (d->doubleControls)
       
  6439             rect.adjust(-2, 0, 2, 0);
       
  6440         else
       
  6441             rect.adjust(-2, 0, 2, 0);
       
  6442         break;
       
  6443 #endif //QT_NO_TABWIDGET
       
  6444     case SE_CheckBoxFocusRect:
       
  6445         rect.adjust(1,0,-2,-1);
       
  6446         break;
       
  6447     case SE_RadioButtonFocusRect:
       
  6448         rect.adjust(1,1,-2,-2);
       
  6449         break;
       
  6450     default:
       
  6451         break;
       
  6452 #ifndef QT_NO_SLIDER
       
  6453     case SE_SliderFocusRect:
       
  6454         if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(option)) {
       
  6455             rect = slider->rect;
       
  6456         }
       
  6457         break;
       
  6458     case SE_PushButtonFocusRect:
       
  6459         if (d->doubleControls)
       
  6460             rect.adjust(-1, -1, 0, 0);
       
  6461         break;
       
  6462 #endif // QT_NO_SLIDER
       
  6463 #ifndef QT_NO_ITEMVIEWS
       
  6464         case SE_ItemViewItemFocusRect:
       
  6465 #ifdef Q_WS_WINCE_WM
       
  6466             if (d->wm65)
       
  6467                 rect = QRect();
       
  6468 #endif
       
  6469         break;
       
  6470 #endif //QT_NO_ITEMVIEWS
       
  6471     }
       
  6472     return rect;
       
  6473 }
       
  6474 
       
  6475 QRect QWindowsMobileStyle::subControlRect(ComplexControl control, const QStyleOptionComplex *option,
       
  6476                                           SubControl subControl, const QWidget *widget) const {
       
  6477 
       
  6478     QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
       
  6479 
       
  6480     QRect rect = QCommonStyle::subControlRect(control, option, subControl, widget);
       
  6481     switch (control) {
       
  6482 
       
  6483 #ifndef QT_NO_SCROLLBAR
       
  6484     case CC_ScrollBar:
       
  6485         if (const QStyleOptionSlider *scrollbar = qstyleoption_cast<const QStyleOptionSlider *>(option)) {
       
  6486             int sliderButtonExtent = proxy()->pixelMetric(PM_ScrollBarExtent, scrollbar, widget);
       
  6487             float stretchFactor = 1.4f;
       
  6488             int sliderButtonExtentDir = int (sliderButtonExtent * stretchFactor);
       
  6489 
       
  6490 #ifdef Q_WS_WINCE_WM
       
  6491             if (d->wm65)
       
  6492             {
       
  6493                 sliderButtonExtent = d->imageScrollbarHandleUp.width();
       
  6494                 sliderButtonExtentDir = d->imageScrollbarHandleUp.height();
       
  6495             }
       
  6496 #endif //Q_WS_WINCE_WM
       
  6497 
       
  6498             int sliderlen;
       
  6499             int maxlen = ((scrollbar->orientation == Qt::Horizontal) ?
       
  6500                 scrollbar->rect.width() : scrollbar->rect.height()) - (sliderButtonExtentDir * 2);
       
  6501             // calculate slider length
       
  6502             if (scrollbar->maximum != scrollbar->minimum) {
       
  6503                 uint range = scrollbar->maximum - scrollbar->minimum;
       
  6504                 sliderlen = (qint64(scrollbar->pageStep) * maxlen) / (range + scrollbar->pageStep);
       
  6505 
       
  6506                 int slidermin = proxy()->pixelMetric(PM_ScrollBarSliderMin, scrollbar, widget);
       
  6507                 if (sliderlen < slidermin || range > INT_MAX / 2)
       
  6508                     sliderlen = slidermin;
       
  6509                 if (sliderlen > maxlen)
       
  6510                     sliderlen = maxlen;
       
  6511             } else {
       
  6512                 sliderlen = maxlen;
       
  6513             }
       
  6514             int sliderstart = sliderButtonExtentDir + sliderPositionFromValue(scrollbar->minimum,
       
  6515                 scrollbar->maximum,
       
  6516                 scrollbar->sliderPosition,
       
  6517                 maxlen - sliderlen,
       
  6518                 scrollbar->upsideDown);
       
  6519             if (d->smartphone) {
       
  6520                 sliderstart -= sliderButtonExtentDir;
       
  6521                 sliderlen += 2*sliderButtonExtent;
       
  6522             }
       
  6523             switch (subControl) {
       
  6524             case SC_ScrollBarSubLine:            // top/left button
       
  6525                 if (scrollbar->orientation == Qt::Horizontal) {
       
  6526                     int buttonWidth = qMin(scrollbar->rect.width() / 2, sliderButtonExtentDir );
       
  6527                     rect.setRect(0, 0, buttonWidth, sliderButtonExtent);
       
  6528                 } else {
       
  6529                     int buttonHeight = qMin(scrollbar->rect.height() / 2, sliderButtonExtentDir);
       
  6530                     rect.setRect(0, 0, sliderButtonExtent, buttonHeight);
       
  6531                 }
       
  6532                 if (d->smartphone)
       
  6533                     rect.setRect(0, 0, 0, 0);
       
  6534                 break;
       
  6535             case SC_ScrollBarAddLine:            // bottom/right button
       
  6536                 if (scrollbar->orientation == Qt::Horizontal) {
       
  6537                     int buttonWidth = qMin(scrollbar->rect.width()/2, sliderButtonExtentDir);
       
  6538                     rect.setRect(scrollbar->rect.width() - buttonWidth, 0, buttonWidth, sliderButtonExtent);
       
  6539                 } else {
       
  6540                     int buttonHeight = qMin(scrollbar->rect.height()/2, sliderButtonExtentDir );
       
  6541                     rect.setRect(0, scrollbar->rect.height() - buttonHeight, sliderButtonExtent, buttonHeight);
       
  6542                 }
       
  6543                 if (d->smartphone)
       
  6544                     rect.setRect(0, 0, 0, 0);
       
  6545                 break;
       
  6546             case SC_ScrollBarSubPage:            // between top/left button and slider
       
  6547                 if (scrollbar->orientation == Qt::Horizontal)
       
  6548                     if (d->smartphone)
       
  6549                        rect.setRect(0, 0, sliderstart, sliderButtonExtent);
       
  6550                     else
       
  6551                       rect.setRect(sliderButtonExtent, 0, sliderstart - sliderButtonExtent, sliderButtonExtent);
       
  6552                 else
       
  6553                     if (d->smartphone)
       
  6554                       rect.setRect(0, 0, sliderButtonExtent, sliderstart);
       
  6555                     else
       
  6556                       rect.setRect(0, sliderButtonExtent, sliderButtonExtent, sliderstart - sliderButtonExtent);
       
  6557                 break;
       
  6558             case SC_ScrollBarAddPage:            // between bottom/right button and slider
       
  6559                 if (scrollbar->orientation == Qt::Horizontal)
       
  6560                     if (d->smartphone)
       
  6561                       rect.setRect(sliderstart + sliderlen, 0,
       
  6562                                   maxlen - sliderstart - sliderlen + 2*sliderButtonExtent, sliderButtonExtent);
       
  6563                     else
       
  6564                       rect.setRect(sliderstart + sliderlen, 0,
       
  6565                                    maxlen - sliderstart - sliderlen + sliderButtonExtent, sliderButtonExtent);
       
  6566                 else
       
  6567                     if (d->smartphone)
       
  6568                       rect.setRect(0, sliderstart + sliderlen, sliderButtonExtent,
       
  6569                                   maxlen - sliderstart - sliderlen + 2*sliderButtonExtent);
       
  6570                     else
       
  6571                        rect.setRect(0, sliderstart + sliderlen, sliderButtonExtent,
       
  6572                                   maxlen - sliderstart - sliderlen + sliderButtonExtent);
       
  6573                 break;
       
  6574             case SC_ScrollBarGroove:
       
  6575                 if (scrollbar->orientation == Qt::Horizontal)
       
  6576                     rect.setRect(sliderButtonExtent, 0, scrollbar->rect.width() - sliderButtonExtent * 2,
       
  6577                                 scrollbar->rect.height());
       
  6578                 else
       
  6579                     rect.setRect(0, sliderButtonExtent, scrollbar->rect.width(),
       
  6580                                 scrollbar->rect.height() - sliderButtonExtent * 2);
       
  6581                 break;
       
  6582             case SC_ScrollBarSlider:
       
  6583                 if (scrollbar->orientation == Qt::Horizontal)
       
  6584                     rect.setRect(sliderstart, 0, sliderlen, sliderButtonExtent);
       
  6585                 else
       
  6586                     rect.setRect(0, sliderstart, sliderButtonExtent, sliderlen);
       
  6587                 break;
       
  6588             default:
       
  6589                 break;
       
  6590             }
       
  6591             rect = visualRect(scrollbar->direction, scrollbar->rect, rect);
       
  6592         }
       
  6593         break;
       
  6594 #endif // QT_NO_SCROLLBAR
       
  6595 
       
  6596 
       
  6597 
       
  6598 #ifndef QT_NO_TOOLBUTTON
       
  6599     case CC_ToolButton:
       
  6600         if (const QStyleOptionToolButton *toolButton = qstyleoption_cast<const QStyleOptionToolButton *>(option)) {
       
  6601             int mbi = proxy()->pixelMetric(PM_MenuButtonIndicator, toolButton, widget);
       
  6602             rect = toolButton->rect;
       
  6603             switch (subControl) {
       
  6604             case SC_ToolButton:
       
  6605                 if ((toolButton->features
       
  6606                      & (QStyleOptionToolButton::Menu | QStyleOptionToolButton::PopupDelay))
       
  6607                     == QStyleOptionToolButton::Menu)
       
  6608                     rect.adjust(0, 0, -mbi, 0);
       
  6609                 break;
       
  6610             case SC_ToolButtonMenu:
       
  6611                 if ((toolButton->features
       
  6612                      & (QStyleOptionToolButton::Menu | QStyleOptionToolButton::PopupDelay))
       
  6613                     == QStyleOptionToolButton::Menu)
       
  6614                     rect.adjust(rect.width() - mbi, 1, 0, 1);
       
  6615                 break;
       
  6616             default:
       
  6617                 break;
       
  6618             }
       
  6619             rect = visualRect(toolButton->direction, toolButton->rect, rect);
       
  6620         }
       
  6621         break;
       
  6622 #endif // QT_NO_TOOLBUTTON
       
  6623 
       
  6624 #ifndef QT_NO_SLIDER
       
  6625         case CC_Slider:
       
  6626         if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(option)) {
       
  6627             int tickOffset = proxy()->pixelMetric(PM_SliderTickmarkOffset, slider, widget);
       
  6628             int thickness = proxy()->pixelMetric(PM_SliderControlThickness, slider, widget);
       
  6629             switch (subControl) {
       
  6630             case SC_SliderHandle: {
       
  6631                 int sliderPos = 0;
       
  6632                 int len = proxy()->pixelMetric(PM_SliderLength, slider, widget);
       
  6633                 bool horizontal = slider->orientation == Qt::Horizontal;
       
  6634                 sliderPos = sliderPositionFromValue(slider->minimum, slider->maximum,
       
  6635                                                     slider->sliderPosition,
       
  6636                                                     (horizontal ? slider->rect.width()
       
  6637                                                                 : slider->rect.height()) - len,
       
  6638                                                     slider->upsideDown);
       
  6639                 if (horizontal)
       
  6640                     rect.setRect(slider->rect.x() + sliderPos, slider->rect.y() + tickOffset, len, thickness);
       
  6641                 else
       
  6642                     rect.setRect(slider->rect.x() + tickOffset, slider->rect.y() + sliderPos, thickness, len);
       
  6643                 break; }
       
  6644             default:
       
  6645                 break;
       
  6646             }
       
  6647             rect = visualRect(slider->direction, slider->rect, rect);
       
  6648         }
       
  6649         break;
       
  6650 #endif //QT_NO_SLIDER
       
  6651 #ifndef QT_NO_COMBOBOX
       
  6652     case CC_ComboBox:
       
  6653         if (const QStyleOptionComboBox *comboBox = qstyleoption_cast<const QStyleOptionComboBox *>(option)) {
       
  6654         int x = comboBox->rect.x(),
       
  6655             y = comboBox->rect.y(),
       
  6656             wi = comboBox->rect.width(),
       
  6657             he = comboBox->rect.height();
       
  6658         int xpos = x;
       
  6659         int margin = comboBox->frame ? (d->doubleControls ? 2 : 1) : 0;
       
  6660         int bmarg = comboBox->frame ? (d->doubleControls ? 2 : 1) :  0;
       
  6661         if (subControl == SC_ComboBoxArrow)
       
  6662           xpos += wi - int((he - 2*bmarg)*0.9) - bmarg;
       
  6663         else
       
  6664           xpos += wi - (he - 2*bmarg) - bmarg;
       
  6665         switch (subControl) {
       
  6666         case SC_ComboBoxArrow:
       
  6667             rect.setRect(xpos, y + bmarg, he - 2*bmarg, he - 2*bmarg);
       
  6668             break;
       
  6669         case SC_ComboBoxEditField:
       
  6670             rect.setRect(x + margin, y + margin, wi - 2 * margin - int((he - 2*bmarg) * 0.84f), he - 2 * margin);
       
  6671             if (d->doubleControls) {
       
  6672                 if (comboBox->editable)
       
  6673                     rect.adjust(2, 0, 0, 0);
       
  6674                 else
       
  6675                     rect.adjust(4, 2, 0, -2);
       
  6676             } else if (!comboBox->editable) {
       
  6677                 rect.adjust(2, 1, 0, -1);
       
  6678             }
       
  6679             break;
       
  6680         case SC_ComboBoxFrame:
       
  6681             rect = comboBox->rect;
       
  6682             break;
       
  6683         default:
       
  6684         break;
       
  6685         }
       
  6686     }
       
  6687 #endif //QT_NO_COMBOBOX
       
  6688 #ifndef QT_NO_SPINBOX
       
  6689     case CC_SpinBox:
       
  6690         if (const QStyleOptionSpinBox *spinBox = qstyleoption_cast<const QStyleOptionSpinBox *>(option)) {
       
  6691             QSize bs;
       
  6692             int fw = spinBox->frame ? proxy()->pixelMetric(PM_SpinBoxFrameWidth, spinBox, widget) : 0;
       
  6693             bs.setHeight(qMax(d->doubleControls ? 28 : 14, (spinBox->rect.height())));
       
  6694             // 1.6 -approximate golden mean
       
  6695             bs.setWidth(qMax(d->doubleControls ? 28 : 14, qMin((bs.height()*7/8), (spinBox->rect.width() / 8))));
       
  6696             bs = bs.expandedTo(QApplication::globalStrut());
       
  6697             int x, lx, rx;
       
  6698             x = spinBox->rect.width() - bs.width()*2;
       
  6699             lx = fw;
       
  6700             rx = x - fw;
       
  6701             switch (subControl) {
       
  6702             case SC_SpinBoxUp:
       
  6703                 rect = QRect(x + proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget), 0 , bs.width(), bs.height());
       
  6704                 break;
       
  6705             case SC_SpinBoxDown:
       
  6706                 rect = QRect(x + bs.width(), 0, bs.width(), bs.height());
       
  6707                 break;
       
  6708             case SC_SpinBoxEditField:
       
  6709                 if (spinBox->buttonSymbols == QAbstractSpinBox::NoButtons) {
       
  6710                     rect = QRect(lx, fw, spinBox->rect.width() - 2*fw - 2, spinBox->rect.height() - 2*fw);
       
  6711                 } else {
       
  6712                     rect = QRect(lx, fw, rx-2, spinBox->rect.height() - 2*fw);
       
  6713                 }
       
  6714                 break;
       
  6715             case SC_SpinBoxFrame:
       
  6716                 rect = spinBox->rect;
       
  6717             default:
       
  6718                 break;
       
  6719           }
       
  6720           rect = visualRect(spinBox->direction, spinBox->rect, rect);
       
  6721         }
       
  6722         break;
       
  6723 #endif // Qt_NO_SPINBOX
       
  6724 #ifndef QT_NO_GROUPBOX
       
  6725     case CC_GroupBox: {
       
  6726         if (const QStyleOptionGroupBox *groupBox = qstyleoption_cast<const QStyleOptionGroupBox *>(option)) {
       
  6727             switch (subControl) {
       
  6728             case SC_GroupBoxFrame:
       
  6729                 // FALL THROUGH
       
  6730             case SC_GroupBoxContents: {
       
  6731                 int topMargin = 0;
       
  6732                 int topHeight = 0;
       
  6733                 int bottomMargin = 0;
       
  6734                 int labelMargin = 2;
       
  6735 
       
  6736                 QRect frameRect = groupBox->rect;
       
  6737                 int verticalAlignment = styleHint(SH_GroupBox_TextLabelVerticalAlignment, groupBox, widget);
       
  6738                 if (groupBox->text.size()) {
       
  6739                     topHeight = groupBox->fontMetrics.height();
       
  6740                     if (verticalAlignment & Qt::AlignVCenter)
       
  6741                         topMargin = topHeight+5;
       
  6742                     else if (verticalAlignment & Qt::AlignTop)
       
  6743                         topMargin = -topHeight+5;
       
  6744                 }
       
  6745                 if (subControl == SC_GroupBoxFrame) {
       
  6746                     frameRect.setTop(topMargin);
       
  6747                     frameRect.setBottom(frameRect.height() + bottomMargin);
       
  6748                     rect = frameRect;
       
  6749                     break;
       
  6750                 }
       
  6751                 int frameWidth = 0;
       
  6752                 if (groupBox->text.size()) {
       
  6753                     frameWidth = proxy()->pixelMetric(PM_DefaultFrameWidth, groupBox, widget);
       
  6754                     rect = frameRect.adjusted(frameWidth, frameWidth + topHeight + labelMargin, -frameWidth, -frameWidth);
       
  6755                 }
       
  6756                 else {
       
  6757                    rect = groupBox->rect;
       
  6758                 }
       
  6759                 break;
       
  6760             }
       
  6761             case SC_GroupBoxCheckBox:
       
  6762                 // FALL THROUGH
       
  6763             case SC_GroupBoxLabel: {
       
  6764                 QFontMetrics fontMetrics = groupBox->fontMetrics;
       
  6765                 int h = fontMetrics.height();
       
  6766                 int textWidth = fontMetrics.size(Qt::TextShowMnemonic, groupBox->text + QLatin1Char(' ')).width();
       
  6767                 int margX = (groupBox->features & QStyleOptionFrameV2::Flat) ? 0 : 2;
       
  6768                 int margY = (groupBox->features & QStyleOptionFrameV2::Flat) ? 0 : 2;
       
  6769                 rect = groupBox->rect.adjusted(margX, margY, -margX, 0);
       
  6770                 if (groupBox->text.size())
       
  6771                     rect.setHeight(h);
       
  6772                 else
       
  6773                   rect.setHeight(0);
       
  6774                 int indicatorWidth = proxy()->pixelMetric(PM_IndicatorWidth, option, widget);
       
  6775                 int indicatorSpace = proxy()->pixelMetric(PM_CheckBoxLabelSpacing, option, widget) - 1;
       
  6776                 bool hasCheckBox = groupBox->subControls & QStyle::SC_GroupBoxCheckBox;
       
  6777                 int checkBoxSize = hasCheckBox ? (indicatorWidth + indicatorSpace) : 0;
       
  6778 
       
  6779                 // Adjusted rect for label + indicatorWidth + indicatorSpace
       
  6780                 QRect totalRect = alignedRect(groupBox->direction, groupBox->textAlignment,
       
  6781                                               QSize(textWidth + checkBoxSize, h), rect);
       
  6782 
       
  6783                 // Adjust totalRect if checkbox is set
       
  6784                 if (hasCheckBox) {
       
  6785                     bool ltr = groupBox->direction == Qt::LeftToRight;
       
  6786                     int left = 2;
       
  6787                     // Adjust for check box
       
  6788                     if (subControl == SC_GroupBoxCheckBox) {
       
  6789                         int indicatorHeight = proxy()->pixelMetric(PM_IndicatorHeight, option, widget);
       
  6790                         left = ltr ? totalRect.left() : (totalRect.right() - indicatorWidth);
       
  6791                         int top = totalRect.top() + (fontMetrics.height() - indicatorHeight) / 2;
       
  6792                         totalRect.setRect(left, top, indicatorWidth, indicatorHeight);
       
  6793                     // Adjust for label
       
  6794                     } else {
       
  6795                         left = ltr ? (totalRect.left() + checkBoxSize - 2) : totalRect.left();
       
  6796                         totalRect.setRect(left, totalRect.top(),
       
  6797                                           totalRect.width() - checkBoxSize, totalRect.height());
       
  6798                     }
       
  6799                 }
       
  6800                   if ((subControl== SC_GroupBoxLabel))
       
  6801                       totalRect.adjust(-2,0,6,0);
       
  6802                   rect = totalRect;
       
  6803                 break;
       
  6804             }
       
  6805             default:
       
  6806                 break;
       
  6807             }
       
  6808         }
       
  6809         break;
       
  6810     }
       
  6811 #endif // QT_NO_GROUPBOX
       
  6812     default:
       
  6813         break;
       
  6814     }
       
  6815     return rect;
       
  6816 }
       
  6817 
       
  6818 QPalette QWindowsMobileStyle::standardPalette() const {
       
  6819     QPalette palette (Qt::black,QColor(198, 195, 198), QColor(222, 223, 222 ),
       
  6820                       QColor(132, 130, 132), QColor(198, 195, 198), Qt::black, Qt::white, Qt::white, QColor(198, 195, 198));
       
  6821     palette.setColor(QPalette::Window, QColor(206, 223, 239));
       
  6822     palette.setColor(QPalette::Link, QColor(8,77,123)); //Alternate TextColor for labels...
       
  6823     palette.setColor(QPalette::Base, Qt::white);
       
  6824     palette.setColor(QPalette::Button, QColor(206, 223, 239));
       
  6825     palette.setColor(QPalette::Highlight, QColor(49, 146, 214));
       
  6826     palette.setColor(QPalette::Light, Qt::white);
       
  6827     palette.setColor(QPalette::Text, Qt::black);
       
  6828     palette.setColor(QPalette::ButtonText, Qt::black);
       
  6829     palette.setColor(QPalette::Midlight, QColor(222, 223, 222 ));
       
  6830     palette.setColor(QPalette::Dark, QColor(132, 130, 132));
       
  6831     palette.setColor(QPalette::Mid, QColor(189, 190, 189));
       
  6832     palette.setColor(QPalette::Shadow, QColor(0, 0, 0));
       
  6833     palette.setColor(QPalette::BrightText, QColor(33, 162, 33)); //color for ItemView checked indicator (arrow)
       
  6834     return palette;
       
  6835 }
       
  6836 
       
  6837 
       
  6838 /*! \reimp */
       
  6839 void QWindowsMobileStyle::polish(QApplication *application) {
       
  6840     QWindowsStyle::polish(application);
       
  6841 }
       
  6842 
       
  6843 /*! \reimp */
       
  6844 void QWindowsMobileStyle::polish(QWidget *widget) {
       
  6845 
       
  6846 #ifndef QT_NO_TOOLBAR
       
  6847     if (QToolBar *toolBar = qobject_cast<QToolBar*>(widget)) {
       
  6848         QPalette pal = toolBar->palette();
       
  6849         pal.setColor(QPalette::Background, pal.button().color());
       
  6850         toolBar->setPalette(pal);
       
  6851     }
       
  6852     else
       
  6853 #endif //QT_NO_TOOLBAR
       
  6854 
       
  6855     QWindowsStyle::polish(widget);
       
  6856 }
       
  6857 
       
  6858 void QWindowsMobileStyle::unpolish(QWidget *widget)
       
  6859 {
       
  6860     QWindowsStyle::unpolish(widget);
       
  6861 }
       
  6862 
       
  6863 void QWindowsMobileStyle::unpolish(QApplication *app)
       
  6864 {
       
  6865     QWindowsStyle::unpolish(app);
       
  6866 }
       
  6867 
       
  6868 /*! \reimp */
       
  6869 void QWindowsMobileStyle::polish(QPalette &palette) {
       
  6870     QWindowsStyle::polish(palette);
       
  6871 }
       
  6872 
       
  6873 int QWindowsMobileStyle::pixelMetric(PixelMetric pm, const QStyleOption *opt, const QWidget *widget) const {
       
  6874 
       
  6875     QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
       
  6876     int ret;
       
  6877 
       
  6878     switch (pm) {
       
  6879     case PM_DefaultTopLevelMargin:
       
  6880         ret =0;
       
  6881         break;
       
  6882     case PM_DefaultLayoutSpacing:
       
  6883         d->doubleControls ? ret = 8 : ret = 4;
       
  6884         break;
       
  6885     case PM_HeaderMargin:
       
  6886         d->doubleControls ? ret = 2 : ret = 1;
       
  6887         break;
       
  6888     case PM_DefaultChildMargin:
       
  6889         d->doubleControls ? ret = 10 : ret = 5;
       
  6890         break;
       
  6891     case PM_ToolBarSeparatorExtent:
       
  6892         d->doubleControls ? ret = 6 : ret = 3;
       
  6893         break;
       
  6894     case PM_DefaultFrameWidth:
       
  6895         d->doubleControls ? ret = 2 : ret = 1;
       
  6896         break;
       
  6897     case PM_MenuVMargin:
       
  6898         ret = 1;
       
  6899         break;
       
  6900     case PM_MenuHMargin:
       
  6901         ret = 1;
       
  6902         break;
       
  6903     case PM_MenuButtonIndicator:
       
  6904         ret = d->doubleControls ? 24 : 14;
       
  6905         break;
       
  6906     case PM_ComboBoxFrameWidth:
       
  6907         d->doubleControls ? ret = 2 : ret = 1;
       
  6908         break;
       
  6909     case PM_SpinBoxFrameWidth:
       
  6910         d->doubleControls ? ret = 2 : ret = 1;
       
  6911         break;
       
  6912     case PM_ButtonDefaultIndicator:
       
  6913     case PM_ButtonShiftHorizontal:
       
  6914     case PM_ButtonShiftVertical:
       
  6915         d->doubleControls ? ret = 2 : ret = 1;
       
  6916         break;
       
  6917 #ifndef QT_NO_TABBAR
       
  6918    case PM_TabBarTabShiftHorizontal:
       
  6919         ret = 0;
       
  6920         break;
       
  6921     case PM_TabBarTabShiftVertical:
       
  6922         ret = 0;
       
  6923         break;
       
  6924 #endif
       
  6925     case PM_MaximumDragDistance:
       
  6926         ret = 60;
       
  6927         break;
       
  6928    case PM_TabBarTabVSpace:
       
  6929         ret = d->doubleControls ? 12 : 6;
       
  6930         break;
       
  6931    case PM_TabBarBaseHeight:
       
  6932        ret = 0;
       
  6933        break;
       
  6934       case PM_IndicatorWidth:
       
  6935           ret = d->doubleControls ? windowsMobileIndicatorSize * 2 : windowsMobileIndicatorSize;
       
  6936         break;
       
  6937     case PM_IndicatorHeight:
       
  6938         ret = d->doubleControls ? windowsMobileIndicatorSize * 2 : windowsMobileIndicatorSize;
       
  6939         break;
       
  6940     case PM_ExclusiveIndicatorWidth:
       
  6941         ret = d->doubleControls ? windowsMobileExclusiveIndicatorSize * 2 + 4: windowsMobileExclusiveIndicatorSize + 2;
       
  6942         break;
       
  6943     case PM_ExclusiveIndicatorHeight:
       
  6944         ret = d->doubleControls ? windowsMobileExclusiveIndicatorSize * 2 + 4: windowsMobileExclusiveIndicatorSize + 2;
       
  6945         break;
       
  6946 #ifndef QT_NO_SLIDER
       
  6947     case PM_SliderLength:
       
  6948         ret = d->doubleControls ? 16 : 8;
       
  6949         break;
       
  6950     case PM_FocusFrameHMargin:
       
  6951         ret = d->doubleControls ? 1 : 2;
       
  6952         break;
       
  6953     case PM_SliderThickness:
       
  6954         ret = d->doubleControls ? windowsMobileSliderThickness * 2: windowsMobileSliderThickness;
       
  6955         break;
       
  6956     case PM_TabBarScrollButtonWidth:
       
  6957         ret = d->doubleControls ? 14 * 2 : 18;
       
  6958         break;
       
  6959     case PM_CheckBoxLabelSpacing:
       
  6960     case PM_RadioButtonLabelSpacing:
       
  6961         ret = d->doubleControls ? 6 * 2 : 6;
       
  6962         break;
       
  6963         // Returns the number of pixels to use for the business part of the
       
  6964         // slider (i.e., the non-tickmark portion). The remaining space is shared
       
  6965         // equally between the tickmark regions.
       
  6966     case PM_SliderControlThickness:
       
  6967         if (const QStyleOptionSlider *sl = qstyleoption_cast<const QStyleOptionSlider *>(opt)) {
       
  6968             int space = (sl->orientation == Qt::Horizontal) ? sl->rect.height() : sl->rect.width();
       
  6969             int ticks = sl->tickPosition;
       
  6970             int n = 0;
       
  6971             if (ticks & QSlider::TicksAbove)
       
  6972                 ++n;
       
  6973             if (ticks & QSlider::TicksBelow)
       
  6974                 ++n;
       
  6975             if (!n) {
       
  6976                 ret = space;
       
  6977                 break;
       
  6978             }
       
  6979             int thick = 8;
       
  6980             if (ticks != QSlider::TicksBothSides && ticks != QSlider::NoTicks)
       
  6981                 thick += proxy()->pixelMetric(PM_SliderLength, sl, widget) / 4;
       
  6982 
       
  6983             space -= thick;
       
  6984             if (space > 0)
       
  6985                 thick += (space * 2) / (n + 2);
       
  6986             ret = thick;
       
  6987         } else {
       
  6988             ret = 0;
       
  6989         }
       
  6990         break;
       
  6991 #endif // QT_NO_SLIDER
       
  6992 #ifndef QT_NO_MENU
       
  6993     case PM_SmallIconSize:
       
  6994         d->doubleControls ? ret = windowsMobileIconSize * 2 : ret = windowsMobileIconSize;
       
  6995         break;
       
  6996     case PM_ButtonMargin:
       
  6997         d->doubleControls ? ret = 8 : ret = 4;
       
  6998         break;
       
  6999     case PM_LargeIconSize:
       
  7000         d->doubleControls ? ret = 64 : ret = 32;
       
  7001         break;
       
  7002     case PM_IconViewIconSize:
       
  7003         ret = proxy()->pixelMetric(PM_LargeIconSize, opt, widget);
       
  7004         break;
       
  7005     case PM_ToolBarIconSize:
       
  7006         d->doubleControls ? ret = 2 * windowsMobileIconSize : ret = windowsMobileIconSize;
       
  7007         break;
       
  7008     case PM_DockWidgetTitleMargin:
       
  7009         ret = 2;
       
  7010         break;
       
  7011 #if defined(Q_WS_WIN)
       
  7012 #else
       
  7013     case PM_DockWidgetFrameWidth:
       
  7014         ret = 4;
       
  7015         break;
       
  7016 #endif // Q_WS_WIN
       
  7017     break;
       
  7018 #endif // QT_NO_MENU
       
  7019 
       
  7020    case PM_TitleBarHeight:
       
  7021         d->doubleControls ? ret = 42 : ret = 21;
       
  7022         break;
       
  7023    case PM_ScrollBarSliderMin:
       
  7024 #ifdef Q_WS_WINCE_WM
       
  7025        if (d->wm65)
       
  7026 #else
       
  7027        if (false)
       
  7028 #endif
       
  7029        {
       
  7030            d->doubleControls ? ret = 68 : ret = 34;
       
  7031        } else {
       
  7032            d->doubleControls ? ret = 36 : ret = 18;
       
  7033        }
       
  7034         break;
       
  7035    case PM_ScrollBarExtent: {
       
  7036        
       
  7037        if (d->smartphone)
       
  7038            ret = 9;
       
  7039        else
       
  7040          d->doubleControls ? ret = 25 : ret = 13;
       
  7041 
       
  7042 #ifdef Q_WS_WINCE_WM
       
  7043        if (d->wm65)
       
  7044 #else
       
  7045        if (false)
       
  7046 #endif
       
  7047        {
       
  7048            d->doubleControls ? ret = 26 : ret = 13;
       
  7049            break;
       
  7050        }
       
  7051 
       
  7052 #ifndef QT_NO_SCROLLAREA
       
  7053        //Check if the scrollbar is part of an abstractItemView and set size according
       
  7054        if (widget)
       
  7055        if (QWidget *parent = widget->parentWidget())
       
  7056            if (qobject_cast<QAbstractScrollArea *>(parent->parentWidget()))
       
  7057                if (d->smartphone)
       
  7058                  ret = 8;
       
  7059                else
       
  7060                  d->doubleControls ? ret = 24 : ret = 12;
       
  7061 #endif
       
  7062        }
       
  7063        break;
       
  7064     case PM_SplitterWidth:
       
  7065         ret = qMax(4, QApplication::globalStrut().width());
       
  7066         break;
       
  7067 
       
  7068 #if defined(Q_WS_WIN)
       
  7069     case PM_MDIFrameWidth:
       
  7070         ret = 1;
       
  7071         break;
       
  7072 #endif
       
  7073     case PM_ToolBarExtensionExtent:
       
  7074         d->doubleControls ? ret = 32 : ret = 16;
       
  7075         break;
       
  7076     case PM_ToolBarItemMargin:
       
  7077         d->doubleControls ? ret = 2 : ret = 1;
       
  7078         break;
       
  7079     case PM_ToolBarItemSpacing:
       
  7080         d->doubleControls ? ret = 2 : ret = 1;
       
  7081         break;
       
  7082     case PM_ToolBarHandleExtent:
       
  7083         d->doubleControls ? ret = 16 : ret = 8;
       
  7084         break;
       
  7085     case PM_ButtonIconSize:
       
  7086         d->doubleControls ? ret = 32 : ret = 16;
       
  7087         break;
       
  7088     case PM_TextCursorWidth:
       
  7089         ret = 2;
       
  7090         break;
       
  7091     case PM_TabBar_ScrollButtonOverlap:
       
  7092         ret = 0;
       
  7093         break;
       
  7094     default:
       
  7095         ret = QWindowsStyle::pixelMetric(pm, opt, widget);
       
  7096         break;
       
  7097     }
       
  7098     return ret;
       
  7099 }
       
  7100 
       
  7101 int QWindowsMobileStyle::styleHint(StyleHint hint, const QStyleOption *opt, const QWidget *widget,
       
  7102                                    QStyleHintReturn *returnData) const {
       
  7103 
       
  7104     int ret;
       
  7105     switch (hint) {
       
  7106     case SH_Menu_MouseTracking:
       
  7107     case SH_ComboBox_ListMouseTracking:
       
  7108     case SH_EtchDisabledText:
       
  7109         ret = 0;
       
  7110         break;
       
  7111     case SH_DitherDisabledText:
       
  7112         ret = 0;
       
  7113         break;
       
  7114     case SH_ItemView_ShowDecorationSelected:
       
  7115         ret = 0;
       
  7116         break;
       
  7117 #ifndef QT_NO_TABWIDGET
       
  7118     case SH_TabWidget_DefaultTabPosition:
       
  7119         ret = QTabWidget::South;
       
  7120         break;
       
  7121 #endif
       
  7122     case SH_ToolBar_Movable:
       
  7123         ret = false;
       
  7124         break;
       
  7125     case SH_ScrollBar_ContextMenu:
       
  7126         ret = false;
       
  7127         break;
       
  7128     case SH_MenuBar_AltKeyNavigation:
       
  7129         ret = false;
       
  7130         break;
       
  7131     case SH_RequestSoftwareInputPanel:
       
  7132         ret = RSIP_OnMouseClick;
       
  7133         break;
       
  7134     default:
       
  7135           ret = QWindowsStyle::styleHint(hint, opt, widget, returnData);
       
  7136        break;
       
  7137     }
       
  7138     return ret;
       
  7139 }
       
  7140 
       
  7141 QPixmap QWindowsMobileStyle::standardPixmap(StandardPixmap sp, const QStyleOption *option,
       
  7142                                      const QWidget *widget) const {
       
  7143 
       
  7144     QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
       
  7145     switch (sp) {
       
  7146 #ifndef QT_NO_IMAGEFORMAT_XPM
       
  7147     case SP_ToolBarHorizontalExtensionButton: {
       
  7148         QPixmap pixmap = QCommonStyle::standardPixmap(sp, option, widget);
       
  7149         if (d->doubleControls)
       
  7150             return pixmap.scaledToHeight(pixmap.height() * 2);
       
  7151         else
       
  7152           return pixmap;
       
  7153      }
       
  7154      case SP_TitleBarMaxButton:
       
  7155      case SP_TitleBarCloseButton:
       
  7156      case SP_TitleBarNormalButton:
       
  7157      case SP_TitleBarMinButton: {
       
  7158          QImage image;
       
  7159          switch (sp) {
       
  7160             case SP_TitleBarMaxButton:
       
  7161                 image = d->imageMaximize;
       
  7162             break;
       
  7163             case SP_TitleBarCloseButton:
       
  7164                 image = d->imageClose;
       
  7165             break;
       
  7166             case SP_TitleBarNormalButton:
       
  7167                 image = d->imageNormalize;
       
  7168             break;
       
  7169             case SP_TitleBarMinButton:
       
  7170                 image = d->imageMinimize;
       
  7171             break;
       
  7172             default:
       
  7173             break;
       
  7174          }
       
  7175          if (option) {
       
  7176              image.setColor(0, option->palette.shadow().color().rgba());
       
  7177              image.setColor(1, option->palette.highlight().color().rgba());
       
  7178              image.setColor(2, option->palette.highlight().color().lighter(150).rgba());
       
  7179              image.setColor(3, option->palette.highlightedText().color().rgba());
       
  7180          }
       
  7181 
       
  7182          return QPixmap::fromImage(image);
       
  7183      }
       
  7184 
       
  7185 #endif
       
  7186     default:
       
  7187         return QWindowsStyle::standardPixmap(sp, option, widget);
       
  7188     }
       
  7189 }
       
  7190 
       
  7191 QPixmap QWindowsMobileStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap,
       
  7192                                                  const QStyleOption *option) const {
       
  7193 
       
  7194     switch (iconMode) {
       
  7195     case QIcon::Selected: {
       
  7196 #ifdef Q_WS_WINCE_WM
       
  7197         if (d_func()->wm65)
       
  7198             return pixmap;
       
  7199 #endif //Q_WS_WINCE_WM
       
  7200         QImage img = pixmap.toImage().convertToFormat(QImage::Format_ARGB32);
       
  7201         int imgh = img.height();
       
  7202         int imgw = img.width();
       
  7203         for (int y = 0; y < imgh; y += 2) {
       
  7204             for (int x = 0; x < imgw; x += 2) {
       
  7205                 QColor c = option->palette.highlight().color().rgb();
       
  7206                 c.setAlpha( qAlpha(img.pixel(x, y)));
       
  7207                 QRgb pixel = c.rgba();
       
  7208                 img.setPixel(x, y, pixel);
       
  7209             }
       
  7210         }
       
  7211         return QPixmap::fromImage(img);
       
  7212     }
       
  7213     default:
       
  7214     break;
       
  7215     }
       
  7216     return QWindowsStyle::generatedIconPixmap(iconMode, pixmap, option);
       
  7217 }
       
  7218 
       
  7219 
       
  7220 bool QWindowsMobileStyle::doubleControls() const {
       
  7221 
       
  7222     QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
       
  7223 
       
  7224     return d->doubleControls;
       
  7225 }
       
  7226 
       
  7227 void QWindowsMobileStyle::setDoubleControls(bool doubleControls) {
       
  7228 
       
  7229    QWindowsMobileStylePrivate *d = const_cast<QWindowsMobileStylePrivate*>(d_func());
       
  7230 
       
  7231    d->doubleControls = doubleControls;
       
  7232 }
       
  7233 
       
  7234 QT_END_NAMESPACE
       
  7235 
       
  7236 #endif // QT_NO_STYLE_WINDOWSMOBILE
       
  7237