[Libreoffice-commits] .: 148 commits - comphelper/inc comphelper/source cppcanvas/source i18npool/inc i18npool/source l10ntools/source padmin/Executable_spadmin.bin.mk padmin/Library_spa.mk svl/inc svl/source svtools/AllLangResTarget_svt.mk svtools/inc svtools/Library_svt.mk svtools/source toolkit/inc toolkit/source unotools/inc unotools/source vcl/AllLangResTarget_vcl.mk vcl/aqua vcl/inc vcl/Library_desktop_detector.mk vcl/Library_vcl.mk vcl/Library_vclplug_gen.mk vcl/Library_vclplug_gtk.mk vcl/Library_vclplug_kde4.mk vcl/Library_vclplug_kde.mk vcl/Library_vclplug_svp.mk vcl/Makefile vcl/Module_vcl.mk vcl/Package_afmhash.mk vcl/Package_inc.mk vcl/Package_osx.mk vcl/prj vcl/source vcl/StaticLibrary_vclmain.mk vcl/unx vcl/util vcl/vcl.macosx.component vcl/vcl.unx.component vcl/vcl.windows.component vcl/win vcl/WinResTarget_vcl.mk

Jan Holesovsky kendy at kemper.freedesktop.org
Fri May 27 12:19:56 PDT 2011


 comphelper/inc/comphelper/servicedecl.hxx                  |   31 
 comphelper/inc/comphelper/storagehelper.hxx                |    6 
 comphelper/source/misc/storagehelper.cxx                   |   39 
 cppcanvas/source/mtfrenderer/implrenderer.cxx              |  373 -
 cppcanvas/source/mtfrenderer/makefile.mk                   |    3 
 cppcanvas/source/mtfrenderer/rendergraphicaction.cxx       |  201 
 cppcanvas/source/mtfrenderer/rendergraphicaction.hxx       |   77 
 cppcanvas/source/mtfrenderer/transparencygroupaction.cxx   |    1 
 i18npool/inc/i18npool/lang.h                               |   12 
 i18npool/source/isolang/isolang.cxx                        |    9 
 i18npool/source/isolang/langid.pl                          |    4 
 i18npool/source/localedata/data/localedata_others.map      |   17 
 i18npool/source/localedata/data/makefile.mk                |    1 
 i18npool/source/localedata/data/pt_AO.xml                  |  373 +
 i18npool/source/localedata/localedata.cxx                  |    3 
 i18npool/source/transliteration/transliterationImpl.cxx    |   15 
 l10ntools/source/directory.cxx                             |   41 
 padmin/Executable_spadmin.bin.mk                           |    1 
 padmin/Library_spa.mk                                      |    1 
 svl/inc/svl/nfkeytab.hxx                                   |   14 
 svl/inc/svl/undo.hxx                                       |    1 
 svl/source/items/cenumitm.cxx                              |    4 
 svl/source/items/visitem.cxx                               |    4 
 svl/source/numbers/zforlist.cxx                            |   14 
 svl/source/numbers/zformat.cxx                             |   20 
 svl/source/numbers/zforscan.cxx                            |   26 
 svl/source/numbers/zforscan.hxx                            |    2 
 svtools/AllLangResTarget_svt.mk                            |    2 
 svtools/Library_svt.mk                                     |   46 
 svtools/inc/svtools/filter.hxx                             |   52 
 svtools/inc/svtools/grfmgr.hxx                             |   34 
 svtools/source/filter.vcl/filter/FilterConfigCache.cxx     |  597 -
 svtools/source/filter.vcl/filter/FilterConfigCache.hxx     |  147 
 svtools/source/filter.vcl/filter/FilterConfigItem.cxx      |  625 -
 svtools/source/filter.vcl/filter/SvFilterOptionsDialog.cxx |  272 
 svtools/source/filter.vcl/filter/SvFilterOptionsDialog.hxx |  107 
 svtools/source/filter.vcl/filter/exportdialog.cxx          | 1515 ----
 svtools/source/filter.vcl/filter/exportdialog.hrc          |   99 
 svtools/source/filter.vcl/filter/exportdialog.hxx          |  218 
 svtools/source/filter.vcl/filter/exportdialog.src          |  529 -
 svtools/source/filter.vcl/filter/filter.cxx                | 2190 ------
 svtools/source/filter.vcl/filter/filter2.cxx               | 1338 ---
 svtools/source/filter.vcl/filter/sgf.ini                   |  118 
 svtools/source/filter.vcl/filter/sgfbram.cxx               |  617 -
 svtools/source/filter.vcl/filter/sgvmain.cxx               | 1074 ---
 svtools/source/filter.vcl/filter/sgvspln.cxx               |  870 --
 svtools/source/filter.vcl/filter/sgvtext.cxx               | 1332 ---
 svtools/source/filter.vcl/igif/decode.cxx                  |  218 
 svtools/source/filter.vcl/igif/decode.hxx                  |   69 
 svtools/source/filter.vcl/igif/gifread.cxx                 |  861 --
 svtools/source/filter.vcl/ixbm/xbmread.cxx                 |  401 -
 svtools/source/filter.vcl/ixpm/rgbtable.hxx                |  698 -
 svtools/source/filter.vcl/ixpm/xpmread.cxx                 |  701 -
 svtools/source/filter.vcl/jpeg/jpeg.cxx                    |  780 --
 svtools/source/filter.vcl/jpeg/jpeg.h                      |   73 
 svtools/source/filter.vcl/jpeg/jpegc.c                     |  287 
 svtools/source/filter.vcl/wmf/emfwr.cxx                    | 1417 ----
 svtools/source/filter.vcl/wmf/emfwr.hxx                    |  103 
 svtools/source/filter.vcl/wmf/enhwmf.cxx                   | 1533 ----
 svtools/source/filter.vcl/wmf/winmtf.cxx                   | 2263 ------
 svtools/source/filter.vcl/wmf/winmtf.hxx                   |  801 --
 svtools/source/filter.vcl/wmf/winwmf.cxx                   | 1441 ----
 svtools/source/filter.vcl/wmf/wmf.cxx                      |  117 
 svtools/source/filter.vcl/wmf/wmfwr.cxx                    | 2063 -----
 svtools/source/filter.vcl/wmf/wmfwr.hxx                    |  231 
 svtools/source/filter/FilterConfigCache.cxx                |  598 +
 svtools/source/filter/FilterConfigCache.hxx                |  147 
 svtools/source/filter/FilterConfigItem.cxx                 |  625 +
 svtools/source/filter/SvFilterOptionsDialog.cxx            |  272 
 svtools/source/filter/SvFilterOptionsDialog.hxx            |  107 
 svtools/source/filter/exportdialog.cxx                     | 1515 ++++
 svtools/source/filter/exportdialog.hrc                     |   99 
 svtools/source/filter/exportdialog.hxx                     |  218 
 svtools/source/filter/exportdialog.src                     |  529 +
 svtools/source/filter/filter.cxx                           | 2252 ++++++
 svtools/source/filter/filter2.cxx                          | 1355 +++
 svtools/source/filter/igif/decode.cxx                      |  218 
 svtools/source/filter/igif/decode.hxx                      |   69 
 svtools/source/filter/igif/gifread.cxx                     |  861 ++
 svtools/source/filter/ixbm/xbmread.cxx                     |  401 +
 svtools/source/filter/ixpm/rgbtable.hxx                    |  698 +
 svtools/source/filter/ixpm/xpmread.cxx                     |  701 +
 svtools/source/filter/jpeg/jpeg.cxx                        |  780 ++
 svtools/source/filter/jpeg/jpeg.h                          |   73 
 svtools/source/filter/jpeg/jpegc.c                         |  287 
 svtools/source/filter/sgf.ini                              |  118 
 svtools/source/filter/sgfbram.cxx                          |  617 +
 svtools/source/filter/sgvmain.cxx                          | 1074 +++
 svtools/source/filter/sgvspln.cxx                          |  870 ++
 svtools/source/filter/sgvtext.cxx                          | 1332 +++
 svtools/source/filter/wmf/emfwr.cxx                        | 1438 ++++
 svtools/source/filter/wmf/emfwr.hxx                        |  103 
 svtools/source/filter/wmf/enhwmf.cxx                       | 1533 ++++
 svtools/source/filter/wmf/winmtf.cxx                       | 2263 ++++++
 svtools/source/filter/wmf/winmtf.hxx                       |  800 ++
 svtools/source/filter/wmf/winwmf.cxx                       | 1441 ++++
 svtools/source/filter/wmf/wmf.cxx                          |  117 
 svtools/source/filter/wmf/wmfwr.cxx                        | 2091 +++++
 svtools/source/filter/wmf/wmfwr.hxx                        |  231 
 svtools/source/graphic/descriptor.cxx                      |    1 
 svtools/source/graphic/grfmgr.cxx                          |   17 
 svtools/source/graphic/grfmgr2.cxx                         |   90 
 svtools/source/misc/langtab.src                            |    9 
 svtools/source/uno/unoiface.cxx                            |    1 
 toolkit/inc/toolkit/helper/formpdfexport.hxx               |    8 
 toolkit/source/awt/vclxtoolkit.cxx                         |    9 
 toolkit/source/controls/controlmodelcontainerbase.cxx      |    4 
 toolkit/source/controls/dialogcontrol.cxx                  |    5 
 toolkit/source/controls/unocontrol.cxx                     |   18 
 toolkit/source/helper/formpdfexport.cxx                    |   23 
 toolkit/source/helper/unowrapper.cxx                       |   10 
 unotools/inc/unotools/saveopt.hxx                          |   10 
 unotools/source/config/saveopt.cxx                         |  100 
 unotools/source/misc/fontcvt.cxx                           |    2 
 vcl/AllLangResTarget_vcl.mk                                |   54 
 vcl/Library_desktop_detector.mk                            |   82 
 vcl/Library_vcl.mk                                         |  510 +
 vcl/Library_vclplug_gen.mk                                 |  203 
 vcl/Library_vclplug_gtk.mk                                 |  125 
 vcl/Library_vclplug_kde.mk                                 |   90 
 vcl/Library_vclplug_kde4.mk                                |   96 
 vcl/Library_vclplug_svp.mk                                 |   96 
 vcl/Makefile                                               |   38 
 vcl/Module_vcl.mk                                          |   75 
 vcl/Package_afmhash.mk                                     |   29 
 vcl/Package_inc.mk                                         |  168 
 vcl/Package_osx.mk                                         |   35 
 vcl/StaticLibrary_vclmain.mk                               |   61 
 vcl/WinResTarget_vcl.mk                                    |  123 
 vcl/aqua/inc/aqua11yfactory.h                              |   50 
 vcl/aqua/inc/aqua11yfocustracker.hxx                       |  109 
 vcl/aqua/inc/aqua11ylistener.hxx                           |   67 
 vcl/aqua/inc/aqua11ywrapper.h                              |  122 
 vcl/aqua/inc/aquaprintview.h                               |   70 
 vcl/aqua/inc/aquavclevents.hxx                             |   99 
 vcl/aqua/inc/aquavcltypes.h                                |   39 
 vcl/aqua/inc/keyboardfocuslistener.hxx                     |   47 
 vcl/aqua/inc/salatsuifontutils.hxx                         |   65 
 vcl/aqua/inc/salbmp.h                                      |  113 
 vcl/aqua/inc/salcolorutils.hxx                             |   55 
 vcl/aqua/inc/salconst.h                                    |   71 
 vcl/aqua/inc/saldata.hxx                                   |  141 
 vcl/aqua/inc/salfontutils.hxx                              |   68 
 vcl/aqua/inc/salframe.h                                    |  226 
 vcl/aqua/inc/salframeview.h                                |  217 
 vcl/aqua/inc/salgdi.h                                      |  419 -
 vcl/aqua/inc/salinst.h                                     |  207 
 vcl/aqua/inc/salmathutils.hxx                              |   90 
 vcl/aqua/inc/salmenu.h                                     |  124 
 vcl/aqua/inc/salnativewidgets.h                            |   74 
 vcl/aqua/inc/salnsmenu.h                                   |   71 
 vcl/aqua/inc/salnstimer.h                                  |   43 
 vcl/aqua/inc/salobj.h                                      |   90 
 vcl/aqua/inc/salprn.h                                      |  174 
 vcl/aqua/inc/salsys.h                                      |   68 
 vcl/aqua/inc/saltimer.h                                    |   57 
 vcl/aqua/inc/salvd.h                                       |   97 
 vcl/aqua/inc/svsys.h                                       |   38 
 vcl/aqua/inc/vclnsapp.h                                    |   73 
 vcl/aqua/source/a11y/aqua11yactionwrapper.h                |    4 
 vcl/aqua/source/a11y/aqua11yactionwrapper.mm               |    3 
 vcl/aqua/source/a11y/aqua11ycomponentwrapper.h             |    4 
 vcl/aqua/source/a11y/aqua11yfactory.mm                     |    8 
 vcl/aqua/source/a11y/aqua11yfocuslistener.cxx              |    9 
 vcl/aqua/source/a11y/aqua11yfocuslistener.hxx              |    4 
 vcl/aqua/source/a11y/aqua11yfocustracker.cxx               |   13 
 vcl/aqua/source/a11y/aqua11ylistener.cxx                   |   13 
 vcl/aqua/source/a11y/aqua11yrolehelper.h                   |    2 
 vcl/aqua/source/a11y/aqua11yrolehelper.mm                  |    4 
 vcl/aqua/source/a11y/aqua11yselectionwrapper.h             |    4 
 vcl/aqua/source/a11y/aqua11yselectionwrapper.mm            |    6 
 vcl/aqua/source/a11y/aqua11ytablewrapper.h                 |    2 
 vcl/aqua/source/a11y/aqua11ytablewrapper.mm                |    3 
 vcl/aqua/source/a11y/aqua11ytextattributeswrapper.h        |    3 
 vcl/aqua/source/a11y/aqua11ytextattributeswrapper.mm       |    4 
 vcl/aqua/source/a11y/aqua11ytextwrapper.h                  |    4 
 vcl/aqua/source/a11y/aqua11ytextwrapper.mm                 |   22 
 vcl/aqua/source/a11y/aqua11yutil.mm                        |    3 
 vcl/aqua/source/a11y/aqua11yvaluewrapper.h                 |    6 
 vcl/aqua/source/a11y/aqua11ywrapper.mm                     |   23 
 vcl/aqua/source/a11y/aqua11ywrapperbutton.h                |    2 
 vcl/aqua/source/a11y/aqua11ywrapperbutton.mm               |    3 
 vcl/aqua/source/a11y/aqua11ywrappercheckbox.h              |    2 
 vcl/aqua/source/a11y/aqua11ywrappercheckbox.mm             |    3 
 vcl/aqua/source/a11y/aqua11ywrappercombobox.h              |    2 
 vcl/aqua/source/a11y/aqua11ywrappercombobox.mm             |    4 
 vcl/aqua/source/a11y/aqua11ywrappergroup.h                 |    2 
 vcl/aqua/source/a11y/aqua11ywrappergroup.mm                |    2 
 vcl/aqua/source/a11y/aqua11ywrapperlist.h                  |    2 
 vcl/aqua/source/a11y/aqua11ywrapperlist.mm                 |    2 
 vcl/aqua/source/a11y/aqua11ywrapperradiobutton.h           |    2 
 vcl/aqua/source/a11y/aqua11ywrapperradiobutton.mm          |    2 
 vcl/aqua/source/a11y/aqua11ywrapperradiogroup.h            |    2 
 vcl/aqua/source/a11y/aqua11ywrapperradiogroup.mm           |    2 
 vcl/aqua/source/a11y/aqua11ywrapperrow.h                   |    2 
 vcl/aqua/source/a11y/aqua11ywrapperrow.mm                  |    3 
 vcl/aqua/source/a11y/aqua11ywrapperscrollarea.h            |    2 
 vcl/aqua/source/a11y/aqua11ywrapperscrollarea.mm           |    3 
 vcl/aqua/source/a11y/aqua11ywrapperscrollbar.h             |    2 
 vcl/aqua/source/a11y/aqua11ywrapperscrollbar.mm            |    4 
 vcl/aqua/source/a11y/aqua11ywrappersplitter.h              |    2 
 vcl/aqua/source/a11y/aqua11ywrappersplitter.mm             |    2 
 vcl/aqua/source/a11y/aqua11ywrapperstatictext.h            |    2 
 vcl/aqua/source/a11y/aqua11ywrapperstatictext.mm           |    2 
 vcl/aqua/source/a11y/aqua11ywrappertabgroup.h              |    2 
 vcl/aqua/source/a11y/aqua11ywrappertabgroup.mm             |    2 
 vcl/aqua/source/a11y/aqua11ywrappertextarea.h              |    2 
 vcl/aqua/source/a11y/aqua11ywrappertextarea.mm             |    2 
 vcl/aqua/source/a11y/aqua11ywrappertoolbar.h               |    2 
 vcl/aqua/source/a11y/aqua11ywrappertoolbar.mm              |    2 
 vcl/aqua/source/a11y/documentfocuslistener.hxx             |    3 
 vcl/aqua/source/a11y/makefile.mk                           |   88 
 vcl/aqua/source/app/makefile.mk                            |   63 
 vcl/aqua/source/app/saldata.cxx                            |    7 
 vcl/aqua/source/app/salinst.cxx                            |   40 
 vcl/aqua/source/app/salnstimer.mm                          |   11 
 vcl/aqua/source/app/salsys.cxx                             |   13 
 vcl/aqua/source/app/saltimer.cxx                           |   10 
 vcl/aqua/source/app/vclnsapp.mm                            |   38 
 vcl/aqua/source/dtrans/DataFlavorMapping.cxx               |    2 
 vcl/aqua/source/dtrans/DragSource.cxx                      |   75 
 vcl/aqua/source/dtrans/DropTarget.cxx                      |   22 
 vcl/aqua/source/dtrans/aqua_clipboard.cxx                  |    4 
 vcl/aqua/source/dtrans/aqua_service.cxx                    |   90 
 vcl/aqua/source/dtrans/makefile.mk                         |   68 
 vcl/aqua/source/dtrans/service_entry.cxx                   |   11 
 vcl/aqua/source/dtrans/test_aquacb.cxx                     |  209 
 vcl/aqua/source/gdi/aquaprintaccessoryview.mm              |   13 
 vcl/aqua/source/gdi/aquaprintview.mm                       |    6 
 vcl/aqua/source/gdi/makefile.mk                            |   74 
 vcl/aqua/source/gdi/salatslayout.cxx                       |   16 
 vcl/aqua/source/gdi/salatsuifontutils.cxx                  |    7 
 vcl/aqua/source/gdi/salbmp.cxx                             |   19 
 vcl/aqua/source/gdi/salcolorutils.cxx                      |    3 
 vcl/aqua/source/gdi/salgdi.cxx                             |   73 
 vcl/aqua/source/gdi/salgdiutils.cxx                        |   12 
 vcl/aqua/source/gdi/salmathutils.cxx                       |    2 
 vcl/aqua/source/gdi/salnativewidgets.cxx                   |   24 
 vcl/aqua/source/gdi/salprn.cxx                             |   46 
 vcl/aqua/source/gdi/salvd.cxx                              |   16 
 vcl/aqua/source/res/makefile.mk                            |   53 
 vcl/aqua/source/window/makefile.mk                         |   63 
 vcl/aqua/source/window/salframe.cxx                        |   38 
 vcl/aqua/source/window/salframeview.mm                     |   92 
 vcl/aqua/source/window/salmenu.cxx                         |   34 
 vcl/aqua/source/window/salnsmenu.mm                        |   12 
 vcl/aqua/source/window/salobj.cxx                          |   12 
 vcl/inc/accel.h                                            |   62 
 vcl/inc/accmgr.hxx                                         |   69 
 vcl/inc/aqua/aqua11yfactory.h                              |   50 
 vcl/inc/aqua/aqua11yfocustracker.hxx                       |  109 
 vcl/inc/aqua/aqua11ylistener.hxx                           |   67 
 vcl/inc/aqua/aqua11ywrapper.h                              |  122 
 vcl/inc/aqua/aquaprintview.h                               |   70 
 vcl/inc/aqua/aquavclevents.hxx                             |   99 
 vcl/inc/aqua/aquavcltypes.h                                |   39 
 vcl/inc/aqua/keyboardfocuslistener.hxx                     |   47 
 vcl/inc/aqua/salatsuifontutils.hxx                         |   65 
 vcl/inc/aqua/salbmp.h                                      |  118 
 vcl/inc/aqua/salcolorutils.hxx                             |   55 
 vcl/inc/aqua/salconst.h                                    |   71 
 vcl/inc/aqua/saldata.hxx                                   |  141 
 vcl/inc/aqua/salfontutils.hxx                              |   68 
 vcl/inc/aqua/salframe.h                                    |  225 
 vcl/inc/aqua/salframeview.h                                |  217 
 vcl/inc/aqua/salgdi.h                                      |  419 +
 vcl/inc/aqua/salinst.h                                     |  207 
 vcl/inc/aqua/salmathutils.hxx                              |   90 
 vcl/inc/aqua/salmenu.h                                     |  123 
 vcl/inc/aqua/salnativewidgets.h                            |   74 
 vcl/inc/aqua/salnsmenu.h                                   |   71 
 vcl/inc/aqua/salnstimer.h                                  |   43 
 vcl/inc/aqua/salobj.h                                      |   89 
 vcl/inc/aqua/salprn.h                                      |  174 
 vcl/inc/aqua/salsys.h                                      |   63 
 vcl/inc/aqua/saltimer.h                                    |   57 
 vcl/inc/aqua/salvd.h                                       |   96 
 vcl/inc/aqua/svsys.h                                       |   38 
 vcl/inc/aqua/vclnsapp.h                                    |   73 
 vcl/inc/bmpfast.hxx                                        |   54 
 vcl/inc/brdwin.hxx                                         |  356 +
 vcl/inc/canvasbitmap.hxx                                   |  132 
 vcl/inc/controldata.hxx                                    |   65 
 vcl/inc/dbggui.hxx                                         |   77 
 vcl/inc/dndevdis.hxx                                       |  116 
 vcl/inc/dndlcon.hxx                                        |  127 
 vcl/inc/fontcache.hxx                                      |  102 
 vcl/inc/fontsubset.hxx                                     |  101 
 vcl/inc/glyphcache.hxx                                     |  391 +
 vcl/inc/graphite_features.hxx                              |   78 
 vcl/inc/graphite_layout.hxx                                |  175 
 vcl/inc/graphite_serverfont.hxx                            |  108 
 vcl/inc/helpwin.hxx                                        |   96 
 vcl/inc/idlemgr.hxx                                        |   65 
 vcl/inc/ilstbox.hxx                                        |  659 +
 vcl/inc/image.h                                            |  185 
 vcl/inc/impbmp.hxx                                         |  111 
 vcl/inc/impfont.hxx                                        |  242 
 vcl/inc/impgraph.hxx                                       |  185 
 vcl/inc/impimagetree.hxx                                   |  107 
 vcl/inc/impoct.hxx                                         |  179 
 vcl/inc/jobset.h                                           |   82 
 vcl/inc/makefile.mk                                        |   49 
 vcl/inc/outdata.hxx                                        |   52 
 vcl/inc/outdev.h                                           |  267 
 vcl/inc/outfont.hxx                                        |  407 +
 vcl/inc/print.h                                            |   86 
 vcl/inc/printdlg.hxx                                       |  337 
 vcl/inc/printergfx.hxx                                     |  444 +
 vcl/inc/printerjob.hxx                                     |  151 
 vcl/inc/region.h                                           |  137 
 vcl/inc/salbmp.hxx                                         |   71 
 vcl/inc/saldatabasic.hxx                                   |   64 
 vcl/inc/salframe.hxx                                       |  303 
 vcl/inc/salgdi.hxx                                         |  491 +
 vcl/inc/salgeom.hxx                                        |   54 
 vcl/inc/salimestatus.hxx                                   |   48 
 vcl/inc/salinst.hxx                                        |  207 
 vcl/inc/sallayout.hxx                                      |  393 +
 vcl/inc/salmenu.hxx                                        |  103 
 vcl/inc/salobj.hxx                                         |   97 
 vcl/inc/salprn.hxx                                         |  140 
 vcl/inc/salptype.hxx                                       |   63 
 vcl/inc/salsession.hxx                                     |  120 
 vcl/inc/salsys.hxx                                         |  149 
 vcl/inc/saltimer.hxx                                       |   69 
 vcl/inc/salvd.hxx                                          |   61 
 vcl/inc/salwtype.hxx                                       |  349 
 vcl/inc/sft.hxx                                            |   10 
 vcl/inc/subedit.hxx                                        |   51 
 vcl/inc/svdata.hxx                                         |  466 +
 vcl/inc/svids.hrc                                          |  254 
 vcl/inc/svsys.h                                            |   42 
 vcl/inc/textlayout.hxx                                     |  139 
 vcl/inc/toolbox.h                                          |  185 
 vcl/inc/unx/XIM.h                                          |  140 
 vcl/inc/unx/Xproto.h                                       |   49 
 vcl/inc/unx/cdeint.hxx                                     |   47 
 vcl/inc/unx/dtint.hxx                                      |   74 
 vcl/inc/unx/gtk/atkbridge.hxx                              |   39 
 vcl/inc/unx/gtk/gtkdata.hxx                                |   95 
 vcl/inc/unx/gtk/gtkframe.hxx                               |  418 +
 vcl/inc/unx/gtk/gtkgdi.hxx                                 |  188 
 vcl/inc/unx/gtk/gtkinst.hxx                                |  108 
 vcl/inc/unx/gtk/gtkobject.hxx                              |   75 
 vcl/inc/unx/i18n_cb.hxx                                    |   98 
 vcl/inc/unx/i18n_ic.hxx                                    |  102 
 vcl/inc/unx/i18n_im.hxx                                    |   67 
 vcl/inc/unx/i18n_keysym.hxx                                |   73 
 vcl/inc/unx/i18n_status.hxx                                |  126 
 vcl/inc/unx/i18n_xkb.hxx                                   |  117 
 vcl/inc/unx/kde/kdedata.hxx                                |  113 
 vcl/inc/unx/pspgraphics.h                                  |  191 
 vcl/inc/unx/salbmp.h                                       |  244 
 vcl/inc/unx/saldata.hxx                                    |  132 
 vcl/inc/unx/saldisp.hxx                                    |  553 +
 vcl/inc/unx/salframe.h                                     |  305 
 vcl/inc/unx/salgdi.h                                       |  404 +
 vcl/inc/unx/salinst.h                                      |  129 
 vcl/inc/unx/salmenu.h                                      |   67 
 vcl/inc/unx/salobj.h                                       |  108 
 vcl/inc/unx/salprn.h                                       |  111 
 vcl/inc/unx/salstd.hxx                                     |   79 
 vcl/inc/unx/salsys.h                                       |   66 
 vcl/inc/unx/saltimer.h                                     |   47 
 vcl/inc/unx/salunx.h                                       |  131 
 vcl/inc/unx/salvd.h                                        |  103 
 vcl/inc/unx/sm.hxx                                         |   95 
 vcl/inc/unx/soicon.hxx                                     |   40 
 vcl/inc/unx/strhelper.hxx                                  |   44 
 vcl/inc/unx/svsys.h                                        |   35 
 vcl/inc/unx/svunx.h                                        |   37 
 vcl/inc/unx/wmadaptor.hxx                                  |  355 +
 vcl/inc/unx/x11_cursors/airbrush_curs.h                    |   43 
 vcl/inc/unx/x11_cursors/airbrush_mask.h                    |   43 
 vcl/inc/unx/x11_cursors/ase_curs.h                         |   43 
 vcl/inc/unx/x11_cursors/ase_mask.h                         |   43 
 vcl/inc/unx/x11_cursors/asn_curs.h                         |   43 
 vcl/inc/unx/x11_cursors/asn_mask.h                         |   43 
 vcl/inc/unx/x11_cursors/asne_curs.h                        |   43 
 vcl/inc/unx/x11_cursors/asne_mask.h                        |   43 
 vcl/inc/unx/x11_cursors/asns_curs.h                        |   43 
 vcl/inc/unx/x11_cursors/asns_mask.h                        |   43 
 vcl/inc/unx/x11_cursors/asnswe_curs.h                      |   43 
 vcl/inc/unx/x11_cursors/asnswe_mask.h                      |   43 
 vcl/inc/unx/x11_cursors/asnw_curs.h                        |   43 
 vcl/inc/unx/x11_cursors/asnw_mask.h                        |   43 
 vcl/inc/unx/x11_cursors/ass_curs.h                         |   43 
 vcl/inc/unx/x11_cursors/ass_mask.h                         |   43 
 vcl/inc/unx/x11_cursors/asse_curs.h                        |   43 
 vcl/inc/unx/x11_cursors/asse_mask.h                        |   43 
 vcl/inc/unx/x11_cursors/assw_curs.h                        |   43 
 vcl/inc/unx/x11_cursors/assw_mask.h                        |   43 
 vcl/inc/unx/x11_cursors/asw_curs.h                         |   43 
 vcl/inc/unx/x11_cursors/asw_mask.h                         |   43 
 vcl/inc/unx/x11_cursors/aswe_curs.h                        |   43 
 vcl/inc/unx/x11_cursors/aswe_mask.h                        |   43 
 vcl/inc/unx/x11_cursors/chain_curs.h                       |   43 
 vcl/inc/unx/x11_cursors/chain_mask.h                       |   41 
 vcl/inc/unx/x11_cursors/chainnot_curs.h                    |   43 
 vcl/inc/unx/x11_cursors/chainnot_mask.h                    |   41 
 vcl/inc/unx/x11_cursors/chart_curs.h                       |   43 
 vcl/inc/unx/x11_cursors/chart_mask.h                       |   43 
 vcl/inc/unx/x11_cursors/copydata_curs.h                    |   45 
 vcl/inc/unx/x11_cursors/copydata_mask.h                    |   45 
 vcl/inc/unx/x11_cursors/copydlnk_curs.h                    |   45 
 vcl/inc/unx/x11_cursors/copydlnk_mask.h                    |   45 
 vcl/inc/unx/x11_cursors/copyfile_curs.h                    |   45 
 vcl/inc/unx/x11_cursors/copyfile_mask.h                    |   45 
 vcl/inc/unx/x11_cursors/copyfiles_curs.h                   |   45 
 vcl/inc/unx/x11_cursors/copyfiles_mask.h                   |   45 
 vcl/inc/unx/x11_cursors/copyflnk_curs.h                    |   45 
 vcl/inc/unx/x11_cursors/copyflnk_mask.h                    |   45 
 vcl/inc/unx/x11_cursors/crook_curs.h                       |   45 
 vcl/inc/unx/x11_cursors/crook_mask.h                       |   43 
 vcl/inc/unx/x11_cursors/crop_curs.h                        |   45 
 vcl/inc/unx/x11_cursors/crop_mask.h                        |   43 
 vcl/inc/unx/x11_cursors/detective_curs.h                   |   43 
 vcl/inc/unx/x11_cursors/detective_mask.h                   |   43 
 vcl/inc/unx/x11_cursors/drawarc_curs.h                     |   45 
 vcl/inc/unx/x11_cursors/drawarc_mask.h                     |   43 
 vcl/inc/unx/x11_cursors/drawbezier_curs.h                  |   45 
 vcl/inc/unx/x11_cursors/drawbezier_mask.h                  |   43 
 vcl/inc/unx/x11_cursors/drawcaption_curs.h                 |   45 
 vcl/inc/unx/x11_cursors/drawcaption_mask.h                 |   43 
 vcl/inc/unx/x11_cursors/drawcirclecut_curs.h               |   45 
 vcl/inc/unx/x11_cursors/drawcirclecut_mask.h               |   43 
 vcl/inc/unx/x11_cursors/drawconnect_curs.h                 |   45 
 vcl/inc/unx/x11_cursors/drawconnect_mask.h                 |   43 
 vcl/inc/unx/x11_cursors/drawcrook_curs.h                   |   45 
 vcl/inc/unx/x11_cursors/drawcrook_mask.h                   |   43 
 vcl/inc/unx/x11_cursors/drawcrop_curs.h                    |   45 
 vcl/inc/unx/x11_cursors/drawcrop_mask.h                    |   43 
 vcl/inc/unx/x11_cursors/drawellipse_curs.h                 |   45 
 vcl/inc/unx/x11_cursors/drawellipse_mask.h                 |   43 
 vcl/inc/unx/x11_cursors/drawfreehand_curs.h                |   45 
 vcl/inc/unx/x11_cursors/drawfreehand_mask.h                |   43 
 vcl/inc/unx/x11_cursors/drawline_curs.h                    |   45 
 vcl/inc/unx/x11_cursors/drawline_mask.h                    |   43 
 vcl/inc/unx/x11_cursors/drawmirror_curs.h                  |   45 
 vcl/inc/unx/x11_cursors/drawmirror_mask.h                  |   43 
 vcl/inc/unx/x11_cursors/drawpie_curs.h                     |   45 
 vcl/inc/unx/x11_cursors/drawpie_mask.h                     |   43 
 vcl/inc/unx/x11_cursors/drawpolygon_curs.h                 |   45 
 vcl/inc/unx/x11_cursors/drawpolygon_mask.h                 |   43 
 vcl/inc/unx/x11_cursors/drawrect_curs.h                    |   45 
 vcl/inc/unx/x11_cursors/drawrect_mask.h                    |   43 
 vcl/inc/unx/x11_cursors/drawtext_curs.h                    |   45 
 vcl/inc/unx/x11_cursors/drawtext_mask.h                    |   43 
 vcl/inc/unx/x11_cursors/fill_curs.h                        |   43 
 vcl/inc/unx/x11_cursors/fill_mask.h                        |   43 
 vcl/inc/unx/x11_cursors/hshear_curs.h                      |   45 
 vcl/inc/unx/x11_cursors/hshear_mask.h                      |   43 
 vcl/inc/unx/x11_cursors/invert50.h                         |   68 
 vcl/inc/unx/x11_cursors/linkdata_curs.h                    |   45 
 vcl/inc/unx/x11_cursors/linkdata_mask.h                    |   45 
 vcl/inc/unx/x11_cursors/linkfile_curs.h                    |   45 
 vcl/inc/unx/x11_cursors/linkfile_mask.h                    |   45 
 vcl/inc/unx/x11_cursors/magnify_curs.h                     |   43 
 vcl/inc/unx/x11_cursors/magnify_mask.h                     |   43 
 vcl/inc/unx/x11_cursors/mirror_curs.h                      |   45 
 vcl/inc/unx/x11_cursors/mirror_mask.h                      |   43 
 vcl/inc/unx/x11_cursors/movebezierweight_curs.h            |   45 
 vcl/inc/unx/x11_cursors/movebezierweight_mask.h            |   43 
 vcl/inc/unx/x11_cursors/movedata_curs.h                    |   45 
 vcl/inc/unx/x11_cursors/movedata_mask.h                    |   45 
 vcl/inc/unx/x11_cursors/movedlnk_curs.h                    |   45 
 vcl/inc/unx/x11_cursors/movedlnk_mask.h                    |   45 
 vcl/inc/unx/x11_cursors/movefile_curs.h                    |   45 
 vcl/inc/unx/x11_cursors/movefile_mask.h                    |   45 
 vcl/inc/unx/x11_cursors/movefiles_curs.h                   |   45 
 vcl/inc/unx/x11_cursors/movefiles_mask.h                   |   45 
 vcl/inc/unx/x11_cursors/moveflnk_curs.h                    |   45 
 vcl/inc/unx/x11_cursors/moveflnk_mask.h                    |   45 
 vcl/inc/unx/x11_cursors/movepoint_curs.h                   |   45 
 vcl/inc/unx/x11_cursors/movepoint_mask.h                   |   43 
 vcl/inc/unx/x11_cursors/nodrop_curs.h                      |   45 
 vcl/inc/unx/x11_cursors/nodrop_mask.h                      |   45 
 vcl/inc/unx/x11_cursors/null_curs.h                        |   34 
 vcl/inc/unx/x11_cursors/null_mask.h                        |   32 
 vcl/inc/unx/x11_cursors/paintbrush_curs.h                  |   11 
 vcl/inc/unx/x11_cursors/paintbrush_mask.h                  |    9 
 vcl/inc/unx/x11_cursors/pivotcol_curs.h                    |   45 
 vcl/inc/unx/x11_cursors/pivotcol_mask.h                    |   45 
 vcl/inc/unx/x11_cursors/pivotdel_curs.h                    |   45 
 vcl/inc/unx/x11_cursors/pivotdel_mask.h                    |   45 
 vcl/inc/unx/x11_cursors/pivotfld_curs.h                    |   45 
 vcl/inc/unx/x11_cursors/pivotfld_mask.h                    |   45 
 vcl/inc/unx/x11_cursors/pivotrow_curs.h                    |   45 
 vcl/inc/unx/x11_cursors/pivotrow_mask.h                    |   45 
 vcl/inc/unx/x11_cursors/rotate_curs.h                      |   45 
 vcl/inc/unx/x11_cursors/rotate_mask.h                      |   43 
 vcl/inc/unx/x11_cursors/salcursors.h                       |  162 
 vcl/inc/unx/x11_cursors/tblsele_curs.h                     |   11 
 vcl/inc/unx/x11_cursors/tblsele_mask.h                     |    9 
 vcl/inc/unx/x11_cursors/tblsels_curs.h                     |   11 
 vcl/inc/unx/x11_cursors/tblsels_mask.h                     |    9 
 vcl/inc/unx/x11_cursors/tblselse_curs.h                    |   11 
 vcl/inc/unx/x11_cursors/tblselse_mask.h                    |    9 
 vcl/inc/unx/x11_cursors/tblselsw_curs.h                    |   11 
 vcl/inc/unx/x11_cursors/tblselsw_mask.h                    |    9 
 vcl/inc/unx/x11_cursors/tblselw_curs.h                     |   11 
 vcl/inc/unx/x11_cursors/tblselw_mask.h                     |    9 
 vcl/inc/unx/x11_cursors/timemove_curs.h                    |   43 
 vcl/inc/unx/x11_cursors/timemove_mask.h                    |   43 
 vcl/inc/unx/x11_cursors/timesize_curs.h                    |   43 
 vcl/inc/unx/x11_cursors/timesize_mask.h                    |   43 
 vcl/inc/unx/x11_cursors/vertcurs_curs.h                    |   11 
 vcl/inc/unx/x11_cursors/vertcurs_mask.h                    |   11 
 vcl/inc/unx/x11_cursors/vshear_curs.h                      |   45 
 vcl/inc/unx/x11_cursors/vshear_mask.h                      |   43 
 vcl/inc/vcl/accel.h                                        |   62 
 vcl/inc/vcl/accmgr.hxx                                     |   69 
 vcl/inc/vcl/bmpfast.hxx                                    |   54 
 vcl/inc/vcl/brdwin.hxx                                     |  356 -
 vcl/inc/vcl/canvasbitmap.hxx                               |  132 
 vcl/inc/vcl/controldata.hxx                                |   65 
 vcl/inc/vcl/cursor.hxx                                     |    2 
 vcl/inc/vcl/dbggui.hxx                                     |   77 
 vcl/inc/vcl/dndevdis.hxx                                   |  116 
 vcl/inc/vcl/dndlcon.hxx                                    |  127 
 vcl/inc/vcl/fontcache.hxx                                  |  102 
 vcl/inc/vcl/fontsubset.hxx                                 |   99 
 vcl/inc/vcl/gdimtf.hxx                                     |   13 
 vcl/inc/vcl/gfxlink.hxx                                    |    3 
 vcl/inc/vcl/glyphcache.hxx                                 |  391 -
 vcl/inc/vcl/graph.hxx                                      |   19 
 vcl/inc/vcl/graphite_features.hxx                          |   78 
 vcl/inc/vcl/graphite_layout.hxx                            |  175 
 vcl/inc/vcl/graphite_serverfont.hxx                        |  108 
 vcl/inc/vcl/helpwin.hxx                                    |   96 
 vcl/inc/vcl/idlemgr.hxx                                    |   65 
 vcl/inc/vcl/ilstbox.hxx                                    |  659 -
 vcl/inc/vcl/image.h                                        |  185 
 vcl/inc/vcl/impbmp.hxx                                     |  111 
 vcl/inc/vcl/impfont.hxx                                    |  242 
 vcl/inc/vcl/impgraph.hxx                                   |  179 
 vcl/inc/vcl/impimagetree.hxx                               |  107 
 vcl/inc/vcl/impoct.hxx                                     |  179 
 vcl/inc/vcl/jobdata.hxx                                    |    2 
 vcl/inc/vcl/jobset.h                                       |   82 
 vcl/inc/vcl/metaact.hxx                                    |   55 
 vcl/inc/vcl/outdata.hxx                                    |   52 
 vcl/inc/vcl/outdev.h                                       |  267 
 vcl/inc/vcl/outdev.hxx                                     |   31 
 vcl/inc/vcl/outfont.hxx                                    |  407 -
 vcl/inc/vcl/pdfextoutdevdata.hxx                           |   34 
 vcl/inc/vcl/pdfwriter.hxx                                  |   23 
 vcl/inc/vcl/polyscan.hxx                                   |  158 
 vcl/inc/vcl/ppdparser.hxx                                  |   10 
 vcl/inc/vcl/print.h                                        |   84 
 vcl/inc/vcl/printergfx.hxx                                 |  444 -
 vcl/inc/vcl/printerjob.hxx                                 |  151 
 vcl/inc/vcl/prndlg.hxx                                     |  337 
 vcl/inc/vcl/region.h                                       |  137 
 vcl/inc/vcl/rendergraphic.hxx                              |  124 
 vcl/inc/vcl/rendergraphicrasterizer.hxx                    |  111 
 vcl/inc/vcl/salbmp.hxx                                     |   71 
 vcl/inc/vcl/salctype.hxx                                   |    1 
 vcl/inc/vcl/saldatabasic.hxx                               |   62 
 vcl/inc/vcl/salframe.hxx                                   |  303 
 vcl/inc/vcl/salgdi.hxx                                     |  491 -
 vcl/inc/vcl/salgeom.hxx                                    |   54 
 vcl/inc/vcl/salimestatus.hxx                               |   48 
 vcl/inc/vcl/salinst.hxx                                    |  207 
 vcl/inc/vcl/sallayout.hxx                                  |  393 -
 vcl/inc/vcl/salmenu.hxx                                    |  103 
 vcl/inc/vcl/salobj.hxx                                     |   97 
 vcl/inc/vcl/salprn.hxx                                     |  140 
 vcl/inc/vcl/salptype.hxx                                   |   63 
 vcl/inc/vcl/salsession.hxx                                 |  120 
 vcl/inc/vcl/salsys.hxx                                     |  149 
 vcl/inc/vcl/saltimer.hxx                                   |   72 
 vcl/inc/vcl/salvd.hxx                                      |   61 
 vcl/inc/vcl/salwtype.hxx                                   |  349 
 vcl/inc/vcl/subedit.hxx                                    |   51 
 vcl/inc/vcl/svcompat.hxx                                   |   73 
 vcl/inc/vcl/svdata.hxx                                     |  460 -
 vcl/inc/vcl/svgread.hxx                                    |   83 
 vcl/inc/vcl/svids.hrc                                      |  254 
 vcl/inc/vcl/textlayout.hxx                                 |  139 
 vcl/inc/vcl/toolbox.h                                      |  185 
 vcl/inc/vcl/unobrok.hxx                                    |   42 
 vcl/inc/vcl/wall2.hxx                                      |   63 
 vcl/inc/vcl/window.h                                       |  406 -
 vcl/inc/vcl/xconnection.hxx                                |   76 
 vcl/inc/vclpluginapi.h                                     |   73 
 vcl/inc/wall2.hxx                                          |   63 
 vcl/inc/win/salbmp.h                                       |   93 
 vcl/inc/win/saldata.hxx                                    |  378 +
 vcl/inc/win/salframe.h                                     |  155 
 vcl/inc/win/salgdi.h                                       |  432 +
 vcl/inc/win/salids.hrc                                     |  120 
 vcl/inc/win/salinst.h                                      |  105 
 vcl/inc/win/salmenu.h                                      |   78 
 vcl/inc/win/salnativewidgets.h                             |   55 
 vcl/inc/win/salobj.h                                       |   73 
 vcl/inc/win/salprn.h                                       |  132 
 vcl/inc/win/salsys.h                                       |   94 
 vcl/inc/win/saltimer.h                                     |   47 
 vcl/inc/win/salvd.h                                        |   63 
 vcl/inc/win/svsys.h                                        |   39 
 vcl/inc/win/wincomp.hxx                                    |  264 
 vcl/inc/window.h                                           |  406 +
 vcl/inc/xconnection.hxx                                    |   76 
 vcl/prj/build.lst                                          |   55 
 vcl/prj/d.lst                                              |  158 
 vcl/prj/makefile.mk                                        |   40 
 vcl/source/app/dbggui.cxx                                  |   30 
 vcl/source/app/help.cxx                                    |   12 
 vcl/source/app/i18nhelp.cxx                                |   10 
 vcl/source/app/idlemgr.cxx                                 |    5 
 vcl/source/app/makefile.mk                                 |   71 
 vcl/source/app/salvtables.cxx                              |   20 
 vcl/source/app/session.cxx                                 |   13 
 vcl/source/app/settings.cxx                                |   12 
 vcl/source/app/sound.cxx                                   |   12 
 vcl/source/app/stdtext.cxx                                 |    4 
 vcl/source/app/svapp.cxx                                   |   49 
 vcl/source/app/svdata.cxx                                  |   28 
 vcl/source/app/svmain.cxx                                  |   79 
 vcl/source/app/timer.cxx                                   |   10 
 vcl/source/app/unohelp.cxx                                 |   18 
 vcl/source/app/vclevent.cxx                                |    3 
 vcl/source/components/dtranscomp.cxx                       |   13 
 vcl/source/components/factory.cxx                          |   15 
 vcl/source/components/fontident.cxx                        |   14 
 vcl/source/components/makefile.mk                          |   21 
 vcl/source/components/rasterizer_rsvg.cxx                  |  640 +
 vcl/source/control/button.cxx                              |   14 
 vcl/source/control/combobox.cxx                            |   11 
 vcl/source/control/ctrl.cxx                                |   11 
 vcl/source/control/edit.cxx                                |   11 
 vcl/source/control/field.cxx                               |    7 
 vcl/source/control/field2.cxx                              |    8 
 vcl/source/control/fixed.cxx                               |    8 
 vcl/source/control/group.cxx                               |    6 
 vcl/source/control/ilstbox.cxx                             |   13 
 vcl/source/control/longcurr.cxx                            |    2 
 vcl/source/control/lstbox.cxx                              |   22 
 vcl/source/control/makefile.mk                             |   73 
 vcl/source/control/scrbar.cxx                              |    3 
 vcl/source/control/spinfld.cxx                             |    6 
 vcl/source/control/tabctrl.cxx                             |    9 
 vcl/source/fontsubset/cff.cxx                              |    3 
 vcl/source/fontsubset/fontsubset.cxx                       |    5 
 vcl/source/fontsubset/makefile.mk                          |   51 
 vcl/source/gdi/bitmap.cxx                                  |   12 
 vcl/source/gdi/bitmap3.cxx                                 |    6 
 vcl/source/gdi/bitmapex.cxx                                |   13 
 vcl/source/gdi/bmpacc.cxx                                  |    5 
 vcl/source/gdi/bmpacc3.cxx                                 |    7 
 vcl/source/gdi/bmpfast.cxx                                 |    2 
 vcl/source/gdi/configsettings.cxx                          |    4 
 vcl/source/gdi/cvtgrf.cxx                                  |    6 
 vcl/source/gdi/font.cxx                                    |   15 
 vcl/source/gdi/gdimtf.cxx                                  |  781 +-
 vcl/source/gdi/gfxlink.cxx                                 |    1 
 vcl/source/gdi/graph.cxx                                   |   36 
 vcl/source/gdi/image.cxx                                   |    5 
 vcl/source/gdi/imagerepository.cxx                         |    3 
 vcl/source/gdi/impbmp.cxx                                  |   11 
 vcl/source/gdi/impgraph.cxx                                |   82 
 vcl/source/gdi/impimage.cxx                                |    4 
 vcl/source/gdi/impimagetree.cxx                            |   11 
 vcl/source/gdi/jobset.cxx                                  |    4 
 vcl/source/gdi/makefile.mk                                 |   24 
 vcl/source/gdi/metaact.cxx                                 |  110 
 vcl/source/gdi/metric.cxx                                  |    2 
 vcl/source/gdi/octree.cxx                                  |    5 
 vcl/source/gdi/outdev.cxx                                  |   27 
 vcl/source/gdi/outdev2.cxx                                 |   23 
 vcl/source/gdi/outdev3.cxx                                 |   52 
 vcl/source/gdi/outdev4.cxx                                 |   17 
 vcl/source/gdi/outdev5.cxx                                 |   11 
 vcl/source/gdi/outdev6.cxx                                 |   71 
 vcl/source/gdi/outdevnative.cxx                            |    3 
 vcl/source/gdi/outmap.cxx                                  |   16 
 vcl/source/gdi/pdfextoutdevdata.cxx                        |   53 
 vcl/source/gdi/pdffontcache.cxx                            |    6 
 vcl/source/gdi/pdffontcache.hxx                            |    4 
 vcl/source/gdi/pdfwriter.cxx                               |    4 
 vcl/source/gdi/pdfwriter_impl.cxx                          |   46 
 vcl/source/gdi/pdfwriter_impl.hxx                          |    8 
 vcl/source/gdi/pdfwriter_impl2.cxx                         |   17 
 vcl/source/gdi/polyscan.cxx                                |  361 -
 vcl/source/gdi/print.cxx                                   |   24 
 vcl/source/gdi/print2.cxx                                  |   37 
 vcl/source/gdi/print3.cxx                                  |   11 
 vcl/source/gdi/region.cxx                                  |    5 
 vcl/source/gdi/rendergraphic.cxx                           |  240 
 vcl/source/gdi/rendergraphicrasterizer.cxx                 |  400 +
 vcl/source/gdi/salgdilayout.cxx                            |   27 
 vcl/source/gdi/sallayout.cxx                               |    6 
 vcl/source/gdi/salmisc.cxx                                 |    2 
 vcl/source/gdi/salnativewidgets-none.cxx                   |    2 
 vcl/source/gdi/svcompat.cxx                                |   81 
 vcl/source/gdi/svgread.cxx                                 |  131 
 vcl/source/gdi/textlayout.cxx                              |    5 
 vcl/source/gdi/virdev.cxx                                  |   15 
 vcl/source/gdi/wall.cxx                                    |    7 
 vcl/source/glyphs/gcach_ftyp.cxx                           |    6 
 vcl/source/glyphs/gcach_ftyp.hxx                           |    2 
 vcl/source/glyphs/gcach_layout.cxx                         |    4 
 vcl/source/glyphs/gcach_rbmp.cxx                           |    2 
 vcl/source/glyphs/gcach_vdev.cxx                           |    2 
 vcl/source/glyphs/glyphcache.cxx                           |    4 
 vcl/source/glyphs/graphite_features.cxx                    |    2 
 vcl/source/glyphs/graphite_layout.cxx                      |    6 
 vcl/source/glyphs/graphite_serverfont.cxx                  |    8 
 vcl/source/glyphs/graphite_textsrc.cxx                     |  172 
 vcl/source/glyphs/graphite_textsrc.hxx                     |  124 
 vcl/source/glyphs/makefile.mk                              |   80 
 vcl/source/helper/canvasbitmap.cxx                         |    2 
 vcl/source/helper/canvastools.cxx                          |    2 
 vcl/source/helper/lazydelete.cxx                           |    2 
 vcl/source/helper/makefile.mk                              |   55 
 vcl/source/helper/xconnection.cxx                          |    9 
 vcl/source/salmain/makefile.mk                             |   41 
 vcl/source/salmain/salmain.cxx                             |    3 
 vcl/source/src/btntext.src                                 |    4 
 vcl/source/src/helptext.src                                |    4 
 vcl/source/src/images.src                                  |    4 
 vcl/source/src/makefile.mk                                 |   56 
 vcl/source/src/menu.src                                    |    5 
 vcl/source/src/print.src                                   |    2 
 vcl/source/src/stdtext.src                                 |    4 
 vcl/source/src/units.src                                   |    4 
 vcl/source/window/abstdlg.cxx                              |    3 
 vcl/source/window/accel.cxx                                |    5 
 vcl/source/window/accmgr.cxx                               |    5 
 vcl/source/window/arrange.cxx                              |    3 
 vcl/source/window/brdwin.cxx                               |   10 
 vcl/source/window/btndlg.cxx                               |    4 
 vcl/source/window/cursor.cxx                               |    7 
 vcl/source/window/dialog.cxx                               |    7 
 vcl/source/window/dlgctrl.cxx                              |    7 
 vcl/source/window/dndevdis.cxx                             |    9 
 vcl/source/window/dndlcon.cxx                              |    2 
 vcl/source/window/dockingarea.cxx                          |    5 
 vcl/source/window/dockmgr.cxx                              |   11 
 vcl/source/window/dockwin.cxx                              |   10 
 vcl/source/window/floatwin.cxx                             |   11 
 vcl/source/window/introwin.cxx                             |    9 
 vcl/source/window/keycod.cxx                               |    9 
 vcl/source/window/makefile.mk                              |  106 
 vcl/source/window/menu.cxx                                 |   19 
 vcl/source/window/msgbox.cxx                               |   12 
 vcl/source/window/printdlg.cxx                             |    9 
 vcl/source/window/scrwnd.cxx                               |    7 
 vcl/source/window/seleng.cxx                               |    6 
 vcl/source/window/split.cxx                                |    7 
 vcl/source/window/splitwin.cxx                             |    6 
 vcl/source/window/status.cxx                               |    8 
 vcl/source/window/syschild.cxx                             |   20 
 vcl/source/window/syswin.cxx                               |   10 
 vcl/source/window/tabpage.cxx                              |    7 
 vcl/source/window/taskpanelist.cxx                         |    7 
 vcl/source/window/toolbox.cxx                              |   18 
 vcl/source/window/toolbox2.cxx                             |   14 
 vcl/source/window/window.cxx                               |   68 
 vcl/source/window/window2.cxx                              |   22 
 vcl/source/window/window4.cxx                              |    5 
 vcl/source/window/winproc.cxx                              |   36 
 vcl/source/window/wpropset.cxx                             |    3 
 vcl/source/window/wrkwin.cxx                               |   14 
 vcl/unx/generic/app/i18n_cb.cxx                            |  658 +
 vcl/unx/generic/app/i18n_ic.cxx                            |  783 ++
 vcl/unx/generic/app/i18n_im.cxx                            |  621 +
 vcl/unx/generic/app/i18n_keysym.cxx                        |  368 +
 vcl/unx/generic/app/i18n_status.cxx                        |  735 ++
 vcl/unx/generic/app/i18n_wrp.cxx                           |  262 
 vcl/unx/generic/app/i18n_xkb.cxx                           |  165 
 vcl/unx/generic/app/keysymnames.cxx                        |  674 +
 vcl/unx/generic/app/randrwrapper.cxx                       |  363 +
 vcl/unx/generic/app/saldata.cxx                            |  875 ++
 vcl/unx/generic/app/saldisp.cxx                            | 3535 ++++++++++
 vcl/unx/generic/app/salinst.cxx                            |  453 +
 vcl/unx/generic/app/salsys.cxx                             |  229 
 vcl/unx/generic/app/saltimer.cxx                           |   98 
 vcl/unx/generic/app/sm.cxx                                 |  806 ++
 vcl/unx/generic/app/soicon.cxx                             |  118 
 vcl/unx/generic/app/wmadaptor.cxx                          | 2551 +++++++
 vcl/unx/generic/desktopdetect/desktopdetector.cxx          |  356 +
 vcl/unx/generic/dtrans/X11_clipboard.cxx                   |  296 
 vcl/unx/generic/dtrans/X11_clipboard.hxx                   |  150 
 vcl/unx/generic/dtrans/X11_dndcontext.cxx                  |  141 
 vcl/unx/generic/dtrans/X11_dndcontext.hxx                  |  107 
 vcl/unx/generic/dtrans/X11_droptarget.cxx                  |  231 
 vcl/unx/generic/dtrans/X11_selection.cxx                   | 4195 +++++++++++
 vcl/unx/generic/dtrans/X11_selection.hxx                   |  534 +
 vcl/unx/generic/dtrans/X11_service.cxx                     |  144 
 vcl/unx/generic/dtrans/X11_transferable.cxx                |  134 
 vcl/unx/generic/dtrans/X11_transferable.hxx                |   72 
 vcl/unx/generic/dtrans/bmp.cxx                             |  742 ++
 vcl/unx/generic/dtrans/bmp.hxx                             |  108 
 vcl/unx/generic/dtrans/config.cxx                          |  151 
 vcl/unx/generic/dtrans/copydata_curs.h                     |   45 
 vcl/unx/generic/dtrans/copydata_mask.h                     |   45 
 vcl/unx/generic/dtrans/linkdata_curs.h                     |   45 
 vcl/unx/generic/dtrans/linkdata_mask.h                     |   45 
 vcl/unx/generic/dtrans/movedata_curs.h                     |   45 
 vcl/unx/generic/dtrans/movedata_mask.h                     |   45 
 vcl/unx/generic/dtrans/nodrop_curs.h                       |   45 
 vcl/unx/generic/dtrans/nodrop_mask.h                       |   45 
 vcl/unx/generic/fontmanager/Makefile                       |   32 
 vcl/unx/generic/fontmanager/adobeenc.tab                   | 1087 +++
 vcl/unx/generic/fontmanager/afm_keyword_list               |   62 
 vcl/unx/generic/fontmanager/fontcache.cxx                  |  817 ++
 vcl/unx/generic/fontmanager/fontconfig.cxx                 | 1446 ++++
 vcl/unx/generic/fontmanager/fontmanager.cxx                | 4136 +++++++++++
 vcl/unx/generic/fontmanager/helper.cxx                     |  411 +
 vcl/unx/generic/fontmanager/parseAFM.cxx                   | 1492 ++++
 vcl/unx/generic/fontmanager/parseAFM.hxx                   |  337 
 vcl/unx/generic/gdi/cdeint.cxx                             |  237 
 vcl/unx/generic/gdi/dtint.cxx                              |  143 
 vcl/unx/generic/gdi/dtsetenum.hxx                          |  149 
 vcl/unx/generic/gdi/gcach_xpeer.cxx                        |  709 ++
 vcl/unx/generic/gdi/gcach_xpeer.hxx                        |   96 
 vcl/unx/generic/gdi/pspgraphics.cxx                        | 1414 ++++
 vcl/unx/generic/gdi/salbmp.cxx                             | 1160 +++
 vcl/unx/generic/gdi/salcvt.cxx                             |  339 
 vcl/unx/generic/gdi/salcvt.hxx                             |   95 
 vcl/unx/generic/gdi/salgdi.cxx                             | 1247 +++
 vcl/unx/generic/gdi/salgdi2.cxx                            | 1154 +++
 vcl/unx/generic/gdi/salgdi3.cxx                            | 1504 ++++
 vcl/unx/generic/gdi/salprnpsp.cxx                          | 1489 ++++
 vcl/unx/generic/gdi/salvd.cxx                              |  276 
 vcl/unx/generic/gdi/xrender_peer.cxx                       |  246 
 vcl/unx/generic/gdi/xrender_peer.hxx                       |  380 +
 vcl/unx/generic/plugadapt/salplug.cxx                      |  309 
 vcl/unx/generic/printer/cupsmgr.cxx                        | 1181 +++
 vcl/unx/generic/printer/jobdata.cxx                        |  268 
 vcl/unx/generic/printer/ppdparser.cxx                      | 2178 ++++++
 vcl/unx/generic/printer/printerinfomanager.cxx             | 1438 ++++
 vcl/unx/generic/printergfx/bitmap_gfx.cxx                  |  735 ++
 vcl/unx/generic/printergfx/common_gfx.cxx                  | 1287 +++
 vcl/unx/generic/printergfx/glyphset.cxx                    |  949 ++
 vcl/unx/generic/printergfx/glyphset.hxx                    |  137 
 vcl/unx/generic/printergfx/printerjob.cxx                  | 1212 +++
 vcl/unx/generic/printergfx/psheader.ps                     |  368 +
 vcl/unx/generic/printergfx/psputil.cxx                     |  271 
 vcl/unx/generic/printergfx/psputil.hxx                     |   80 
 vcl/unx/generic/printergfx/text_gfx.cxx                    |  865 ++
 vcl/unx/generic/window/FWS.cxx                             |  282 
 vcl/unx/generic/window/FWS.hxx                             |   66 
 vcl/unx/generic/window/salframe.cxx                        | 4567 +++++++++++++
 vcl/unx/generic/window/salobj.cxx                          |  569 +
 vcl/unx/gtk/a11y/atkbridge.cxx                             |    4 
 vcl/unx/gtk/a11y/atkfactory.cxx                            |    2 
 vcl/unx/gtk/a11y/atkwindow.cxx                             |    2 
 vcl/unx/gtk/a11y/makefile.mk                               |   89 
 vcl/unx/gtk/app/gtkdata.cxx                                |   17 
 vcl/unx/gtk/app/gtkinst.cxx                                |   15 
 vcl/unx/gtk/app/gtksys.cxx                                 |    7 
 vcl/unx/gtk/app/makefile.mk                                |   77 
 vcl/unx/gtk/gdi/makefile.mk                                |   67 
 vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx                   |   18 
 vcl/unx/gtk/window/gtkframe.cxx                            |   21 
 vcl/unx/gtk/window/gtkobject.cxx                           |    8 
 vcl/unx/gtk/window/makefile.mk                             |   79 
 vcl/unx/headless/makefile.mk                               |   66 
 vcl/unx/headless/svpbmp.hxx                                |    2 
 vcl/unx/headless/svpdummies.hxx                            |    7 
 vcl/unx/headless/svpframe.hxx                              |    2 
 vcl/unx/headless/svpgdi.cxx                                |    2 
 vcl/unx/headless/svpgdi.hxx                                |    5 
 vcl/unx/headless/svpinst.cxx                               |   12 
 vcl/unx/headless/svpinst.hxx                               |    6 
 vcl/unx/headless/svpprn.cxx                                |   15 
 vcl/unx/headless/svpprn.hxx                                |   10 
 vcl/unx/headless/svppspgraphics.cxx                        |   41 
 vcl/unx/headless/svppspgraphics.hxx                        |    5 
 vcl/unx/headless/svptext.cxx                               |   12 
 vcl/unx/headless/svpvd.hxx                                 |    2 
 vcl/unx/inc/XIM.h                                          |  140 
 vcl/unx/inc/Xproto.h                                       |   52 
 vcl/unx/inc/cdeint.hxx                                     |   47 
 vcl/unx/inc/dtint.hxx                                      |   74 
 vcl/unx/inc/i18n_cb.hxx                                    |   98 
 vcl/unx/inc/i18n_ic.hxx                                    |  102 
 vcl/unx/inc/i18n_im.hxx                                    |   67 
 vcl/unx/inc/i18n_keysym.hxx                                |   73 
 vcl/unx/inc/i18n_status.hxx                                |  126 
 vcl/unx/inc/i18n_xkb.hxx                                   |  117 
 vcl/unx/inc/plugins/gtk/atkbridge.hxx                      |   39 
 vcl/unx/inc/plugins/gtk/gtkdata.hxx                        |   95 
 vcl/unx/inc/plugins/gtk/gtkframe.hxx                       |  418 -
 vcl/unx/inc/plugins/gtk/gtkgdi.hxx                         |  188 
 vcl/unx/inc/plugins/gtk/gtkinst.hxx                        |  108 
 vcl/unx/inc/plugins/gtk/gtkobject.hxx                      |   75 
 vcl/unx/inc/plugins/kde/kdedata.hxx                        |  113 
 vcl/unx/inc/pspgraphics.h                                  |  190 
 vcl/unx/inc/salbmp.h                                       |  244 
 vcl/unx/inc/saldata.hxx                                    |  132 
 vcl/unx/inc/saldisp.hxx                                    |  552 -
 vcl/unx/inc/salframe.h                                     |  304 
 vcl/unx/inc/salgdi.h                                       |  401 -
 vcl/unx/inc/salinst.h                                      |  129 
 vcl/unx/inc/salmenu.h                                      |   67 
 vcl/unx/inc/salobj.h                                       |  107 
 vcl/unx/inc/salprn.h                                       |  110 
 vcl/unx/inc/salstd.hxx                                     |   79 
 vcl/unx/inc/salsys.h                                       |   66 
 vcl/unx/inc/saltimer.h                                     |   47 
 vcl/unx/inc/salunx.h                                       |  131 
 vcl/unx/inc/salvd.h                                        |  103 
 vcl/unx/inc/sm.hxx                                         |   94 
 vcl/unx/inc/soicon.hxx                                     |   40 
 vcl/unx/inc/strhelper.hxx                                  |   44 
 vcl/unx/inc/svsys.h                                        |   35 
 vcl/unx/inc/svunx.h                                        |   37 
 vcl/unx/inc/wmadaptor.hxx                                  |  355 -
 vcl/unx/kde/kdedata.cxx                                    |   12 
 vcl/unx/kde/makefile.mk                                    |   81 
 vcl/unx/kde/salnativewidgets-kde.cxx                       |   15 
 vcl/unx/kde4/KDEData.hxx                                   |    4 
 vcl/unx/kde4/KDESalDisplay.hxx                             |    2 
 vcl/unx/kde4/KDESalFrame.cxx                               |    7 
 vcl/unx/kde4/KDESalFrame.hxx                               |    4 
 vcl/unx/kde4/KDESalGraphics.hxx                            |    4 
 vcl/unx/kde4/KDESalInstance.hxx                            |    2 
 vcl/unx/kde4/KDEXLib.cxx                                   |    8 
 vcl/unx/kde4/KDEXLib.hxx                                   |    2 
 vcl/unx/kde4/VCLKDEApplication.cxx                         |    2 
 vcl/unx/kde4/main.cxx                                      |    4 
 vcl/unx/kde4/makefile.mk                                   |   96 
 vcl/unx/source/app/i18n_cb.cxx                             |  656 -
 vcl/unx/source/app/i18n_ic.cxx                             |  784 --
 vcl/unx/source/app/i18n_im.cxx                             |  620 -
 vcl/unx/source/app/i18n_keysym.cxx                         |  368 -
 vcl/unx/source/app/i18n_status.cxx                         |  735 --
 vcl/unx/source/app/i18n_wrp.cxx                            |  261 
 vcl/unx/source/app/i18n_xkb.cxx                            |  165 
 vcl/unx/source/app/keysymnames.cxx                         |  674 -
 vcl/unx/source/app/makefile.mk                             |  111 
 vcl/unx/source/app/randrwrapper.cxx                        |  363 -
 vcl/unx/source/app/saldata.cxx                             |  873 --
 vcl/unx/source/app/saldisp.cxx                             | 3535 ----------
 vcl/unx/source/app/salinst.cxx                             |  454 -
 vcl/unx/source/app/salsys.cxx                              |  228 
 vcl/unx/source/app/saltimer.cxx                            |   98 
 vcl/unx/source/app/sm.cxx                                  |  805 --
 vcl/unx/source/app/soicon.cxx                              |  115 
 vcl/unx/source/app/wmadaptor.cxx                           | 2547 -------
 vcl/unx/source/desktopdetect/desktopdetector.cxx           |  356 -
 vcl/unx/source/desktopdetect/makefile.mk                   |   57 
 vcl/unx/source/dtrans/X11_clipboard.cxx                    |  296 
 vcl/unx/source/dtrans/X11_clipboard.hxx                    |  150 
 vcl/unx/source/dtrans/X11_dndcontext.cxx                   |  141 
 vcl/unx/source/dtrans/X11_dndcontext.hxx                   |  107 
 vcl/unx/source/dtrans/X11_droptarget.cxx                   |  231 
 vcl/unx/source/dtrans/X11_selection.cxx                    | 4195 -----------
 vcl/unx/source/dtrans/X11_selection.hxx                    |  534 -
 vcl/unx/source/dtrans/X11_service.cxx                      |  144 
 vcl/unx/source/dtrans/X11_transferable.cxx                 |  134 
 vcl/unx/source/dtrans/X11_transferable.hxx                 |   72 
 vcl/unx/source/dtrans/bmp.cxx                              |  742 --
 vcl/unx/source/dtrans/bmp.hxx                              |  108 
 vcl/unx/source/dtrans/config.cxx                           |  151 
 vcl/unx/source/dtrans/copydata_curs.h                      |   45 
 vcl/unx/source/dtrans/copydata_mask.h                      |   45 
 vcl/unx/source/dtrans/linkdata_curs.h                      |   45 
 vcl/unx/source/dtrans/linkdata_mask.h                      |   45 
 vcl/unx/source/dtrans/makefile.mk                          |   68 
 vcl/unx/source/dtrans/movedata_curs.h                      |   45 
 vcl/unx/source/dtrans/movedata_mask.h                      |   45 
 vcl/unx/source/dtrans/nodrop_curs.h                        |   45 
 vcl/unx/source/dtrans/nodrop_mask.h                        |   45 
 vcl/unx/source/fontmanager/adobeenc.tab                    | 1087 ---
 vcl/unx/source/fontmanager/afm_keyword_list                |   62 
 vcl/unx/source/fontmanager/fontcache.cxx                   |  817 --
 vcl/unx/source/fontmanager/fontconfig.cxx                  | 1446 ----
 vcl/unx/source/fontmanager/fontmanager.cxx                 | 4137 -----------
 vcl/unx/source/fontmanager/helper.cxx                      |  411 -
 vcl/unx/source/fontmanager/makefile.mk                     |   77 
 vcl/unx/source/fontmanager/parseAFM.cxx                    | 1492 ----
 vcl/unx/source/fontmanager/parseAFM.hxx                    |  337 
 vcl/unx/source/gdi/cdeint.cxx                              |  234 
 vcl/unx/source/gdi/dtint.cxx                               |  143 
 vcl/unx/source/gdi/dtsetenum.hxx                           |  149 
 vcl/unx/source/gdi/gcach_xpeer.cxx                         |  708 --
 vcl/unx/source/gdi/gcach_xpeer.hxx                         |   98 
 vcl/unx/source/gdi/makefile.mk                             |  104 
 vcl/unx/source/gdi/pspgraphics.cxx                         | 1412 ----
 vcl/unx/source/gdi/salbmp.cxx                              | 1157 ---
 vcl/unx/source/gdi/salcvt.cxx                              |  339 
 vcl/unx/source/gdi/salcvt.hxx                              |   94 
 vcl/unx/source/gdi/salgdi.cxx                              | 1247 ---
 vcl/unx/source/gdi/salgdi2.cxx                             | 1152 ---
 vcl/unx/source/gdi/salgdi3.cxx                             | 1501 ----
 vcl/unx/source/gdi/salprnpsp.cxx                           | 1489 ----
 vcl/unx/source/gdi/salvd.cxx                               |  274 
 vcl/unx/source/gdi/xrender_peer.cxx                        |  243 
 vcl/unx/source/gdi/xrender_peer.hxx                        |  380 -
 vcl/unx/source/inc/airbrush_curs.h                         |   43 
 vcl/unx/source/inc/airbrush_mask.h                         |   43 
 vcl/unx/source/inc/ase_curs.h                              |   43 
 vcl/unx/source/inc/ase_mask.h                              |   43 
 vcl/unx/source/inc/asn_curs.h                              |   43 
 vcl/unx/source/inc/asn_mask.h                              |   43 
 vcl/unx/source/inc/asne_curs.h                             |   43 
 vcl/unx/source/inc/asne_mask.h                             |   43 
 vcl/unx/source/inc/asns_curs.h                             |   43 
 vcl/unx/source/inc/asns_mask.h                             |   43 
 vcl/unx/source/inc/asnswe_curs.h                           |   43 
 vcl/unx/source/inc/asnswe_mask.h                           |   43 
 vcl/unx/source/inc/asnw_curs.h                             |   43 
 vcl/unx/source/inc/asnw_mask.h                             |   43 
 vcl/unx/source/inc/ass_curs.h                              |   43 
 vcl/unx/source/inc/ass_mask.h                              |   43 
 vcl/unx/source/inc/asse_curs.h                             |   43 
 vcl/unx/source/inc/asse_mask.h                             |   43 
 vcl/unx/source/inc/assw_curs.h                             |   43 
 vcl/unx/source/inc/assw_mask.h                             |   43 
 vcl/unx/source/inc/asw_curs.h                              |   43 
 vcl/unx/source/inc/asw_mask.h                              |   43 
 vcl/unx/source/inc/aswe_curs.h                             |   43 
 vcl/unx/source/inc/aswe_mask.h                             |   43 
 vcl/unx/source/inc/chain_curs.h                            |   43 
 vcl/unx/source/inc/chain_mask.h                            |   41 
 vcl/unx/source/inc/chainnot_curs.h                         |   43 
 vcl/unx/source/inc/chainnot_mask.h                         |   41 
 vcl/unx/source/inc/chart_curs.h                            |   43 
 vcl/unx/source/inc/chart_mask.h                            |   43 
 vcl/unx/source/inc/copydata_curs.h                         |   45 
 vcl/unx/source/inc/copydata_mask.h                         |   45 
 vcl/unx/source/inc/copydlnk_curs.h                         |   45 
 vcl/unx/source/inc/copydlnk_mask.h                         |   45 
 vcl/unx/source/inc/copyfile_curs.h                         |   45 
 vcl/unx/source/inc/copyfile_mask.h                         |   45 
 vcl/unx/source/inc/copyfiles_curs.h                        |   45 
 vcl/unx/source/inc/copyfiles_mask.h                        |   45 
 vcl/unx/source/inc/copyflnk_curs.h                         |   45 
 vcl/unx/source/inc/copyflnk_mask.h                         |   45 
 vcl/unx/source/inc/crook_curs.h                            |   45 
 vcl/unx/source/inc/crook_mask.h                            |   43 
 vcl/unx/source/inc/crop_curs.h                             |   45 
 vcl/unx/source/inc/crop_mask.h                             |   43 
 vcl/unx/source/inc/detective_curs.h                        |   43 
 vcl/unx/source/inc/detective_mask.h                        |   43 
 vcl/unx/source/inc/drawarc_curs.h                          |   45 
 vcl/unx/source/inc/drawarc_mask.h                          |   43 
 vcl/unx/source/inc/drawbezier_curs.h                       |   45 
 vcl/unx/source/inc/drawbezier_mask.h                       |   43 
 vcl/unx/source/inc/drawcaption_curs.h                      |   45 
 vcl/unx/source/inc/drawcaption_mask.h                      |   43 
 vcl/unx/source/inc/drawcirclecut_curs.h                    |   45 
 vcl/unx/source/inc/drawcirclecut_mask.h                    |   43 
 vcl/unx/source/inc/drawconnect_curs.h                      |   45 
 vcl/unx/source/inc/drawconnect_mask.h                      |   43 
 vcl/unx/source/inc/drawcrook_curs.h                        |   45 
 vcl/unx/source/inc/drawcrook_mask.h                        |   43 
 vcl/unx/source/inc/drawcrop_curs.h                         |   45 
 vcl/unx/source/inc/drawcrop_mask.h                         |   43 
 vcl/unx/source/inc/drawellipse_curs.h                      |   45 
 vcl/unx/source/inc/drawellipse_mask.h                      |   43 
 vcl/unx/source/inc/drawfreehand_curs.h                     |   45 
 vcl/unx/source/inc/drawfreehand_mask.h                     |   43 
 vcl/unx/source/inc/drawline_curs.h                         |   45 
 vcl/unx/source/inc/drawline_mask.h                         |   43 
 vcl/unx/source/inc/drawmirror_curs.h                       |   45 
 vcl/unx/source/inc/drawmirror_mask.h                       |   43 
 vcl/unx/source/inc/drawpie_curs.h                          |   45 
 vcl/unx/source/inc/drawpie_mask.h                          |   43 
 vcl/unx/source/inc/drawpolygon_curs.h                      |   45 
 vcl/unx/source/inc/drawpolygon_mask.h                      |   43 
 vcl/unx/source/inc/drawrect_curs.h                         |   45 
 vcl/unx/source/inc/drawrect_mask.h                         |   43 
 vcl/unx/source/inc/drawtext_curs.h                         |   45 
 vcl/unx/source/inc/drawtext_mask.h                         |   43 
 vcl/unx/source/inc/fill_curs.h                             |   43 
 vcl/unx/source/inc/fill_mask.h                             |   43 
 vcl/unx/source/inc/hshear_curs.h                           |   45 
 vcl/unx/source/inc/hshear_mask.h                           |   43 
 vcl/unx/source/inc/invert50.h                              |   68 
 vcl/unx/source/inc/linkdata_curs.h                         |   45 
 vcl/unx/source/inc/linkdata_mask.h                         |   45 
 vcl/unx/source/inc/linkfile_curs.h                         |   45 
 vcl/unx/source/inc/linkfile_mask.h                         |   45 
 vcl/unx/source/inc/magnify_curs.h                          |   43 
 vcl/unx/source/inc/magnify_mask.h                          |   43 
 vcl/unx/source/inc/mirror_curs.h                           |   45 
 vcl/unx/source/inc/mirror_mask.h                           |   43 
 vcl/unx/source/inc/movebezierweight_curs.h                 |   45 
 vcl/unx/source/inc/movebezierweight_mask.h                 |   43 
 vcl/unx/source/inc/movedata_curs.h                         |   45 
 vcl/unx/source/inc/movedata_mask.h                         |   45 
 vcl/unx/source/inc/movedlnk_curs.h                         |   45 
 vcl/unx/source/inc/movedlnk_mask.h                         |   45 
 vcl/unx/source/inc/movefile_curs.h                         |   45 
 vcl/unx/source/inc/movefile_mask.h                         |   45 
 vcl/unx/source/inc/movefiles_curs.h                        |   45 
 vcl/unx/source/inc/movefiles_mask.h                        |   45 
 vcl/unx/source/inc/moveflnk_curs.h                         |   45 
 vcl/unx/source/inc/moveflnk_mask.h                         |   45 
 vcl/unx/source/inc/movepoint_curs.h                        |   45 
 vcl/unx/source/inc/movepoint_mask.h                        |   43 
 vcl/unx/source/inc/nodrop_curs.h                           |   45 
 vcl/unx/source/inc/nodrop_mask.h                           |   45 
 vcl/unx/source/inc/null_curs.h                             |   34 
 vcl/unx/source/inc/null_mask.h                             |   32 
 vcl/unx/source/inc/paintbrush_curs.h                       |   11 
 vcl/unx/source/inc/paintbrush_mask.h                       |    9 
 vcl/unx/source/inc/pivotcol_curs.h                         |   45 
 vcl/unx/source/inc/pivotcol_mask.h                         |   45 
 vcl/unx/source/inc/pivotdel_curs.h                         |   45 
 vcl/unx/source/inc/pivotdel_mask.h                         |   45 
 vcl/unx/source/inc/pivotfld_curs.h                         |   45 
 vcl/unx/source/inc/pivotfld_mask.h                         |   45 
 vcl/unx/source/inc/pivotrow_curs.h                         |   45 
 vcl/unx/source/inc/pivotrow_mask.h                         |   45 
 vcl/unx/source/inc/rotate_curs.h                           |   45 
 vcl/unx/source/inc/rotate_mask.h                           |   43 
 vcl/unx/source/inc/salcursors.h                            |  165 
 vcl/unx/source/inc/tblsele_curs.h                          |   11 
 vcl/unx/source/inc/tblsele_mask.h                          |    9 
 vcl/unx/source/inc/tblsels_curs.h                          |   11 
 vcl/unx/source/inc/tblsels_mask.h                          |    9 
 vcl/unx/source/inc/tblselse_curs.h                         |   11 
 vcl/unx/source/inc/tblselse_mask.h                         |    9 
 vcl/unx/source/inc/tblselsw_curs.h                         |   11 
 vcl/unx/source/inc/tblselsw_mask.h                         |    9 
 vcl/unx/source/inc/tblselw_curs.h                          |   11 
 vcl/unx/source/inc/tblselw_mask.h                          |    9 
 vcl/unx/source/inc/timemove_curs.h                         |   43 
 vcl/unx/source/inc/timemove_mask.h                         |   43 
 vcl/unx/source/inc/timesize_curs.h                         |   43 
 vcl/unx/source/inc/timesize_mask.h                         |   43 
 vcl/unx/source/inc/vertcurs_curs.h                         |   11 
 vcl/unx/source/inc/vertcurs_mask.h                         |   11 
 vcl/unx/source/inc/vshear_curs.h                           |   45 
 vcl/unx/source/inc/vshear_mask.h                           |   43 
 vcl/unx/source/plugadapt/makefile.mk                       |   59 
 vcl/unx/source/plugadapt/salplug.cxx                       |  311 
 vcl/unx/source/printer/cupsmgr.cxx                         | 1183 ---
 vcl/unx/source/printer/jobdata.cxx                         |  268 
 vcl/unx/source/printer/makefile.mk                         |   70 
 vcl/unx/source/printer/ppdparser.cxx                       | 2178 ------
 vcl/unx/source/printer/printerinfomanager.cxx              | 1437 ----
 vcl/unx/source/printergfx/bitmap_gfx.cxx                   |  735 --
 vcl/unx/source/printergfx/common_gfx.cxx                   | 1287 ---
 vcl/unx/source/printergfx/glyphset.cxx                     |  949 --
 vcl/unx/source/printergfx/glyphset.hxx                     |  137 
 vcl/unx/source/printergfx/makefile.mk                      |   65 
 vcl/unx/source/printergfx/printerjob.cxx                   | 1212 ---
 vcl/unx/source/printergfx/psheader.ps                      |  368 -
 vcl/unx/source/printergfx/psputil.cxx                      |  271 
 vcl/unx/source/printergfx/psputil.hxx                      |   80 
 vcl/unx/source/printergfx/text_gfx.cxx                     |  865 --
 vcl/unx/source/window/FWS.cxx                              |  282 
 vcl/unx/source/window/FWS.hxx                              |   66 
 vcl/unx/source/window/makefile.mk                          |   59 
 vcl/unx/source/window/salframe.cxx                         | 4565 ------------
 vcl/unx/source/window/salobj.cxx                           |  566 -
 vcl/util/hidother.src                                      |   31 
 vcl/util/linksvp/makefile.mk                               |   67 
 vcl/util/makefile.mk                                       |    2 
 vcl/util/makefile.pmk                                      |   34 
 vcl/util/makefile2.pmk                                     |   34 
 vcl/util/target.pmk                                        |   39 
 vcl/util/vcl.component                                     |   49 
 vcl/util/vcl.macosx.component                              |   49 
 vcl/util/vcl.windows.component                             |   40 
 vcl/vcl.macosx.component                                   |   52 
 vcl/vcl.unx.component                                      |   52 
 vcl/vcl.windows.component                                  |   43 
 vcl/win/inc/salbmp.h                                       |   94 
 vcl/win/inc/saldata.hxx                                    |  378 -
 vcl/win/inc/salframe.h                                     |  156 
 vcl/win/inc/salgdi.h                                       |  433 -
 vcl/win/inc/salids.hrc                                     |  120 
 vcl/win/inc/salinst.h                                      |  106 
 vcl/win/inc/salmenu.h                                      |   80 
 vcl/win/inc/salnativewidgets.h                             |   57 
 vcl/win/inc/salobj.h                                       |   74 
 vcl/win/inc/salprn.h                                       |  133 
 vcl/win/inc/salsys.h                                       |   94 
 vcl/win/inc/saltimer.h                                     |   47 
 vcl/win/inc/salvd.h                                        |   64 
 vcl/win/inc/svsys.h                                        |   39 
 vcl/win/inc/wincomp.hxx                                    |  265 
 vcl/win/source/app/MAKEFILE.MK                             |   53 
 vcl/win/source/app/saldata.cxx                             |    5 
 vcl/win/source/app/salinfo.cxx                             |   28 
 vcl/win/source/app/salinst.cxx                             |   30 
 vcl/win/source/app/salshl.cxx                              |    4 
 vcl/win/source/app/saltimer.cxx                            |    6 
 vcl/win/source/gdi/makefile.mk                             |   73 
 vcl/win/source/gdi/salbmp.cxx                              |   14 
 vcl/win/source/gdi/salgdi.cxx                              |   17 
 vcl/win/source/gdi/salgdi2.cxx                             |   14 
 vcl/win/source/gdi/salgdi3.cxx                             |   42 
 vcl/win/source/gdi/salgdi_gdiplus.cxx                      |    8 
 vcl/win/source/gdi/salnativewidgets-luna.cxx               |   12 
 vcl/win/source/gdi/salprn.cxx                              |   26 
 vcl/win/source/gdi/salvd.cxx                               |   13 
 vcl/win/source/gdi/winlayout.cxx                           |   23 
 vcl/win/source/src/MAKEFILE.MK                             |  130 
 vcl/win/source/src/salsrc.rc                               |    2 
 vcl/win/source/window/MAKEFILE.MK                          |   60 
 vcl/win/source/window/salframe.cxx                         |   42 
 vcl/win/source/window/salmenu.cxx                          |   18 
 vcl/win/source/window/salobj.cxx                           |   13 
 1204 files changed, 118335 insertions(+), 116778 deletions(-)

New commits:
commit 538124f4007ccde7d2b81a1561f10ebf45fc40d3
Merge: 99e9e24... da617ac...
Author: Jan Holesovsky <kendy at suse.cz>
Date:   Fri May 27 21:12:53 2011 +0200

    Merge branch 'master' of git://anongit.freedesktop.org/libreoffice/libs-gui
    
    Conflicts:
    	vcl/source/control/makefile.mk
    	vcl/unx/generic/printer/ppdparser.cxx

diff --cc vcl/inc/svdata.hxx
index 0b511af,0000000..380e555
mode 100644,000000..100644
--- a/vcl/inc/svdata.hxx
+++ b/vcl/inc/svdata.hxx
@@@ -1,467 -1,0 +1,466 @@@
 +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
 +/*************************************************************************
 + *
 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 + *
 + * Copyright 2000, 2010 Oracle and/or its affiliates.
 + *
 + * OpenOffice.org - a multi-platform office productivity suite
 + *
 + * This file is part of OpenOffice.org.
 + *
 + * OpenOffice.org is free software: you can redistribute it and/or modify
 + * it under the terms of the GNU Lesser General Public License version 3
 + * only, as published by the Free Software Foundation.
 + *
 + * OpenOffice.org is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU Lesser General Public License version 3 for more details
 + * (a copy is included in the LICENSE file that accompanied this code).
 + *
 + * You should have received a copy of the GNU Lesser General Public License
 + * version 3 along with OpenOffice.org.  If not, see
 + * <http://www.openoffice.org/license.html>
 + * for a copy of the LGPLv3 License.
 + *
 + ************************************************************************/
 +
 +#ifndef _SV_SVDATA_HXX
 +#define _SV_SVDATA_HXX
 +
 +#include <osl/thread.hxx>
 +#include <rtl/ref.hxx>
 +
 +#include "tools/gen.hxx"
 +#include "tools/shl.hxx"
 +#include "tools/link.hxx"
 +#include "tools/fldunit.hxx"
 +#include "tools/string.hxx"
 +#include "tools/color.hxx"
 +#include "tools/debug.hxx"
 +
 +#include "vcl/vclevent.hxx"
 +#include "vcl/sv.h"
 +#include "vcl/dllapi.h"
 +
 +#include "unotools/options.hxx"
 +
 +#include "xconnection.hxx"
 +
 +#include "com/sun/star/uno/Reference.hxx"
 +
 +#include <boost/unordered_map.hpp>
 +
 +namespace com {
 +namespace sun {
 +namespace star {
 +namespace lang {
 +    class XMultiServiceFactory;
 +}
 +namespace frame {
 +    class XSessionManagerClient;
 +}
 +}}}
 +
 +struct ImplTimerData;
 +struct ImplFileImageCacheData;
 +struct ImplConfigData;
 +class ImplDirectFontSubstitution;
 +struct ImplHotKey;
 +struct ImplEventHook;
 +class Point;
 +class Rectangle;
 +class ImpResMgr;
 +class ResMgr;
- class UniqueIndex;
 +class ImplAccelManager;
 +class ImplDevFontList;
 +class ImplFontCache;
 +class HelpTextWindow;
 +class ImplTBDragMgr;
 +class ImplButtonList;
 +class ImplIdleMgr;
 +class DbgWindow;
 +class FloatingWindow;
 +class AllSettings;
 +class KeyCode;
 +class NotifyEvent;
 +class Timer;
 +class AutoTimer;
 +class Help;
 +class ImageList;
 +class Image;
 +class PopupMenu;
 +class Application;
 +class OutputDevice;
 +class Window;
 +class SystemWindow;
 +class WorkWindow;
 +class Dialog;
 +class VirtualDevice;
 +class Printer;
 +class SalFrame;
 +class SalInstance;
 +class SalSystem;
 +class SalProcessWindowList;
 +class SalTrayList;
 +class UniqueIdContainer;
 +class List;
 +class ImplPrnQueueList;
 +class ImplVDevCache;
 +class UnoWrapperBase;
 +class GraphicConverter;
 +class ImplWheelWindow;
 +class SalTimer;
 +class SalI18NImeStatus;
 +class DockingManager;
 +class VclEventListeners2;
 +
 +namespace vcl { class DisplayConnection; class SettingsConfigItem; class DeleteOnDeinitBase; }
 +namespace utl { class DefaultFontConfiguration; class FontSubstConfiguration; }
 +
 +// -----------------
 +// - ImplSVAppData -
 +// -----------------
 +class LocaleConfigurationListener : public utl::ConfigurationListener
 +{
 +public:
 +    virtual void ConfigurationChanged( utl::ConfigurationBroadcaster*, sal_uInt32 );
 +};
 +
 +struct ImplSVAppData
 +{
 +    enum ImeStatusWindowMode
 +    {
 +        ImeStatusWindowMode_UNKNOWN,
 +        ImeStatusWindowMode_HIDE,
 +        ImeStatusWindowMode_SHOW
 +    };
 +
 +    ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >    mxMSF;
 +    String*                 mpMSFTempFileName;
 +    AllSettings*            mpSettings;         // Application settings
 +    LocaleConfigurationListener* mpCfgListener;
 +    VclEventListeners*      mpEventListeners;   // listeners for vcl events (eg, extended toolkit)
 +    VclEventListeners*      mpKeyListeners;     // listeners for key events only (eg, extended toolkit)
 +    ImplAccelManager*       mpAccelMgr;         // Accelerator Manager
 +    XubString*              mpAppName;          // Application name
 +    XubString*              mpAppFileName;      // Abs. Application FileName
 +    XubString*              mpDisplayName;      // Application Display Name
 +    String*                 mpFontPath;         // Additional Fontpath
 +    Help*                   mpHelp;             // Application help
 +    PopupMenu*              mpActivePopupMenu;  // Actives Popup-Menu (in Execute)
 +    UniqueIdContainer*      mpUniqueIdCont;     // Fuer Eindeutige Id's
 +    ImplIdleMgr*            mpIdleMgr;          // Idle-Manager
 +    ImplWheelWindow*        mpWheelWindow;      // WheelWindow
 +    ImplHotKey*             mpFirstHotKey;      // HotKey-Verwaltung
 +    ImplEventHook*          mpFirstEventHook;   // Event-Hooks
 +    VclEventListeners2*     mpPostYieldListeners;           // post yield listeners
 +    sal_uLong                   mnLastInputTime;                // GetLastInputTime()
 +    sal_uInt16                  mnDispatchLevel;                // DispatchLevel
 +    sal_uInt16                  mnModalMode;                    // ModalMode Count
 +    sal_uInt16                  mnModalDialog;                  // ModalDialog Count
 +    sal_uInt16                  mnAccessCount;                  // AccessHdl Count
 +    sal_uInt16                  mnSysWinMode;                   // Modus, wann SystemWindows erzeugt werden sollen
 +    sal_uInt16                  mnLayout;                       // --- RTL-Flags --- currently not used, only for testing
 +    short                   mnDialogScaleX;                 // Scale X-Positions and sizes in Dialogs
 +    sal_Bool                    mbInAppMain;                    // is Application::Main() on stack
 +    sal_Bool                    mbInAppExecute;                 // is Application::Execute() on stack
 +    sal_Bool                    mbAppQuit;                      // is Application::Quit() called
 +    sal_Bool                    mbSettingsInit;                 // sal_True: Settings are initialized
 +    sal_Bool                    mbDialogCancel;                 // sal_True: Alle Dialog::Execute()-Aufrufe werden mit return sal_False sofort beendet
 +    sal_Bool                    mbNoYield;                      // Application::Yield will not wait for events if the queue is empty
 +                                                            // essentially that makes it the same as Application::Reschedule
 +    long                    mnDefaultLayoutBorder;          // default value in pixel for layout distances used
 +                                                            // in window arrangers
 +
 +    /** Controls whether showing any IME status window is toggled on or off.
 +
 +        Only meaningful if showing IME status windows can be toggled on and off
 +        externally (see Application::CanToggleImeStatusWindow).
 +     */
 +    ImeStatusWindowMode meShowImeStatusWindow;
 +
 +    DECL_STATIC_LINK( ImplSVAppData, ImplQuitMsg, void* );
 +
 +};
 +
 +
 +// -----------------
 +// - ImplSVGDIData -
 +// -----------------
 +
 +struct ImplSVGDIData
 +{
 +    OutputDevice*           mpFirstWinGraphics; // First OutputDevice with a Frame Graphics
 +    OutputDevice*           mpLastWinGraphics;  // Last OutputDevice with a Frame Graphics
 +    OutputDevice*           mpFirstVirGraphics; // First OutputDevice with a VirtualDevice Graphics
 +    OutputDevice*           mpLastVirGraphics;  // Last OutputDevice with a VirtualDevice Graphics
 +    OutputDevice*           mpFirstPrnGraphics; // First OutputDevice with a InfoPrinter Graphics
 +    OutputDevice*           mpLastPrnGraphics;  // Last OutputDevice with a InfoPrinter Graphics
 +    VirtualDevice*          mpFirstVirDev;      // First VirtualDevice
 +    VirtualDevice*          mpLastVirDev;       // Last VirtualDevice
 +    Printer*                mpFirstPrinter;     // First Printer
 +    Printer*                mpLastPrinter;      // Last Printer
 +    ImplPrnQueueList*       mpPrinterQueueList; // List of all printer queue
 +    ImplDevFontList*        mpScreenFontList;   // Screen-Font-List
 +    ImplFontCache*          mpScreenFontCache;  // Screen-Font-Cache
 +    ImplDirectFontSubstitution* mpDirectFontSubst;// Font-Substitutons defined in Tools->Options->Fonts
 +    GraphicConverter*       mpGrfConverter;     // Converter for graphics
 +    long                    mnRealAppFontX;     // AppFont X-Numenator for 40/tel Width
 +    long                    mnAppFontX;         // AppFont X-Numenator for 40/tel Width + DialogScaleX
 +    long                    mnAppFontY;         // AppFont Y-Numenator for 80/tel Height
 +    sal_Bool                    mbFontSubChanged;   // sal_True: FontSubstitution wurde zwischen Begin/End geaendert
 +    utl::DefaultFontConfiguration* mpDefaultFontConfiguration;
 +    utl::FontSubstConfiguration* mpFontSubstConfiguration;
 +    bool                    mbNativeFontConfig; // true: do not override UI font
 +    bool                    mbNoXORClipping;    // true: do not use XOR to achieve clipping effects
 +};
 +
 +
 +// -----------------
 +// - ImplSVWinData -
 +// -----------------
 +
 +struct ImplSVWinData
 +{
 +    Window*                 mpFirstFrame;       // First FrameWindow
 +    Window*                 mpDefDialogParent;  // Default Dialog Parent
 +    WorkWindow*             mpAppWin;           // Application-Window
 +    Window*                 mpFocusWin;         // window, that has the focus
 +    Window*                 mpActiveApplicationFrame; // the last active application frame, can be used as DefModalDialogParent if no focuswin set
 +    Window*                 mpCaptureWin;       // window, that has the mouse capture
 +    Window*                 mpLastDeacWin;      // Window, that need a deactivate (FloatingWindow-Handling)
 +    DbgWindow*              mpDbgWin;           // debug window
 +    FloatingWindow*         mpFirstFloat;       // First FloatingWindow in PopupMode
 +    Dialog*                 mpLastExecuteDlg;   // Erster Dialog, der sich in Execute befindet
 +    Window*                 mpExtTextInputWin;  // Window, which is in ExtTextInput
 +    Window*                 mpTrackWin;         // window, that is in tracking mode
 +    AutoTimer*              mpTrackTimer;       // tracking timer
 +    ImageList*              mpMsgBoxImgList;    // ImageList for MessageBox
 +    Window*                 mpAutoScrollWin;    // window, that is in AutoScrollMode mode
 +    sal_uInt16                  mnTrackFlags;       // tracking flags
 +    sal_uInt16                  mnAutoScrollFlags;  // auto scroll flags
 +    sal_Bool                    mbNoDeactivate;     // sal_True: keine Deactivate durchfuehren
 +    sal_Bool					mbNoSaveFocus;		// sal_True: menues must not save/restore focus
 +    sal_Bool                    mbNoSaveBackground; // sal_True: save background is unnecessary or even less performant
 +};
 +
 +
 +// ------------------
 +// - ImplSVCtrlData -
 +// ------------------
 +
 +typedef std::vector< std::pair< String, FieldUnit > > FieldUnitStringList;
 +
 +struct ImplSVCtrlData
 +{
 +    ImageList*              mpCheckImgList;     // ImageList for CheckBoxes
 +    ImageList*              mpRadioImgList;     // ImageList for RadioButtons
 +    ImageList*              mpPinImgList;       // ImageList for PIN
 +    ImageList*              mpSplitHPinImgList; // ImageList for Horizontale SplitWindows
 +    ImageList*              mpSplitVPinImgList; // ImageList for Vertikale SplitWindows (PIN's)
 +    ImageList*              mpSplitHArwImgList; // ImageList for Horizontale SplitWindows (Arrows)
 +    ImageList*              mpSplitVArwImgList; // ImageList for Vertikale SplitWindows (Arrows)
 +    Image*                  mpDisclosurePlus;
 +    Image*                  mpDisclosureMinus;
 +    ImplTBDragMgr*          mpTBDragMgr;        // DragMgr for ToolBox
 +    sal_uInt16                  mnCheckStyle;       // CheckBox-Style for ImageList-Update
 +    sal_uInt16                  mnRadioStyle;       // Radio-Style for ImageList-Update
 +    sal_uLong                   mnLastCheckFColor;  // Letzte FaceColor fuer CheckImage
 +    sal_uLong                   mnLastCheckWColor;  // Letzte WindowColor fuer CheckImage
 +    sal_uLong                   mnLastCheckWTextColor;  // Letzte WindowTextColor fuer CheckImage
 +    sal_uLong                   mnLastCheckLColor;  // Letzte LightColor fuer CheckImage
 +    sal_uLong                   mnLastRadioFColor;  // Letzte FaceColor fuer RadioImage
 +    sal_uLong                   mnLastRadioWColor;  // Letzte WindowColor fuer RadioImage
 +    sal_uLong                   mnLastRadioLColor;  // Letzte LightColor fuer RadioImage
 +    FieldUnitStringList*    mpFieldUnitStrings; // list with field units
 +    FieldUnitStringList*    mpCleanUnitStrings; // same list but with some "fluff" like spaces removed
 +};
 +
 +
 +// ------------------
 +// - ImplSVHelpData -
 +// ------------------
 +
 +struct ImplSVHelpData
 +{
 +    sal_Bool                    mbContextHelp       : 1;    // is ContextHelp enabled
 +    sal_Bool                    mbExtHelp           : 1;    // is ExtendedHelp enabled
 +    sal_Bool                    mbExtHelpMode       : 1;    // is in ExtendedHelp Mode
 +    sal_Bool                    mbOldBalloonMode    : 1;    // BallonMode, befor ExtHelpMode started
 +    sal_Bool                    mbBalloonHelp       : 1;    // is BalloonHelp enabled
 +    sal_Bool                    mbQuickHelp         : 1;    // is QuickHelp enabled
 +    sal_Bool                    mbSetKeyboardHelp   : 1;    // tiphelp was activated by keyboard
 +    sal_Bool                    mbKeyboardHelp      : 1;    // tiphelp was activated by keyboard
 +    sal_Bool                    mbAutoHelpId        : 1;    // generate HelpIds
 +    sal_Bool                    mbRequestingHelp    : 1;    // In Window::RequestHelp
 +    HelpTextWindow*         mpHelpWin;                  // HelpWindow
 +    sal_uLong                   mnLastHelpHideTime;         // ticks of last show
 +};
 +
 +struct ImplSVNWFData
 +{
 +    bool                    mbMenuBarDockingAreaCommonBG; // e.g. WinXP default theme
 +    bool                    mbDockingAreaSeparateTB;      // individual toolbar backgrounds
 +                                                          // instead of one for docking area
 +    bool                    mbToolboxDropDownSeparate;    // two adjacent buttons for
 +                                                          // toolbox dropdown buttons
 +    int                     mnMenuFormatExtraBorder;      // inner popup menu border
 +    bool                    mbFlatMenu;                   // no popup 3D border
 +    Color                   maMenuBarHighlightTextColor;  // override higlight text color
 +                                                          // in menubar if not transparent
 +    bool                    mbOpenMenuOnF10;              // on gnome the first menu opens on F10
 +    bool                    mbNoFocusRects;               // on Aqua focus rects are not used
 +    bool                    mbNoBoldTabFocus;             // on Aqua and Gnome the focused tab has not bold text
 +    bool                    mbCenteredTabs;               // on Aqua, tabs are centered
 +    bool                    mbNoActiveTabTextRaise;       // on Aqua the text for the selected tab
 +                                                          // should not "jump up" a pixel
 +    bool                    mbProgressNeedsErase;         // set true for platforms that should draw the
 +                                                          // window background before drawing the native
 +                                                          // progress bar
 +    bool                    mbCheckBoxNeedsErase;         // set true for platforms that should draw the
 +                                                          // window background before drawing the native
 +                                                          // checkbox
 +    bool                    mbScrollbarJumpPage;          // true for "jump to here" behavior
 +    int                     mnStatusBarLowerRightOffset;  // amount in pixel to avoid in the lower righthand corner
 +    bool                    mbCanDrawWidgetAnySize;       // set to true currently on gtk
 +};
 +
 +
 +// --------------
 +// - ImplSVData -
 +// --------------
 +
 +struct ImplSVData
 +{
 +    void*                   mpSalData;          // SalData
 +    SalInstance*            mpDefInst;          // Default SalInstance
 +    Application*            mpApp;              // pApp
 +    WorkWindow*             mpDefaultWin;       // Default-Window
 +    sal_Bool                    mbDeInit;             // Is VCL deinitializing
 +    sal_uLong                   mnThreadCount;      // is VCL MultiThread enabled
 +    ImplConfigData*         mpFirstConfigData;  // Zeiger auf ersten Config-Block
 +    ImplTimerData*          mpFirstTimerData;   // list of all running timers
 +    SalTimer*				mpSalTimer;			// interface to sal event loop/timers
 +    SalI18NImeStatus*		mpImeStatus;		// interface to ime status window
 +    SalSystem*				mpSalSystem;		// SalSystem interface
 +    ResMgr*                 mpResMgr;           // SV-Resource-Manager
 +    sal_uLong                   mnTimerPeriod;      // current timer period
 +    sal_uLong                   mnTimerUpdate;      // TimerCallbackProcs on stack
 +    sal_Bool                    mbNotAllTimerCalled;// sal_True: Es muessen noch Timer abgearbeitet werden
 +    sal_Bool                    mbNoCallTimer;      // sal_True: No Timeout calls
 +    ImplSVAppData           maAppData;          // indepen data for class Application
 +    ImplSVGDIData           maGDIData;          // indepen data for Output classes
 +    ImplSVWinData           maWinData;          // indepen data for Windows classes
 +    ImplSVCtrlData          maCtrlData;         // indepen data for Control classes
 +    ImplSVHelpData          maHelpData;         // indepen data for Help classes
 +    ImplSVNWFData           maNWFData;
 +    UnoWrapperBase*         mpUnoWrapper;
 +    Window*                 mpIntroWindow;      // the splash screen
 +    DockingManager*         mpDockingManager;
 +    sal_Bool                    mbIsTestTool;
 +
 +    oslThreadIdentifier                     mnMainThreadId;
 +    rtl::Reference< vcl::DisplayConnection >            mxDisplayConnection;
 +
 +    ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxAccessBridge;
 +    com::sun::star::uno::Reference< com::sun::star::frame::XSessionManagerClient > xSMClient;
 +    ::vcl::SettingsConfigItem*			mpSettingsConfigItem;
 +    std::list< vcl::DeleteOnDeinitBase* >*   mpDeinitDeleteList;
 +    boost::unordered_map< int, rtl::OUString >*     mpPaperNames;
 +};
 +
 +void        ImplInitSVData();
 +void        ImplDeInitSVData();
 +void        ImplDestroySVData();
 +Window*     ImplGetDefaultWindow();
 +VCL_PLUGIN_PUBLIC ResMgr*     ImplGetResMgr();
 +VCL_PLUGIN_PUBLIC ResId VclResId( sal_Int32 nId ); // throws std::bad_alloc if no res mgr
 +DockingManager*     ImplGetDockingManager();
 +void        ImplWindowAutoMnemonic( Window* pWindow );
 +
 +void        ImplUpdateSystemProcessWindow();
 +Window*     ImplFindWindow( const SalFrame* pFrame, Point& rSalFramePos );
 +
 +// SVAPP.CXX
 +sal_Bool        ImplCallHotKey( const KeyCode& rKeyCode );
 +void        ImplFreeHotKeyData();
 +void        ImplFreeEventHookData();
 +
 +// WINPROC.CXX
 +long        ImplCallPreNotify( NotifyEvent& rEvt );
 +long        ImplCallEvent( NotifyEvent& rEvt );
 +
 +extern VCL_PLUGIN_PUBLIC ImplSVData* pImplSVData;
 +inline VCL_PLUGIN_PUBLIC ImplSVData* ImplGetSVData() { return pImplSVData; }
 +inline ImplSVData* ImplGetAppSVData() { return ImplGetSVData(); }
 +
 +bool ImplInitAccessBridge( sal_Bool bAllowCancel, sal_Bool &rCancelled );
 +
 +FieldUnitStringList* ImplGetFieldUnits();
 +FieldUnitStringList* ImplGetCleanedFieldUnits();
 +
 +
 +// -----------------------------------------------------------------------
 +
 +// -----------------
 +// - ImplSVEmpyStr -
 +// -----------------
 +
 +// Empty-SV-String
 +
 +inline const String& ImplGetSVEmptyStr()
 +    { return String::EmptyString(); }
 +inline const ByteString& ImplGetSVEmptyByteStr()
 +    { return ByteString::EmptyString(); }
 +
 +// -----------------------------------------------------------------------
 +
 +// ----------------------
 +// - struct ImplDelData -
 +// ----------------------
 +// ImplDelData is used as a "dog tag" by a window when it
 +// does something that could indirectly destroy the window
 +// TODO: wild destruction of a window should not be possible
 +
 +struct ImplDelData
 +{
 +    ImplDelData*    mpNext;
 +    const Window*   mpWindow;
 +    sal_Bool            mbDel;
 +
 +                    ImplDelData( const Window* pWindow = NULL )
 +                    : mpNext( NULL ), mpWindow( NULL ), mbDel( sal_False )
 +                    { if( pWindow ) AttachToWindow( pWindow ); }
 +
 +    virtual         ~ImplDelData();
 +
 +    bool            IsDead() const
 +    {
 +        DBG_ASSERT( mbDel == sal_False, "object deleted while in use !" );
 +        return (mbDel!=sal_False);
 +    }
 +    sal_Bool /*deprecated */IsDelete() const { return (sal_Bool)IsDead(); }
 +
 +private:
 +    void            AttachToWindow( const Window* );
 +};
 +
 +// ---------------
 +// - ImplSVEvent -
 +// ---------------
 +
 +struct ImplSVEvent
 +{
 +    sal_uLong               mnEvent;
 +    void*               mpData;
 +    Link*               mpLink;
 +    Window*             mpWindow;
 +    ImplDelData         maDelData;
 +    sal_Bool                mbCall;
 +};
 +
 +#endif  // _SV_SVDATA_HXX
 +
 +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --cc vcl/inc/unx/gtk/gtkgdi.hxx
index 2919e14,0000000..7597ac1
mode 100644,000000..100644
--- a/vcl/inc/unx/gtk/gtkgdi.hxx
+++ b/vcl/inc/unx/gtk/gtkgdi.hxx
@@@ -1,183 -1,0 +1,188 @@@
 +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
 +/*************************************************************************
 + *
 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 + *
 + * Copyright 2000, 2010 Oracle and/or its affiliates.
 + *
 + * OpenOffice.org - a multi-platform office productivity suite
 + *
 + * This file is part of OpenOffice.org.
 + *
 + * OpenOffice.org is free software: you can redistribute it and/or modify
 + * it under the terms of the GNU Lesser General Public License version 3
 + * only, as published by the Free Software Foundation.
 + *
 + * OpenOffice.org is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU Lesser General Public License version 3 for more details
 + * (a copy is included in the LICENSE file that accompanied this code).
 + *
 + * You should have received a copy of the GNU Lesser General Public License
 + * version 3 along with OpenOffice.org.  If not, see
 + * <http://www.openoffice.org/license.html>
 + * for a copy of the LGPLv3 License.
 + *
 + ************************************************************************/
 +
 +#ifndef _VCL_GTKGDI_HXX
 +#define _VCL_GTKGDI_HXX
 +
 +#include <tools/prex.h>
 +#include <gtk/gtk.h>
 +#include <gdk/gdkx.h>
 +#include <gdk/gdkkeysyms.h>
 +#include <tools/postx.h>
 +
 +#include <unx/salgdi.h>
 +
 +class GtkSalGraphics : public X11SalGraphics
 +{
 +    GtkWidget           *m_pWindow;
 +    Region               m_aClipRegion;
 +
 +public:
 +                        GtkSalGraphics( GtkWidget *window )
 +                            : m_pWindow( window ),
 +                              m_aClipRegion( REGION_NULL )
 +                              {}
 +    virtual             ~GtkSalGraphics();
 +
 +    inline GtkWidget*  GetGtkWidget() const { return m_pWindow; }
 +    inline GdkWindow*  GetGdkWindow() const { return m_pWindow->window; }
 +    inline GtkSalFrame* GetGtkFrame() const { return static_cast<GtkSalFrame*>(m_pFrame); }
 +    void SetWindow( GtkWidget* window ) { m_pWindow = window; }
 +
 +
 +    // will be set when UI theme was changed
 +    static  sal_Bool        bThemeChanged;
 +    static  sal_Bool        bNeedPixmapPaint;
 +    static  sal_Bool        bGlobalNeedPixmapPaint;
 +    static  sal_Bool        bToolbarGripWorkaround;
 +    static  sal_Bool        bNeedButtonStyleAsEditBackgroundWorkaround;
 +
 +    // native widget methods
 +    virtual sal_Bool        IsNativeControlSupported( ControlType nType, ControlPart nPart );
 +    virtual sal_Bool        hitTestNativeControl( ControlType nType, ControlPart nPart, const Rectangle& rControlRegion,
 +                                              const Point& aPos, sal_Bool& rIsInside );
 +    virtual sal_Bool        drawNativeControl( ControlType nType, ControlPart nPart, const Rectangle& rControlRegion,
 +                                           ControlState nState, const ImplControlValue& aValue,
 +                                           const rtl::OUString& rCaption );
 +    virtual sal_Bool        drawNativeControlText( ControlType nType, ControlPart nPart, const Rectangle& rControlRegion,
 +                                               ControlState nState, const ImplControlValue& aValue,
 +                                               const rtl::OUString& rCaption );
 +    virtual sal_Bool        getNativeControlRegion( ControlType nType, ControlPart nPart, const Rectangle& rControlRegion, ControlState nState,
 +                                                const ImplControlValue& aValue, const rtl::OUString& rCaption,
 +                                                Rectangle &rNativeBoundingRegion, Rectangle &rNativeContentRegion );
 +
 +    //helper methods for frame's UpdateSettings
 +    void updateSettings( AllSettings& rSettings );
 +
 +    virtual bool            setClipRegion( const Region& );
 +    virtual void			ResetClipRegion();
 +
 +    // some themes set the background pixmap of our window EVERY time
 +    // a control is painted; but presentation effects need
 +    // the background set to None; workaround: set the background
 +    // before copyBits
 +    virtual void			copyBits( const SalTwoRect* pPosAry,
 +                                      SalGraphics* pSrcGraphics );
 +
 +protected:
 +    typedef std::list< Rectangle > clipList;
 +
 +    GdkPixmap* NWGetPixmapFromScreen( Rectangle srcRect );
 +    sal_Bool NWRenderPixmapToScreen( GdkPixmap*	pPixmap, Rectangle dstRect );
 +
++    sal_Bool NWPaintGTKButtonReal( GtkWidget* button, GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
++                           const Rectangle& rControlRectangle,
++                           const clipList& rClipList,
++                           ControlState nState, const ImplControlValue& aValue,
++                           const OUString& rCaption );
 +    sal_Bool NWPaintGTKButton( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
 +                           const Rectangle& rControlRectangle,
 +                           const clipList& rClipList,
 +                           ControlState nState, const ImplControlValue& aValue,
 +                           const OUString& rCaption );
 +    sal_Bool NWPaintGTKRadio( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
 +                          const Rectangle& rControlRectangle,
 +                          const clipList& rClipList,
 +                          ControlState nState, const ImplControlValue& aValue,
 +                          const OUString& rCaption );
 +    sal_Bool NWPaintGTKCheck( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
 +                          const Rectangle& rControlRectangle,
 +                          const clipList& rClipList,
 +                          ControlState nState, const ImplControlValue& aValue,
 +                          const OUString& rCaption );
 +    sal_Bool NWPaintGTKScrollbar( ControlType nType, ControlPart nPart,
 +                              const Rectangle& rControlRectangle,
 +                              const clipList& rClipList,
 +                              ControlState nState, const ImplControlValue& aValue,
 +                              const OUString& rCaption );
 +    sal_Bool NWPaintGTKEditBox( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
 +                            const Rectangle& rControlRectangle,
 +                            const clipList& rClipList,
 +                            ControlState nState, const ImplControlValue& aValue,
 +                            const OUString& rCaption );
 +    sal_Bool NWPaintGTKSpinBox( ControlType nType, ControlPart nPart,
 +                            const Rectangle& rControlRectangle,
 +                            const clipList& rClipList,
 +                            ControlState nState, const ImplControlValue& aValue,
 +                            const OUString& rCaption );
 +    sal_Bool NWPaintGTKComboBox( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
 +                             const Rectangle& rControlRectangle,
 +                             const clipList& rClipList,
 +                             ControlState nState, const ImplControlValue& aValue,
 +                             const OUString& rCaption );
 +    sal_Bool NWPaintGTKTabItem( ControlType nType, ControlPart nPart,
 +                            const Rectangle& rControlRectangle,
 +                            const clipList& rClipList,
 +                            ControlState nState, const ImplControlValue& aValue,
 +                            const OUString& rCaption );
 +    sal_Bool NWPaintGTKListBox( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
 +                            const Rectangle& rControlRectangle,
 +                            const clipList& rClipList,
 +                            ControlState nState, const ImplControlValue& aValue,
 +                            const OUString& rCaption );
 +
 +    sal_Bool NWPaintGTKToolbar( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
 +                            const Rectangle& rControlRectangle,
 +                            const clipList& rClipList,
 +                            ControlState nState, const ImplControlValue& aValue,
 +                            const OUString& rCaption );
 +    sal_Bool NWPaintGTKMenubar( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
 +                            const Rectangle& rControlRectangle,
 +                            const clipList& rClipList,
 +                            ControlState nState, const ImplControlValue& aValue,
 +                            const OUString& rCaption );
 +    sal_Bool NWPaintGTKPopupMenu( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
 +                              const Rectangle& rControlRectangle,
 +                              const clipList& rClipList,
 +                              ControlState nState, const ImplControlValue& aValue,
 +                              const OUString& rCaption );
 +    sal_Bool NWPaintGTKTooltip( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
 +                            const Rectangle& rControlRectangle,
 +                            const clipList& rClipList,
 +                            ControlState nState, const ImplControlValue& aValue,
 +                            const OUString& rCaption );
 +    sal_Bool NWPaintGTKProgress( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
 +                            const Rectangle& rControlRectangle,
 +                            const clipList& rClipList,
 +                            ControlState nState, const ImplControlValue& aValue,
 +                            const OUString& rCaption );
 +    sal_Bool NWPaintGTKSlider( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
 +                           const Rectangle& rControlRectangle,
 +                           const clipList& rClipList,
 +                           ControlState nState, const ImplControlValue& aValue,
 +                           const OUString& rCaption );
 +    sal_Bool NWPaintGTKListNode( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
 +                            const Rectangle& rControlRectangle,
 +                            const clipList& rClipList,
 +                            ControlState nState, const ImplControlValue& aValue,
 +                            const OUString& rCaption );
 +};
 +
 +#endif // _VCL_GTKGDI_HXX
 +
 +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --cc vcl/unx/generic/printer/ppdparser.cxx
index 6133df1,0000000..06b0091
mode 100644,000000..100644
--- a/vcl/unx/generic/printer/ppdparser.cxx
+++ b/vcl/unx/generic/printer/ppdparser.cxx
@@@ -1,2187 -1,0 +1,2178 @@@
 +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
 +/*************************************************************************
 + *
 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 + *
 + * Copyright 2000, 2010 Oracle and/or its affiliates.
 + *
 + * OpenOffice.org - a multi-platform office productivity suite
 + *
 + * This file is part of OpenOffice.org.
 + *
 + * OpenOffice.org is free software: you can redistribute it and/or modify
 + * it under the terms of the GNU Lesser General Public License version 3
 + * only, as published by the Free Software Foundation.
 + *
 + * OpenOffice.org is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU Lesser General Public License version 3 for more details
 + * (a copy is included in the LICENSE file that accompanied this code).
 + *
 + * You should have received a copy of the GNU Lesser General Public License
 + * version 3 along with OpenOffice.org.  If not, see
 + * <http://www.openoffice.org/license.html>
 + * for a copy of the LGPLv3 License.
 + *
 + ************************************************************************/
 +
 +// MARKER(update_precomp.py): autogen include statement, do not remove
 +#include "precompiled_vcl.hxx"
 +
 +#include <stdlib.h>
 +#include <stdio.h>
 +
 +#include <boost/unordered_map.hpp>
 +
 +#include "vcl/ppdparser.hxx"
 +#include "vcl/strhelper.hxx"
 +#include "vcl/helper.hxx"
 +#include "vcl/svapp.hxx"
 +#include "cupsmgr.hxx"
 +#include "tools/debug.hxx"
 +#include "tools/urlobj.hxx"
 +#include "tools/stream.hxx"
 +#include "tools/zcodec.hxx"
 +#include "osl/mutex.hxx"
 +#include "osl/file.hxx"
 +#include "osl/process.h"
 +#include "osl/thread.h"
 +#include "rtl/strbuf.hxx"
 +#include "rtl/ustrbuf.hxx"
 +#include "rtl/instance.hxx"
 +#include <sal/macros.h>
++#include <salhelper/linkhelper.hxx>
 +
 +#include "com/sun/star/lang/Locale.hpp"
 +
 +namespace psp
 +{
 +    class PPDTranslator
 +    {
 +        struct LocaleEqual
 +        {
 +            bool operator()(const com::sun::star::lang::Locale& i_rLeft,
 +                            const com::sun::star::lang::Locale& i_rRight) const
 +            {
 +                return i_rLeft.Language.equals( i_rRight.Language ) &&
 +                i_rLeft.Country.equals( i_rRight.Country ) &&
 +                i_rLeft.Variant.equals( i_rRight.Variant );
 +            }
 +        };
 +
 +        struct LocaleHash
 +        {
 +            size_t operator()(const com::sun::star::lang::Locale& rLocale) const
 +            { return
 +                  (size_t)rLocale.Language.hashCode()
 +                ^ (size_t)rLocale.Country.hashCode()
 +                ^ (size_t)rLocale.Variant.hashCode()
 +                ;
 +            }
 +        };
 +
 +        typedef boost::unordered_map< com::sun::star::lang::Locale, rtl::OUString, LocaleHash, LocaleEqual > translation_map;
 +        typedef boost::unordered_map< rtl::OUString, translation_map, rtl::OUStringHash > key_translation_map;
 +
 +        key_translation_map     m_aTranslations;
 +        public:
 +        PPDTranslator() {}
 +        ~PPDTranslator() {}
 +
 +
 +        void insertValue(
 +            const rtl::OUString& i_rKey,
 +            const rtl::OUString& i_rOption,
 +            const rtl::OUString& i_rValue,
 +            const rtl::OUString& i_rTranslation,
 +            const com::sun::star::lang::Locale& i_rLocale = com::sun::star::lang::Locale()
 +            );
 +
 +        void insertOption( const rtl::OUString& i_rKey,
 +                           const rtl::OUString& i_rOption,
 +                           const rtl::OUString& i_rTranslation,
 +                           const com::sun::star::lang::Locale& i_rLocale = com::sun::star::lang::Locale() )
 +        {
 +            insertValue( i_rKey, i_rOption, rtl::OUString(), i_rTranslation, i_rLocale );
 +        }
 +
 +        void insertKey( const rtl::OUString& i_rKey,
 +                        const rtl::OUString& i_rTranslation,
 +                        const com::sun::star::lang::Locale& i_rLocale = com::sun::star::lang::Locale() )
 +        {
 +            insertValue( i_rKey, rtl::OUString(), rtl::OUString(), i_rTranslation, i_rLocale );
 +        }
 +
 +        rtl::OUString translateValue(
 +            const rtl::OUString& i_rKey,
 +            const rtl::OUString& i_rOption,
 +            const rtl::OUString& i_rValue,
 +            const com::sun::star::lang::Locale& i_rLocale = com::sun::star::lang::Locale()
 +            ) const;
 +
 +        rtl::OUString translateOption( const rtl::OUString& i_rKey,
 +                                       const rtl::OUString& i_rOption,
 +                                       const com::sun::star::lang::Locale& i_rLocale = com::sun::star::lang::Locale() ) const
 +        {
 +            return translateValue( i_rKey, i_rOption, rtl::OUString(), i_rLocale );
 +        }
 +
 +        rtl::OUString translateKey( const rtl::OUString& i_rKey,
 +                                    const com::sun::star::lang::Locale& i_rLocale = com::sun::star::lang::Locale() ) const
 +        {
 +            return translateValue( i_rKey, rtl::OUString(), rtl::OUString(), i_rLocale );
 +        }
 +    };
 +
 +    static com::sun::star::lang::Locale normalizeInputLocale(
 +        const com::sun::star::lang::Locale& i_rLocale,
 +        bool bInsertDefault = false
 +        )
 +    {
 +        com::sun::star::lang::Locale aLoc( i_rLocale );
 +        if( bInsertDefault && aLoc.Language.getLength() == 0 )
 +        {
 +            // empty locale requested, fill in application UI locale
 +            aLoc = Application::GetSettings().GetUILocale();
 +
 +            #if OSL_DEBUG_LEVEL > 1
 +            static const char* pEnvLocale = getenv( "SAL_PPDPARSER_LOCALE" );
 +            if( pEnvLocale && *pEnvLocale )
 +            {
 +                rtl::OString aStr( pEnvLocale );
 +                sal_Int32 nLen = aStr.getLength();
 +                aLoc.Language = rtl::OStringToOUString( aStr.copy( 0, nLen > 2 ? 2 : nLen ), RTL_TEXTENCODING_MS_1252 );
 +                if( nLen >=5 && aStr.getStr()[2] == '_' )
 +                    aLoc.Country = rtl::OStringToOUString( aStr.copy( 3, 2 ), RTL_TEXTENCODING_MS_1252 );
 +                else
 +                    aLoc.Country = rtl::OUString();
 +                aLoc.Variant = rtl::OUString();
 +            }
 +            #endif
 +        }
 +        aLoc.Language = aLoc.Language.toAsciiLowerCase();
 +        aLoc.Country  = aLoc.Country.toAsciiUpperCase();
 +        aLoc.Variant  = aLoc.Variant.toAsciiUpperCase();
 +
 +        return aLoc;
 +    }
 +
 +    void PPDTranslator::insertValue(
 +        const rtl::OUString& i_rKey,
 +        const rtl::OUString& i_rOption,
 +        const rtl::OUString& i_rValue,
 +        const rtl::OUString& i_rTranslation,
 +        const com::sun::star::lang::Locale& i_rLocale
 +        )
 +    {
 +        rtl::OUStringBuffer aKey( i_rKey.getLength() + i_rOption.getLength() + i_rValue.getLength() + 2 );
 +        aKey.append( i_rKey );
 +        if( i_rOption.getLength() || i_rValue.getLength() )
 +        {
 +            aKey.append( sal_Unicode( ':' ) );
 +            aKey.append( i_rOption );
 +        }
 +        if( i_rValue.getLength() )
 +        {
 +            aKey.append( sal_Unicode( ':' ) );
 +            aKey.append( i_rValue );
 +        }
 +        if( aKey.getLength() && i_rTranslation.getLength() )
 +        {
 +            rtl::OUString aK( aKey.makeStringAndClear() );
 +            com::sun::star::lang::Locale aLoc;
 +            aLoc.Language = i_rLocale.Language.toAsciiLowerCase();
 +            aLoc.Country  = i_rLocale.Country.toAsciiUpperCase();
 +            aLoc.Variant  = i_rLocale.Variant.toAsciiUpperCase();
 +            m_aTranslations[ aK ][ aLoc ] = i_rTranslation;
 +        }
 +    }
 +
 +    rtl::OUString PPDTranslator::translateValue(
 +        const rtl::OUString& i_rKey,
 +        const rtl::OUString& i_rOption,
 +        const rtl::OUString& i_rValue,
 +        const com::sun::star::lang::Locale& i_rLocale
 +        ) const
 +    {
 +        rtl::OUString aResult;
 +
 +        rtl::OUStringBuffer aKey( i_rKey.getLength() + i_rOption.getLength() + i_rValue.getLength() + 2 );
 +        aKey.append( i_rKey );
 +        if( i_rOption.getLength() || i_rValue.getLength() )
 +        {
 +            aKey.append( sal_Unicode( ':' ) );
 +            aKey.append( i_rOption );
 +        }
 +        if( i_rValue.getLength() )
 +        {
 +            aKey.append( sal_Unicode( ':' ) );
 +            aKey.append( i_rValue );
 +        }
 +        if( aKey.getLength() )
 +        {
 +            rtl::OUString aK( aKey.makeStringAndClear() );
 +            key_translation_map::const_iterator it = m_aTranslations.find( aK );
 +            if( it != m_aTranslations.end() )
 +            {
 +                const translation_map& rMap( it->second );
 +
 +                com::sun::star::lang::Locale aLoc( normalizeInputLocale( i_rLocale, true ) );
 +                for( int nTry = 0; nTry < 4; nTry++ )
 +                {
 +                    translation_map::const_iterator tr = rMap.find( aLoc );
 +                    if( tr != rMap.end() )
 +                    {
 +                        aResult = tr->second;
 +                        break;
 +                    }
 +                    switch( nTry )
 +                    {
 +                    case 0: aLoc.Variant  = rtl::OUString();break;
 +                    case 1: aLoc.Country  = rtl::OUString();break;
 +                    case 2: aLoc.Language = rtl::OUString();break;
 +                    }
 +                }
 +            }
 +        }
 +        return aResult;
 +    }
 +
 +    class PPDCache
 +    {
 +    public:
 +        std::list< PPDParser* > aAllParsers;
 +        boost::unordered_map< rtl::OUString, rtl::OUString, rtl::OUStringHash >* pAllPPDFiles;
 +        PPDCache()
 +            : pAllPPDFiles(NULL)
 +        {}
 +        ~PPDCache()
 +        {
 +            while( aAllParsers.begin() != aAllParsers.end() )
 +            {
 +                delete aAllParsers.front();
 +                aAllParsers.pop_front();
 +            }
 +            delete pAllPPDFiles;
 +            pAllPPDFiles = NULL;
 +        }
 +    };
 +}
 +
 +using namespace psp;
 +
 +using ::rtl::OUString;
 +using ::rtl::OStringBuffer;
 +using ::rtl::OUStringHash;
 +
 +
 +#undef DBG_ASSERT
 +#if defined DBG_UTIL || (OSL_DEBUG_LEVEL > 1)
 +#define BSTRING(x) ByteString( x, osl_getThreadTextEncoding() )
 +#define DBG_ASSERT( x, y ) { if( ! (x) ) fprintf( stderr, (y) ); }
 +#else
 +#define DBG_ASSERT( x, y )
 +#endif
 +
 +namespace
 +{
 +    struct thePPDCache : public rtl::Static<PPDCache, thePPDCache> {};
 +}
 +
 +class PPDDecompressStream
 +{
 +    SvFileStream*       mpFileStream;
 +    SvMemoryStream*     mpMemStream;
 +    rtl::OUString       maFileName;
 +
 +    // forbid copying
 +    PPDDecompressStream( const PPDDecompressStream& );
 +    PPDDecompressStream& operator=(const PPDDecompressStream& );
 +
 +    public:
 +    PPDDecompressStream( const rtl::OUString& rFile );
 +    ~PPDDecompressStream();
 +
 +    bool IsOpen() const;
 +    bool IsEof() const;
 +    void ReadLine( ByteString& o_rLine);
 +    void Open( const rtl::OUString& i_rFile );
 +    void Close();
 +    const rtl::OUString& GetFileName() const { return maFileName; }
 +};
 +
 +PPDDecompressStream::PPDDecompressStream( const rtl::OUString& i_rFile ) :
 +    mpFileStream( NULL ),
 +    mpMemStream( NULL )
 +{
 +    Open( i_rFile );
 +}
 +
 +PPDDecompressStream::~PPDDecompressStream()
 +{
 +    Close();
 +}
 +
 +void PPDDecompressStream::Open( const rtl::OUString& i_rFile )
 +{
 +    Close();
 +
 +    mpFileStream = new SvFileStream( i_rFile, STREAM_READ );
 +    maFileName = mpFileStream->GetFileName();
 +
 +    if( ! mpFileStream->IsOpen() )
 +    {
 +        Close();
 +        return;
 +    }
 +
 +    ByteString aLine;
 +    mpFileStream->ReadLine( aLine );
 +    mpFileStream->Seek( 0 );
 +
 +    // check for compress'ed or gzip'ed file
 +    sal_uLong nCompressMethod = 0;
 +    if( aLine.Len() > 1 && static_cast<unsigned char>(aLine.GetChar( 0 )) == 0x1f )
 +    {
 +        if( static_cast<unsigned char>(aLine.GetChar( 1 )) == 0x8b ) // check for gzip
 +            nCompressMethod = ZCODEC_DEFAULT | ZCODEC_GZ_LIB;
 +    }
 +
 +    if( nCompressMethod != 0 )
 +    {
 +        // so let's try to decompress the stream
 +        mpMemStream = new SvMemoryStream( 4096, 4096 );
 +        ZCodec aCodec;
 +        aCodec.BeginCompression( nCompressMethod );
 +        long nComp = aCodec.Decompress( *mpFileStream, *mpMemStream );
 +        aCodec.EndCompression();
 +        if( nComp < 0 )
 +        {
 +            // decompression failed, must be an uncompressed stream after all
 +            delete mpMemStream, mpMemStream = NULL;
 +            mpFileStream->Seek( 0 );
 +        }
 +        else
 +        {
 +            // compression successfull, can get rid of file stream
 +            delete mpFileStream, mpFileStream = NULL;
 +            mpMemStream->Seek( 0 );
 +        }
 +    }
 +}
 +
 +void PPDDecompressStream::Close()
 +{
 +    delete mpMemStream, mpMemStream = NULL;
 +    delete mpFileStream, mpFileStream = NULL;
 +}
 +
 +bool PPDDecompressStream::IsOpen() const
 +{
 +    return (mpMemStream || (mpFileStream && mpFileStream->IsOpen()));
 +}
 +
 +bool PPDDecompressStream::IsEof() const
 +{
 +    return ( mpMemStream ? mpMemStream->IsEof() : ( mpFileStream ? mpFileStream->IsEof() : true ) );
 +}
 +
 +void PPDDecompressStream::ReadLine( ByteString& o_rLine )
 +{
 +    if( mpMemStream )
 +        mpMemStream->ReadLine( o_rLine );
 +    else if( mpFileStream )
 +        mpFileStream->ReadLine( o_rLine );
 +}
 +
 +static osl::FileBase::RC resolveLink( const rtl::OUString& i_rURL, rtl::OUString& o_rResolvedURL, rtl::OUString& o_rBaseName, osl::FileStatus::Type& o_rType, int nLinkLevel = 10 )
 +{
-     osl::DirectoryItem aLinkItem;
-     osl::FileBase::RC aRet = osl::FileBase::E_None;
++    salhelper::LinkResolver aResolver(osl_FileStatus_Mask_FileName |
++                                      osl_FileStatus_Mask_Type |
++                                      osl_FileStatus_Mask_FileURL);
 +
-     if( ( aRet = osl::DirectoryItem::get( i_rURL, aLinkItem ) ) == osl::FileBase::E_None )
++    osl::FileBase::RC aRet = aResolver.fetchFileStatus(i_rURL, nLinkLevel);
++
++    if (aRet  == osl::FileBase::E_None)
 +    {
-         osl::FileStatus aStatus( osl_FileStatus_Mask_FileName | osl_FileStatus_Mask_Type | osl_FileStatus_Mask_LinkTargetURL );
-         if( ( aRet = aLinkItem.getFileStatus( aStatus ) ) == osl::FileBase::E_None )
-         {
-             if( aStatus.getFileType() == osl::FileStatus::Link )
-             {
-                 if( nLinkLevel > 0 )
-                     aRet = resolveLink( aStatus.getLinkTargetURL(), o_rResolvedURL, o_rBaseName, o_rType, nLinkLevel-1 );
-                 else
-                     aRet = osl::FileBase::E_MULTIHOP;
-             }
-             else
-             {
-                 o_rResolvedURL = i_rURL;
-                 o_rBaseName = aStatus.getFileName();
-                 o_rType = aStatus.getFileType();
-             }
-         }
++        o_rResolvedURL = aResolver.m_aStatus.getFileURL();
++        o_rBaseName = aResolver.m_aStatus.getFileName();
++        o_rType = aResolver.m_aStatus.getFileType();
 +    }
++
 +    return aRet;
 +}
 +
 +void PPDParser::scanPPDDir( const String& rDir )
 +{
 +    static struct suffix_t
 +    {
 +        const sal_Char* pSuffix;
 +        const sal_Int32 nSuffixLen;
 +    } const pSuffixes[] =
 +    { { ".PS", 3 },  { ".PPD", 4 }, { ".PS.GZ", 6 }, { ".PPD.GZ", 7 } };
 +
 +    const int nSuffixes = SAL_N_ELEMENTS(pSuffixes);
 +
 +    PPDCache &rPPDCache = thePPDCache::get();
 +
 +    osl::Directory aDir( rDir );
 +    if ( aDir.open() == osl::FileBase::E_None )
 +    {
 +        osl::DirectoryItem aItem;
 +
 +        INetURLObject aPPDDir(rDir);
 +        while( aDir.getNextItem( aItem ) == osl::FileBase::E_None )
 +        {
 +            osl::FileStatus aStatus( osl_FileStatus_Mask_FileName );
 +            if( aItem.getFileStatus( aStatus ) == osl::FileBase::E_None )
 +            {
 +                rtl::OUStringBuffer aURLBuf( rDir.Len() + 64 );
 +                aURLBuf.append( rDir );
 +                aURLBuf.append( sal_Unicode( '/' ) );
 +                aURLBuf.append( aStatus.getFileName() );
 +
 +                rtl::OUString aFileURL, aFileName;
 +                osl::FileStatus::Type eType = osl::FileStatus::Unknown;
 +
 +                if( resolveLink( aURLBuf.makeStringAndClear(), aFileURL, aFileName, eType ) == osl::FileBase::E_None )
 +                {
 +                    if( eType == osl::FileStatus::Regular )
 +                    {
 +                        INetURLObject aPPDFile = aPPDDir;
 +                        aPPDFile.Append( aFileName );
 +
 +                        // match extension
 +                        for( int nSuffix = 0; nSuffix < nSuffixes; nSuffix++ )
 +                        {
 +                            if( aFileName.getLength() > pSuffixes[nSuffix].nSuffixLen )
 +                            {
 +                                if( aFileName.endsWithIgnoreAsciiCaseAsciiL( pSuffixes[nSuffix].pSuffix, pSuffixes[nSuffix].nSuffixLen ) )
 +                                {
 +                                (*rPPDCache.pAllPPDFiles)[ aFileName.copy( 0, aFileName.getLength() - pSuffixes[nSuffix].nSuffixLen ) ] = aPPDFile.PathToFileName();
 +                                    break;
 +                                }
 +                            }
 +                        }
 +                    }
 +                    else if( eType == osl::FileStatus::Directory )
 +                    {
 +                        scanPPDDir( aFileURL );
 +                    }
 +                }
 +            }
 +        }
 +        aDir.close();
 +    }
 +}
 +
 +void PPDParser::initPPDFiles()
 +{
 +    PPDCache &rPPDCache = thePPDCache::get();
 +    if( rPPDCache.pAllPPDFiles )
 +        return;
 +
 +    rPPDCache.pAllPPDFiles = new boost::unordered_map< OUString, OUString, OUStringHash >();
 +
 +    // check installation directories
 +    std::list< OUString > aPathList;
 +    psp::getPrinterPathList( aPathList, PRINTER_PPDDIR );
 +    for( std::list< OUString >::const_iterator ppd_it = aPathList.begin(); ppd_it != aPathList.end(); ++ppd_it )
 +    {
 +        INetURLObject aPPDDir( *ppd_it, INET_PROT_FILE, INetURLObject::ENCODE_ALL );
 +        scanPPDDir( aPPDDir.GetMainURL( INetURLObject::NO_DECODE ) );
 +    }
 +    if( rPPDCache.pAllPPDFiles->find( OUString( RTL_CONSTASCII_USTRINGPARAM( "SGENPRT" ) ) ) == rPPDCache.pAllPPDFiles->end() )
 +    {
 +        // last try: search in directory of executable (mainly for setup)
 +        OUString aExe;
 +        if( osl_getExecutableFile( &aExe.pData ) == osl_Process_E_None )
 +        {
 +            INetURLObject aDir( aExe );
 +            aDir.removeSegment();
 +#ifdef DEBUG
 +            fprintf( stderr, "scanning last chance dir: %s\n", OUStringToOString( aDir.GetMainURL( INetURLObject::NO_DECODE ), osl_getThreadTextEncoding() ).getStr() );
 +#endif
 +            scanPPDDir( aDir.GetMainURL( INetURLObject::NO_DECODE ) );
 +#ifdef DEBUG
 +            fprintf( stderr, "SGENPRT %s\n", rPPDCache.pAllPPDFiles->find( OUString( RTL_CONSTASCII_USTRINGPARAM( "SGENPRT" ) ) ) == rPPDCache.pAllPPDFiles->end() ? "not found" : "found" );
 +#endif
 +        }
 +    }
 +}
 +
 +void PPDParser::getKnownPPDDrivers( std::list< rtl::OUString >& o_rDrivers, bool bRefresh )
 +{
 +    PPDCache &rPPDCache = thePPDCache::get();
 +
 +    if( bRefresh )
 +    {
 +        delete rPPDCache.pAllPPDFiles;
 +        rPPDCache.pAllPPDFiles = NULL;
 +    }
 +
 +    initPPDFiles();
 +    o_rDrivers.clear();
 +
 +    boost::unordered_map< OUString, OUString, OUStringHash >::const_iterator it;
 +    for( it = rPPDCache.pAllPPDFiles->begin(); it != rPPDCache.pAllPPDFiles->end(); ++it )
 +        o_rDrivers.push_back( it->first );
 +}
 +
 +String PPDParser::getPPDFile( const String& rFile )
 +{
 +    INetURLObject aPPD( rFile, INET_PROT_FILE, INetURLObject::ENCODE_ALL );
 +    // someone might enter a full qualified name here
 +    PPDDecompressStream aStream( aPPD.PathToFileName() );
 +    if( ! aStream.IsOpen() )
 +    {
 +        boost::unordered_map< OUString, OUString, OUStringHash >::const_iterator it;
 +        PPDCache &rPPDCache = thePPDCache::get();
 +
 +        bool bRetry = true;
 +        do
 +        {
 +            initPPDFiles();
 +            // some PPD files contain dots beside the extension, so try name first
 +            // and cut of points after that
 +            rtl::OUString aBase( rFile );
 +            sal_Int32 nLastIndex = aBase.lastIndexOf( sal_Unicode( '/' ) );
 +            if( nLastIndex >= 0 )
 +                aBase = aBase.copy( nLastIndex+1 );
 +            do
 +            {
 +                it = rPPDCache.pAllPPDFiles->find( aBase );
 +                nLastIndex = aBase.lastIndexOf( sal_Unicode( '.' ) );
 +                if( nLastIndex > 0 )
 +                    aBase = aBase.copy( 0, nLastIndex );
 +            } while( it == rPPDCache.pAllPPDFiles->end() && nLastIndex > 0 );
 +
 +            if( it == rPPDCache.pAllPPDFiles->end() && bRetry )
 +            {
 +                // a new file ? rehash
 +                delete rPPDCache.pAllPPDFiles; rPPDCache.pAllPPDFiles = NULL;
 +                bRetry = false;
 +                // note this is optimized for office start where
 +                // no new files occur and initPPDFiles is called only once
 +            }
 +        } while( ! rPPDCache.pAllPPDFiles );
 +
 +        if( it != rPPDCache.pAllPPDFiles->end() )
 +            aStream.Open( it->second );
 +    }
 +
 +    String aRet;
 +    if( aStream.IsOpen() )
 +    {
 +        ByteString aLine;
 +        aStream.ReadLine( aLine );
 +        if( aLine.Search( "*PPD-Adobe" ) == 0 )
 +            aRet = aStream.GetFileName();
 +        else
 +        {
 +            // our *Include hack does usually not begin
 +            // with *PPD-Adobe, so try some lines for *Include
 +            int nLines = 10;
 +            while( aLine.Search( "*Include" ) != 0 && --nLines )
 +                aStream.ReadLine( aLine );
 +            if( nLines )
 +                aRet = aStream.GetFileName();
 +        }
 +    }
 +
 +    return aRet;
 +}
 +
 +String PPDParser::getPPDPrinterName( const String& rFile )
 +{
 +    String aPath = getPPDFile( rFile );
 +    String aName;
 +
 +    // read in the file
 +    PPDDecompressStream aStream( aPath );
 +    if( aStream.IsOpen() )
 +    {
 +        String aCurLine;
 +        while( ! aStream.IsEof() && aStream.IsOpen() )
 +        {
 +            ByteString aByteLine;
 +            aStream.ReadLine( aByteLine );
 +            aCurLine = String( aByteLine, RTL_TEXTENCODING_MS_1252 );
 +            if( aCurLine.CompareIgnoreCaseToAscii( "*include:", 9 ) == COMPARE_EQUAL )
 +            {
 +                aCurLine.Erase( 0, 9 );
 +                aCurLine.EraseLeadingChars( ' ' );
 +                aCurLine.EraseTrailingChars( ' ' );
 +                aCurLine.EraseLeadingChars( '\t' );
 +                aCurLine.EraseTrailingChars( '\t' );
 +                aCurLine.EraseTrailingChars( '\r' );
 +                aCurLine.EraseTrailingChars( '\n' );
 +                aCurLine.EraseLeadingChars( '"' );
 +                aCurLine.EraseTrailingChars( '"' );
 +                aStream.Close();
 +                aStream.Open( getPPDFile( aCurLine ) );
 +                continue;
 +            }
 +            if( aCurLine.CompareToAscii( "*ModelName:", 11 ) == COMPARE_EQUAL )
 +            {
 +                aName = aCurLine.GetToken( 1, '"' );
 +                break;
 +            }
 +            else if( aCurLine.CompareToAscii( "*NickName:", 10 ) == COMPARE_EQUAL )
 +                aName = aCurLine.GetToken( 1, '"' );
 +        }
 +    }
 +    return aName;
 +}
 +
 +const PPDParser* PPDParser::getParser( const String& rFile )
 +{
 +    static ::osl::Mutex aMutex;
 +    ::osl::Guard< ::osl::Mutex > aGuard( aMutex );
 +
 +    String aFile = rFile;
 +    if( rFile.CompareToAscii( "CUPS:", 5 ) != COMPARE_EQUAL )
 +        aFile = getPPDFile( rFile );
 +    if( ! aFile.Len() )
 +    {
 +#if OSL_DEBUG_LEVEL > 1
 +        fprintf( stderr, "Could not get printer PPD file \"%s\" !\n", ::rtl::OUStringToOString( rFile, osl_getThreadTextEncoding() ).getStr() );
 +#endif
 +        return NULL;
 +    }
 +
 +    PPDCache &rPPDCache = thePPDCache::get();
 +    for( ::std::list< PPDParser* >::const_iterator it = rPPDCache.aAllParsers.begin(); it != rPPDCache.aAllParsers.end(); ++it )
 +        if( (*it)->m_aFile == aFile )
 +            return *it;
 +
 +    PPDParser* pNewParser = NULL;
 +    if( aFile.CompareToAscii( "CUPS:", 5 ) != COMPARE_EQUAL )
 +        pNewParser = new PPDParser( aFile );
 +    else
 +    {
 +        PrinterInfoManager& rMgr = PrinterInfoManager::get();
 +        if( rMgr.getType() == PrinterInfoManager::CUPS )
 +        {
 +            pNewParser = const_cast<PPDParser*>(static_cast<CUPSManager&>(rMgr).createCUPSParser( aFile ));
 +        }
 +    }
 +    if( pNewParser )
 +    {
 +        // this may actually be the SGENPRT parser,
 +        // so ensure uniquness here
 +        rPPDCache.aAllParsers.remove( pNewParser );
 +        // insert new parser to list
 +        rPPDCache.aAllParsers.push_front( pNewParser );
 +    }
 +    return pNewParser;
 +}
 +
 +PPDParser::PPDParser( const String& rFile ) :
 +        m_aFile( rFile ),
 +        m_bType42Capable( false ),
 +        m_aFileEncoding( RTL_TEXTENCODING_MS_1252 ),
 +        m_pDefaultImageableArea( NULL ),
 +        m_pImageableAreas( NULL ),
 +        m_pDefaultPaperDimension( NULL ),
 +        m_pPaperDimensions( NULL ),
 +        m_pDefaultInputSlot( NULL ),
 +        m_pInputSlots( NULL ),
 +        m_pDefaultResolution( NULL ),
 +        m_pResolutions( NULL ),
 +        m_pDefaultDuplexType( NULL ),
 +        m_pDuplexTypes( NULL ),
 +        m_pFontList( NULL ),
 +        m_pTranslator( new PPDTranslator() )
 +{
 +    // read in the file
 +    std::list< ByteString > aLines;
 +    PPDDecompressStream aStream( m_aFile );
 +    bool bLanguageEncoding = false;
 +    if( aStream.IsOpen() )
 +    {
 +        ByteString aCurLine;
 +        while( ! aStream.IsEof() )
 +        {
 +            aStream.ReadLine( aCurLine );
 +            if( aCurLine.GetChar( 0 ) == '*' )
 +            {
 +                if( aCurLine.CompareIgnoreCaseToAscii( "*include:", 9 ) == COMPARE_EQUAL )
 +                {
 +                    aCurLine.Erase( 0, 9 );
 +                    aCurLine.EraseLeadingChars( ' ' );
 +                    aCurLine.EraseTrailingChars( ' ' );
 +                    aCurLine.EraseLeadingChars( '\t' );
 +                    aCurLine.EraseTrailingChars( '\t' );
 +                    aCurLine.EraseTrailingChars( '\r' );
 +                    aCurLine.EraseTrailingChars( '\n' );
 +                    aCurLine.EraseLeadingChars( '"' );
 +                    aCurLine.EraseTrailingChars( '"' );
 +                    aStream.Close();
 +                    aStream.Open( getPPDFile( String( aCurLine, m_aFileEncoding ) ) );
 +                    continue;
 +                }
 +                else if( ! bLanguageEncoding &&
 +                         aCurLine.CompareIgnoreCaseToAscii( "*languageencoding", 17 ) == COMPARE_EQUAL )
 +                {
 +                    bLanguageEncoding = true; // generally only the first one counts
 +                    ByteString aLower = aCurLine;
 +                    aLower.ToLowerAscii();
 +                    if( aLower.Search( "isolatin1", 17 ) != STRING_NOTFOUND ||
 +                        aLower.Search( "windowsansi", 17 ) != STRING_NOTFOUND )
 +                        m_aFileEncoding = RTL_TEXTENCODING_MS_1252;
 +                    else if( aLower.Search( "isolatin2", 17 ) != STRING_NOTFOUND )
 +                        m_aFileEncoding = RTL_TEXTENCODING_ISO_8859_2;
 +                    else if( aLower.Search( "isolatin5", 17 ) != STRING_NOTFOUND )
 +                        m_aFileEncoding = RTL_TEXTENCODING_ISO_8859_5;
 +                    else if( aLower.Search( "jis83-rksj", 17 ) != STRING_NOTFOUND )
 +                        m_aFileEncoding = RTL_TEXTENCODING_SHIFT_JIS;
 +                    else if( aLower.Search( "macstandard", 17 ) != STRING_NOTFOUND )
 +                        m_aFileEncoding = RTL_TEXTENCODING_APPLE_ROMAN;
 +                    else if( aLower.Search( "utf-8", 17 ) != STRING_NOTFOUND )
 +                        m_aFileEncoding = RTL_TEXTENCODING_UTF8;
 +                }
 +            }
 +            aLines.push_back( aCurLine );
 +        }
 +    }
 +    aStream.Close();
 +
 +    // now get the Values
 +    parse( aLines );
 +#if OSL_DEBUG_LEVEL > 2
 +    fprintf( stderr, "acquired %d Keys from PPD %s:\n", m_aKeys.size(), BSTRING( m_aFile ).GetBuffer() );
 +    for( PPDParser::hash_type::const_iterator it = m_aKeys.begin(); it != m_aKeys.end(); ++it )
 +    {
 +        const PPDKey* pKey = it->second;
 +        char* pSetupType = "<unknown>";
 +        switch( pKey->m_eSetupType )
 +        {
 +            case PPDKey::ExitServer:        pSetupType = "ExitServer";break;
 +            case PPDKey::Prolog:            pSetupType = "Prolog";break;
 +            case PPDKey::DocumentSetup: pSetupType = "DocumentSetup";break;
 +            case PPDKey::PageSetup:     pSetupType = "PageSetup";break;
 +            case PPDKey::JCLSetup:          pSetupType = "JCLSetup";break;
 +            case PPDKey::AnySetup:          pSetupType = "AnySetup";break;
 +            default: break;
 +        };
 +        fprintf( stderr, "\t\"%s\" (%d values) OrderDependency: %d %s\n",
 +                 BSTRING( pKey->getKey() ).GetBuffer(),
 +                 pKey->countValues(),
 +                 pKey->m_nOrderDependency,
 +                 pSetupType );
 +        for( int j = 0; j < pKey->countValues(); j++ )
 +        {
 +            fprintf( stderr, "\t\t" );
 +            const PPDValue* pValue = pKey->getValue( j );
 +            if( pValue == pKey->m_pDefaultValue )
 +                fprintf( stderr, "(Default:) " );
 +            char* pVType = "<unknown>";
 +            switch( pValue->m_eType )
 +            {
 +                case eInvocation:       pVType = "invocation";break;
 +                case eQuoted:           pVType = "quoted";break;
 +                case eString:           pVType = "string";break;
 +                case eSymbol:           pVType = "symbol";break;
 +                case eNo:               pVType = "no";break;
 +                default: break;
 +            };
 +            fprintf( stderr, "option: \"%s\", value: type %s \"%s\"\n",
 +                     BSTRING( pValue->m_aOption ).GetBuffer(),
 +                     pVType,
 +                     BSTRING( pValue->m_aValue ).GetBuffer() );
 +        }
 +    }
 +    fprintf( stderr, "constraints: (%d found)\n", m_aConstraints.size() );
 +    for( std::list< PPDConstraint >::const_iterator cit = m_aConstraints.begin(); cit != m_aConstraints.end(); ++cit )
 +    {
 +        fprintf( stderr, "*\"%s\" \"%s\" *\"%s\" \"%s\"\n",
 +                 BSTRING( cit->m_pKey1->getKey() ).GetBuffer(),
 +                 cit->m_pOption1 ? BSTRING( cit->m_pOption1->m_aOption ).GetBuffer() : "<nil>",
 +                 BSTRING( cit->m_pKey2->getKey() ).GetBuffer(),
 +                 cit->m_pOption2 ? BSTRING( cit->m_pOption2->m_aOption ).GetBuffer() : "<nil>"
 +                 );
 +    }
 +#endif
 +
 +    // fill in shortcuts
 +    const PPDKey* pKey;
 +
 +    m_pImageableAreas = getKey( String( RTL_CONSTASCII_USTRINGPARAM( "ImageableArea" ) ) );
 +    if( m_pImageableAreas )
 +        m_pDefaultImageableArea = m_pImageableAreas->getDefaultValue();
 +    DBG_ASSERT( m_pImageableAreas, "Warning: no ImageableArea in PPD\n" );
 +    DBG_ASSERT( m_pDefaultImageableArea, "Warning: no DefaultImageableArea in PPD\n" );
 +
 +    m_pPaperDimensions = getKey( String( RTL_CONSTASCII_USTRINGPARAM( "PaperDimension" ) ) );
 +    if( m_pPaperDimensions )
 +        m_pDefaultPaperDimension = m_pPaperDimensions->getDefaultValue();
 +    DBG_ASSERT( m_pPaperDimensions, "Warning: no PaperDimension in PPD\n" );
 +    DBG_ASSERT( m_pDefaultPaperDimension, "Warning: no DefaultPaperDimension in PPD\n" );
 +
 +    m_pResolutions = getKey( String( RTL_CONSTASCII_USTRINGPARAM( "Resolution" ) ) );
 +    if( m_pResolutions )
 +        m_pDefaultResolution = m_pResolutions->getDefaultValue();
 +    DBG_ASSERT( m_pResolutions, "Warning: no Resolution in PPD\n" );
 +    DBG_ASSERT( m_pDefaultResolution, "Warning: no DefaultResolution in PPD\n" );
 +
 +    m_pInputSlots = getKey( String( RTL_CONSTASCII_USTRINGPARAM( "InputSlot" ) ) );
 +    if( m_pInputSlots )
 +        m_pDefaultInputSlot = m_pInputSlots->getDefaultValue();
 +    DBG_ASSERT( m_pPaperDimensions, "Warning: no InputSlot in PPD\n" );
 +    DBG_ASSERT( m_pDefaultPaperDimension, "Warning: no DefaultInputSlot in PPD\n" );
 +
 +    m_pDuplexTypes = getKey( String( RTL_CONSTASCII_USTRINGPARAM( "Duplex" ) ) );
 +    if( m_pDuplexTypes )
 +        m_pDefaultDuplexType = m_pDuplexTypes->getDefaultValue();
 +
 +    m_pFontList = getKey( String( RTL_CONSTASCII_USTRINGPARAM( "Font" ) ) );
 +    DBG_ASSERT( m_pFontList, "Warning: no Font in PPD\n" );
 +
 +    // fill in direct values
 +    if( (pKey = getKey( String( RTL_CONSTASCII_USTRINGPARAM( "ModelName" ) ) )) )
 +        m_aPrinterName = pKey->getValue( 0 )->m_aValue;
 +    if( (pKey = getKey( String( RTL_CONSTASCII_USTRINGPARAM( "NickName" ) ) )) )
 +        m_aNickName = pKey->getValue( 0 )->m_aValue;
 +    if( (pKey = getKey( String( RTL_CONSTASCII_USTRINGPARAM( "ColorDevice" ) ) )) )
 +        m_bColorDevice = pKey->getValue( 0 )->m_aValue.CompareIgnoreCaseToAscii( "true", 4 ) == COMPARE_EQUAL ? true : false;
 +
 +    if( (pKey = getKey( String( RTL_CONSTASCII_USTRINGPARAM( "LanguageLevel" ) ) )) )
 +        m_nLanguageLevel = pKey->getValue( 0 )->m_aValue.ToInt32();
 +    if( (pKey = getKey( String( RTL_CONSTASCII_USTRINGPARAM( "TTRasterizer" ) ) )) )
 +        m_bType42Capable = pKey->getValue( 0 )->m_aValue.EqualsIgnoreCaseAscii( "Type42" ) ? true : false;
 +}
 +
 +PPDParser::~PPDParser()
 +{
 +    for( PPDParser::hash_type::iterator it = m_aKeys.begin(); it != m_aKeys.end(); ++it )
 +        delete it->second;
 +    delete m_pTranslator;
 +}
 +
 +void PPDParser::insertKey( const String& rKey, PPDKey* pKey )
 +{
 +    m_aKeys[ rKey ] = pKey;
 +    m_aOrderedKeys.push_back( pKey );
 +}
 +
 +const PPDKey* PPDParser::getKey( int n ) const
 +{
 +    return ((unsigned int)n < m_aOrderedKeys.size() && n >= 0) ? m_aOrderedKeys[n] : NULL;
 +}
 +
 +const PPDKey* PPDParser::getKey( const String& rKey ) const
 +{
 +    PPDParser::hash_type::const_iterator it = m_aKeys.find( rKey );
 +    return it != m_aKeys.end() ? it->second : NULL;
 +}
 +
 +bool PPDParser::hasKey( const PPDKey* pKey ) const
 +{
 +    return
 +        pKey ?
 +        ( m_aKeys.find( pKey->getKey() ) != m_aKeys.end() ? true : false ) :
 +        false;
 +}
 +
 +static sal_uInt8 getNibble( sal_Char cChar )
 +{
 +    sal_uInt8 nRet = 0;
 +    if( cChar >= '0' && cChar <= '9' )
 +        nRet = sal_uInt8( cChar - '0' );
 +    else if( cChar >= 'A' && cChar <= 'F' )
 +        nRet = 10 + sal_uInt8( cChar - 'A' );
 +    else if( cChar >= 'a' && cChar <= 'f' )
 +        nRet = 10 + sal_uInt8( cChar - 'a' );
 +    return nRet;
 +}
 +
 +String PPDParser::handleTranslation( const ByteString& i_rString, bool bIsGlobalized )
 +{
 +    int nOrigLen = i_rString.Len();
 +    OStringBuffer aTrans( nOrigLen );
 +    const sal_Char* pStr = i_rString.GetBuffer();
 +    const sal_Char* pEnd = pStr + nOrigLen;
 +    while( pStr < pEnd )
 +    {
 +        if( *pStr == '<' )
 +        {
 +            pStr++;
 +            sal_Char cChar;
 +            while( *pStr != '>' && pStr < pEnd-1 )
 +            {
 +                cChar = getNibble( *pStr++ ) << 4;
 +                cChar |= getNibble( *pStr++ );
 +                aTrans.append( cChar );
 +            }
 +            pStr++;
 +        }
 +        else
 +            aTrans.append( *pStr++ );
 +    }
 +    return OStringToOUString( aTrans.makeStringAndClear(), bIsGlobalized ? RTL_TEXTENCODING_UTF8 : m_aFileEncoding );
 +}
 +
 +void PPDParser::parse( ::std::list< ByteString >& rLines )
 +{
 +    std::list< ByteString >::iterator line = rLines.begin();
 +    PPDParser::hash_type::const_iterator keyit;
 +    while( line != rLines.end() )
 +    {
 +        ByteString aCurrentLine( *line );
 +        ++line;
 +        if( aCurrentLine.GetChar(0) != '*' )
 +            continue;
 +        if( aCurrentLine.GetChar(1) == '%' )
 +            continue;
 +
 +        ByteString aKey = GetCommandLineToken( 0, aCurrentLine.GetToken( 0, ':' ) );
 +        int nPos = aKey.Search( '/' );
 +        if( nPos != STRING_NOTFOUND )
 +            aKey.Erase( nPos );
 +        aKey.Erase( 0, 1 ); // remove the '*'
 +
 +        if( aKey.Equals( "CloseUI" ) || aKey.Equals( "OpenGroup" ) || aKey.Equals( "CloseGroup" ) || aKey.Equals( "End" ) || aKey.Equals( "OpenSubGroup" ) || aKey.Equals( "CloseSubGroup" ) )
 +            continue;
 +
 +        if( aKey.Equals( "OpenUI" ) )
 +        {
 +            parseOpenUI( aCurrentLine );
 +            continue;
 +        }
 +        else if( aKey.Equals( "OrderDependency" ) )
 +        {
 +            parseOrderDependency( aCurrentLine );
 +            continue;
 +        }
 +        else if( aKey.Equals( "UIConstraints" ) || aKey.Equals( "NonUIConstraints" ) )
 +            continue; // parsed in pass 2
 +        else if( aKey.Equals( "CustomPageSize" ) ) // currently not handled
 +            continue;
 +
 +        // default values are parsed in pass 2
 +        if( aKey.CompareTo( "Default", 7 ) == COMPARE_EQUAL )
 +            continue;
 +
 +        bool bQuery     = false;
 +        if( aKey.GetChar( 0 ) == '?' )
 +        {
 +            aKey.Erase( 0, 1 );
 +            bQuery = true;
 +        }
 +
 +        String aUniKey( aKey, RTL_TEXTENCODING_MS_1252 );
 +        // handle CUPS extension for globalized PPDs
 +        bool bIsGlobalizedLine = false;
 +        com::sun::star::lang::Locale aTransLocale;
 +        if( ( aUniKey.Len() > 3 && aUniKey.GetChar( 2 ) == '.' ) ||
 +            ( aUniKey.Len() > 5 && aUniKey.GetChar( 2 ) == '_' && aUniKey.GetChar( 5 ) == '.' ) )
 +        {
 +            if( aUniKey.GetChar( 2 ) == '.' )
 +            {
 +                aTransLocale.Language = aUniKey.Copy( 0, 2 );
 +                aUniKey = aUniKey.Copy( 3 );
 +            }
 +            else
 +            {
 +                aTransLocale.Language = aUniKey.Copy( 0, 2 );
 +                aTransLocale.Country = aUniKey.Copy( 3, 2 );
 +                aUniKey = aUniKey.Copy( 6 );
 +            }
 +            bIsGlobalizedLine = true;
 +        }
 +
 +        String aOption;
 +        nPos = aCurrentLine.Search( ':' );
 +        if( nPos != STRING_NOTFOUND )
 +        {
 +            aOption = String( aCurrentLine.Copy( 1, nPos-1 ), RTL_TEXTENCODING_MS_1252 );
 +            aOption = GetCommandLineToken( 1, aOption );
 +            int nTransPos = aOption.Search( '/' );
 +            if( nTransPos != STRING_NOTFOUND )
 +                aOption.Erase( nTransPos );
 +        }
 +
 +        PPDValueType eType = eNo;
 +        String aValue;
 +        rtl::OUString aOptionTranslation;
 +        rtl::OUString aValueTranslation;
 +        if( nPos != STRING_NOTFOUND )
 +        {
 +            // found a colon, there may be an option
 +            ByteString aLine = aCurrentLine.Copy( 1, nPos-1 );
 +            aLine = WhitespaceToSpace( aLine );
 +            int nTransPos = aLine.Search( '/' );
 +            if( nTransPos != STRING_NOTFOUND )
 +                aOptionTranslation = handleTranslation( aLine.Copy( nTransPos+1 ), bIsGlobalizedLine );
 +
 +            // read in more lines if necessary for multiline values
 +            aLine = aCurrentLine.Copy( nPos+1 );
 +            if( aLine.Len() )
 +            {
 +                while( ! ( aLine.GetTokenCount( '"' ) & 1 ) &&
 +                       line != rLines.end() )
 +                    // while there is an even number of tokens; that means
 +                    // an odd number of doubleqoutes
 +                {
 +                    // copy the newlines also
 +                    aLine += '\n';
 +                    aLine += *line;
 +                    ++line;
 +                }
 +            }
 +            aLine = WhitespaceToSpace( aLine );
 +
 +            // #i100644# handle a missing value (actually a broken PPD)
 +            if( ! aLine.Len() )
 +            {
 +                if( aOption.Len() &&
 +                    aUniKey.CompareToAscii( "JCL", 3 ) != COMPARE_EQUAL )
 +                    eType = eInvocation;
 +                else
 +                    eType = eQuoted;
 +            }
 +            // check for invocation or quoted value
 +            else if( aLine.GetChar(0) == '"' )
 +            {
 +                aLine.Erase( 0, 1 );
 +                nTransPos = aLine.Search( '"' );
 +                aValue = String( aLine.Copy( 0, nTransPos ), RTL_TEXTENCODING_MS_1252 );
 +                // after the second doublequote can follow a / and a translation
 +                aValueTranslation = handleTranslation( aLine.Copy( nTransPos+2 ), bIsGlobalizedLine );
 +                // check for quoted value
 +                if( aOption.Len() &&
 +                    aUniKey.CompareToAscii( "JCL", 3 ) != COMPARE_EQUAL )
 +                    eType = eInvocation;
 +                else
 +                    eType = eQuoted;
 +            }
 +            // check for symbol value
 +            else if( aLine.GetChar(0) == '^' )
 +            {
 +                aLine.Erase( 0, 1 );
 +                aValue = String( aLine, RTL_TEXTENCODING_MS_1252 );
 +                eType = eSymbol;
 +            }
 +            else
 +            {
 +                // must be a string value then
 +                // strictly this is false because string values
 +                // can contain any whitespace which is reduced
 +                // to one space by now
 +                // who cares ...
 +                nTransPos = aLine.Search( '/' );
 +                if( nTransPos == STRING_NOTFOUND )
 +                    nTransPos = aLine.Len();
 +                aValue = String( aLine.Copy( 0, nTransPos ), RTL_TEXTENCODING_MS_1252 );
 +                aValueTranslation = handleTranslation( aLine.Copy( nTransPos+1 ), bIsGlobalizedLine );
 +                eType = eString;
 +            }
 +        }
 +
 +        // handle globalized PPD entries
 +        if( bIsGlobalizedLine )
 +        {
 +            // handle main key translations of form:
 +            // *ll_CC.Translation MainKeyword/translated text: ""
 +            if( aUniKey.EqualsAscii( "Translation" ) )
 +            {
 +                m_pTranslator->insertKey( aOption, aOptionTranslation, aTransLocale );
 +            }
 +            // handle options translations of for:
 +            // *ll_CC.MainKeyword OptionKeyword/translated text: ""
 +            else
 +            {
 +                m_pTranslator->insertOption( aUniKey, aOption, aOptionTranslation, aTransLocale );
 +            }
 +            continue;
 +        }
 +
 +        PPDKey* pKey = NULL;
 +        keyit = m_aKeys.find( aUniKey );
 +        if( keyit == m_aKeys.end() )
 +        {
 +            pKey = new PPDKey( aUniKey );
 +            insertKey( aUniKey, pKey );
 +        }
 +        else
 +            pKey = keyit->second;
 +
 +        if( eType == eNo && bQuery )
 +            continue;
 +
 +        PPDValue* pValue = pKey->insertValue( aOption );
 +        if( ! pValue )
 +            continue;
 +        pValue->m_eType = eType;
 +        pValue->m_aValue = aValue;
 +
 +        if( aOptionTranslation.getLength() )
 +            m_pTranslator->insertOption( aUniKey, aOption, aOptionTranslation, aTransLocale );
 +        if( aValueTranslation.getLength() )
 +            m_pTranslator->insertValue( aUniKey, aOption, aValue, aValueTranslation, aTransLocale );
 +
 +        // eventually update query and remove from option list
 +        if( bQuery && pKey->m_bQueryValue == sal_False )
 +        {
 +            pKey->m_aQueryValue = *pValue;
 +            pKey->m_bQueryValue = true;
 +            pKey->eraseValue( pValue->m_aOption );
 +        }
 +    }
 +
 +    // second pass: fill in defaults
 +    for( line = rLines.begin(); line != rLines.end(); ++line )
 +    {
 +        ByteString aLine( *line );
 +        if( aLine.CompareTo( "*Default", 8 ) == COMPARE_EQUAL )
 +        {
 +            String aKey( aLine.Copy( 8 ), RTL_TEXTENCODING_MS_1252 );
 +            sal_uInt16 nPos = aKey.Search( ':' );
 +            if( nPos != STRING_NOTFOUND )
 +            {
 +                aKey.Erase( nPos );
 +                String aOption( WhitespaceToSpace( aLine.Copy( nPos+9 ) ), RTL_TEXTENCODING_MS_1252 );
 +                keyit = m_aKeys.find( aKey );
 +                if( keyit != m_aKeys.end() )
 +                {
 +                    PPDKey* pKey = keyit->second;
 +                    const PPDValue* pDefValue = pKey->getValue( aOption );
 +                    if( pKey->m_pDefaultValue == NULL )
 +                        pKey->m_pDefaultValue = pDefValue;
 +                }
 +                else
 +                {
 +                    // some PPDs contain defaults for keys that
 +                    // do not exist otherwise
 +                    // (example: DefaultResolution)
 +                    // so invent that key here and have a default value
 +                    PPDKey* pKey = new PPDKey( aKey );
 +                    PPDValue* pNewValue = pKey->insertValue( aOption );
 +                    pNewValue->m_eType = eInvocation; // or what ?
 +                    insertKey( aKey, pKey );
 +                }
 +            }
 +        }
 +        else if( aLine.CompareTo( "*UIConstraints", 14 ) == COMPARE_EQUAL  ||
 +                 aLine.CompareTo( "*NonUIConstraints", 17 ) == COMPARE_EQUAL )
 +            parseConstraint( aLine );
 +
 +    }
 +}
 +
 +void PPDParser::parseOpenUI( const ByteString& rLine )
 +{
 +    String aTranslation;
 +    ByteString aKey = rLine;
 +
 +    int nPos = aKey.Search( ':' );
 +    if( nPos != STRING_NOTFOUND )
 +        aKey.Erase( nPos );
 +    nPos = aKey.Search( '/' );
 +    if( nPos != STRING_NOTFOUND )
 +    {
 +        aTranslation = handleTranslation( aKey.Copy( nPos + 1 ), false );
 +        aKey.Erase( nPos );
 +    }
 +    aKey = GetCommandLineToken( 1, aKey );
 +    aKey.Erase( 0, 1 );
 +
 +    String aUniKey( aKey, RTL_TEXTENCODING_MS_1252 );
 +    PPDParser::hash_type::const_iterator keyit = m_aKeys.find( aUniKey );
 +    PPDKey* pKey;
 +    if( keyit == m_aKeys.end() )
 +    {
 +        pKey = new PPDKey( aUniKey );
 +        insertKey( aUniKey, pKey );
 +    }
 +    else
 +        pKey = keyit->second;
 +
 +    pKey->m_bUIOption = true;
 +    m_pTranslator->insertKey( pKey->getKey(), aTranslation );
 +
 +    ByteString aValue = WhitespaceToSpace( rLine.GetToken( 1, ':' ) );
 +    if( aValue.CompareIgnoreCaseToAscii( "boolean" ) == COMPARE_EQUAL )
 +        pKey->m_eUIType = PPDKey::Boolean;
 +    else if( aValue.CompareIgnoreCaseToAscii( "pickmany" ) == COMPARE_EQUAL )
 +        pKey->m_eUIType = PPDKey::PickMany;
 +    else
 +        pKey->m_eUIType = PPDKey::PickOne;
 +}
 +
 +void PPDParser::parseOrderDependency( const ByteString& rLine )
 +{
 +    ByteString aLine( rLine );
 +    int nPos = aLine.Search( ':' );
 +    if( nPos != STRING_NOTFOUND )
 +        aLine.Erase( 0, nPos+1 );
 +
 +    int nOrder = GetCommandLineToken( 0, aLine ).ToInt32();
 +    ByteString aSetup = GetCommandLineToken( 1, aLine );
 +    String aKey( GetCommandLineToken( 2, aLine ), RTL_TEXTENCODING_MS_1252 );
 +    if( aKey.GetChar( 0 ) != '*' )
 +        return; // invalid order depency
 +    aKey.Erase( 0, 1 );
 +
 +    PPDKey* pKey;
 +    PPDParser::hash_type::const_iterator keyit = m_aKeys.find( aKey );
 +    if( keyit == m_aKeys.end() )
 +    {
 +        pKey = new PPDKey( aKey );
 +        insertKey( aKey, pKey );
 +    }
 +    else
 +        pKey = keyit->second;
 +
 +    pKey->m_nOrderDependency = nOrder;
 +    if( aSetup.Equals( "ExitServer" ) )
 +        pKey->m_eSetupType = PPDKey::ExitServer;
 +    else if( aSetup.Equals( "Prolog" ) )
 +        pKey->m_eSetupType = PPDKey::Prolog;
 +    else if( aSetup.Equals( "DocumentSetup" ) )
 +        pKey->m_eSetupType = PPDKey::DocumentSetup;
 +    else if( aSetup.Equals( "PageSetup" ) )
 +        pKey->m_eSetupType = PPDKey::PageSetup;
 +    else if( aSetup.Equals( "JCLSetup" ) )
 +        pKey->m_eSetupType = PPDKey::JCLSetup;
 +    else
 +        pKey->m_eSetupType = PPDKey::AnySetup;
 +}
 +
 +void PPDParser::parseConstraint( const ByteString& rLine )
 +{
 +    bool bFailed = false;
 +
 +    String aLine( rLine, RTL_TEXTENCODING_MS_1252 );
 +    aLine.Erase( 0, rLine.Search( ':' )+1 );
 +    PPDConstraint aConstraint;
 +    int nTokens = GetCommandLineTokenCount( aLine );
 +    for( int i = 0; i < nTokens; i++ )
 +    {
 +        String aToken = GetCommandLineToken( i, aLine );
 +        if( aToken.GetChar( 0 ) == '*' )
 +        {
 +            aToken.Erase( 0, 1 );
 +            if( aConstraint.m_pKey1 )
 +                aConstraint.m_pKey2 = getKey( aToken );
 +            else
 +                aConstraint.m_pKey1 = getKey( aToken );
 +        }
 +        else
 +        {
 +            if( aConstraint.m_pKey2 )
 +            {
 +                if( ! ( aConstraint.m_pOption2 = aConstraint.m_pKey2->getValue( aToken ) ) )
 +                    bFailed = true;
 +            }
 +            else if( aConstraint.m_pKey1 )
 +            {
 +                if( ! ( aConstraint.m_pOption1 = aConstraint.m_pKey1->getValue( aToken ) ) )
 +                    bFailed = true;
 +            }
 +            else
 +                // constraint for nonexistent keys; this happens
 +                // e.g. in HP4PLUS3
 +                bFailed = true;
 +        }
 +    }
 +    // there must be two keywords
 +    if( ! aConstraint.m_pKey1 || ! aConstraint.m_pKey2 || bFailed )
 +    {
 +#ifdef __DEBUG
 +        fprintf( stderr, "Warning: constraint \"%s\" is invalid\n", rLine.GetStr() );
 +#endif
 +    }
 +    else
 +        m_aConstraints.push_back( aConstraint );
 +}
 +
 +String PPDParser::getDefaultPaperDimension() const
 +{
 +    if( m_pDefaultPaperDimension )
 +        return m_pDefaultPaperDimension->m_aOption;
 +
 +    return String();
 +}
 +
 +bool PPDParser::getMargins(
 +                           const String& rPaperName,
 +                           int& rLeft, int& rRight,
 +                           int& rUpper, int& rLower ) const
 +{
 +    if( ! m_pImageableAreas || ! m_pPaperDimensions )
 +        return false;
 +
 +    int nPDim=-1, nImArea=-1, i;
 +    for( i = 0; i < m_pImageableAreas->countValues(); i++ )
 +        if( rPaperName == m_pImageableAreas->getValue( i )->m_aOption )
 +            nImArea = i;
 +    for( i = 0; i < m_pPaperDimensions->countValues(); i++ )
 +        if( rPaperName == m_pPaperDimensions->getValue( i )->m_aOption )
 +            nPDim = i;
 +    if( nPDim == -1 || nImArea == -1 )
 +        return false;
 +
 +    double ImLLx, ImLLy, ImURx, ImURy;
 +    double PDWidth, PDHeight;
 +    String aArea = m_pImageableAreas->getValue( nImArea )->m_aValue;
 +    ImLLx = StringToDouble( GetCommandLineToken( 0, aArea ) );
 +    ImLLy = StringToDouble( GetCommandLineToken( 1, aArea ) );
 +    ImURx = StringToDouble( GetCommandLineToken( 2, aArea ) );
 +    ImURy = StringToDouble( GetCommandLineToken( 3, aArea ) );
 +    aArea = m_pPaperDimensions->getValue( nPDim )->m_aValue;
 +    PDWidth     = StringToDouble( GetCommandLineToken( 0, aArea ) );
 +    PDHeight    = StringToDouble( GetCommandLineToken( 1, aArea ) );
 +    rLeft  = (int)(ImLLx + 0.5);
 +    rLower = (int)(ImLLy + 0.5);
 +    rUpper = (int)(PDHeight - ImURy + 0.5);
 +    rRight = (int)(PDWidth - ImURx + 0.5);
 +
 +    return true;
 +}
 +
 +bool PPDParser::getPaperDimension(
 +                                  const String& rPaperName,
 +                                  int& rWidth, int& rHeight ) const
 +{
 +    if( ! m_pPaperDimensions )
 +        return false;
 +
 +    int nPDim=-1;
 +    for( int i = 0; i < m_pPaperDimensions->countValues(); i++ )
 +        if( rPaperName == m_pPaperDimensions->getValue( i )->m_aOption )
 +            nPDim = i;
 +    if( nPDim == -1 )
 +        return false;
 +
 +    double PDWidth, PDHeight;
 +    String aArea = m_pPaperDimensions->getValue( nPDim )->m_aValue;
 +    PDWidth     = StringToDouble( GetCommandLineToken( 0, aArea ) );
 +    PDHeight    = StringToDouble( GetCommandLineToken( 1, aArea ) );
 +    rHeight = (int)(PDHeight + 0.5);
 +    rWidth  = (int)(PDWidth + 0.5);
 +
 +    return true;
 +}
 +
 +String PPDParser::matchPaper( int nWidth, int nHeight ) const
 +{
 +    if( ! m_pPaperDimensions )
 +        return String();
 +
 +    int nPDim = -1;
 +    double PDWidth, PDHeight;
 +    double fSort = 2e36, fNewSort;
 +
 +    for( int i = 0; i < m_pPaperDimensions->countValues(); i++ )
 +    {
 +        String aArea =  m_pPaperDimensions->getValue( i )->m_aValue;
 +        PDWidth     = StringToDouble( GetCommandLineToken( 0, aArea ) );
 +        PDHeight    = StringToDouble( GetCommandLineToken( 1, aArea ) );
 +        PDWidth     /= (double)nWidth;
 +        PDHeight    /= (double)nHeight;
 +        if( PDWidth >= 0.9      &&  PDWidth <= 1.1      &&
 +            PDHeight >= 0.9     &&  PDHeight <= 1.1         )
 +        {
 +            fNewSort =
 +                (1.0-PDWidth)*(1.0-PDWidth) + (1.0-PDHeight)*(1.0-PDHeight);
 +            if( fNewSort == 0.0 ) // perfect match
 +                return m_pPaperDimensions->getValue( i )->m_aOption;
 +
 +            if( fNewSort < fSort )
 +            {
 +                fSort = fNewSort;
 +                nPDim = i;
 +            }
 +        }
 +    }
 +
 +    static bool bDontSwap = false;
 +    if( nPDim == -1 && ! bDontSwap )
 +    {
 +        // swap portrait/landscape and try again
 +        bDontSwap = true;
 +        String rRet = matchPaper( nHeight, nWidth );
 +        bDontSwap = false;
 +        return rRet;
 +    }
 +
 +    return nPDim != -1 ? m_pPaperDimensions->getValue( nPDim )->m_aOption : String();
 +}
 +
 +String PPDParser::getDefaultInputSlot() const
 +{
 +    if( m_pDefaultInputSlot )
 +        return m_pDefaultInputSlot->m_aValue;
 +    return String();
 +}
 +
 +String PPDParser::getSlot( int nSlot ) const
 +{
 +    if( ! m_pInputSlots )
 +        return String();
 +
 +    if( nSlot > 0 && nSlot < m_pInputSlots->countValues() )
 +        return m_pInputSlots->getValue( nSlot )->m_aOption;
 +    else if( m_pInputSlots->countValues() > 0 )
 +        return m_pInputSlots->getValue( (sal_uLong)0 )->m_aOption;
 +
 +    return String();
 +}
 +
 +String PPDParser::getSlotCommand( int nSlot ) const
 +{
 +    if( ! m_pInputSlots )
 +        return String();
 +
 +    if( nSlot > 0 && nSlot < m_pInputSlots->countValues() )
 +        return m_pInputSlots->getValue( nSlot )->m_aValue;
 +    else if( m_pInputSlots->countValues() > 0 )
 +        return m_pInputSlots->getValue( (sal_uLong)0 )->m_aValue;
 +
 +    return String();
 +}
 +
 +String PPDParser::getSlotCommand( const String& rSlot ) const
 +{
 +    if( ! m_pInputSlots )
 +        return String();
 +
 +    for( int i=0; i < m_pInputSlots->countValues(); i++ )
 +    {
 +        const PPDValue* pValue = m_pInputSlots->getValue( i );
 +        if( pValue->m_aOption == rSlot )
 +            return pValue->m_aValue;
 +    }
 +    return String();
 +}
 +
 +String PPDParser::getPaperDimension( int nPaperDimension ) const
 +{
 +    if( ! m_pPaperDimensions )
 +        return String();
 +
 +    if( nPaperDimension > 0 && nPaperDimension < m_pPaperDimensions->countValues() )
 +        return m_pPaperDimensions->getValue( nPaperDimension )->m_aOption;
 +    else if( m_pPaperDimensions->countValues() > 0 )
 +        return m_pPaperDimensions->getValue( (sal_uLong)0 )->m_aOption;
 +
 +    return String();
 +}
 +
 +String PPDParser::getPaperDimensionCommand( int nPaperDimension ) const
 +{
 +    if( ! m_pPaperDimensions )
 +        return String();
 +
 +    if( nPaperDimension > 0 && nPaperDimension < m_pPaperDimensions->countValues() )
 +        return m_pPaperDimensions->getValue( nPaperDimension )->m_aValue;
 +    else if( m_pPaperDimensions->countValues() > 0 )
 +        return m_pPaperDimensions->getValue( (sal_uLong)0 )->m_aValue;
 +
 +    return String();
 +}
 +
 +String PPDParser::getPaperDimensionCommand( const String& rPaperDimension ) const
 +{
 +    if( ! m_pPaperDimensions )
 +        return String();
 +
 +    for( int i=0; i < m_pPaperDimensions->countValues(); i++ )
 +    {
 +        const PPDValue* pValue = m_pPaperDimensions->getValue( i );
 +        if( pValue->m_aOption == rPaperDimension )
 +            return pValue->m_aValue;
 +    }
 +    return String();
 +}
 +
 +void PPDParser::getResolutionFromString(
 +                                        const String& rString,
 +                                        int& rXRes, int& rYRes ) const
 +{
 +    int nDPIPos;
 +
 +    rXRes = rYRes = 300;
 +
 +    nDPIPos = rString.SearchAscii( "dpi" );
 +    if( nDPIPos != STRING_NOTFOUND )
 +    {
 +        int nPos = 0;
 +        if( ( nPos = rString.Search( 'x' ) ) != STRING_NOTFOUND )
 +        {
 +            rXRes = rString.Copy( 0, nPos ).ToInt32();
 +            rYRes = rString.GetToken( 1, 'x' ).Erase( nDPIPos - nPos - 1 ).ToInt32();
 +        }
 +        else
 +            rXRes = rYRes = rString.Copy( 0, nDPIPos ).ToInt32();
 +    }
 +}
 +
 +void PPDParser::getDefaultResolution( int& rXRes, int& rYRes ) const
 +{
 +    if( m_pDefaultResolution )
 +    {
 +        getResolutionFromString( m_pDefaultResolution->m_aValue, rXRes, rYRes );
 +        return;
 +    }
 +
 +    rXRes = 300;
 +    rYRes = 300;
 +}
 +
 +int PPDParser::getResolutions() const
 +{
 +    if( ( ! m_pResolutions || m_pResolutions->countValues() == 0 ) &&
 +        m_pDefaultResolution )
 +        return 1;
 +    return m_pResolutions ? m_pResolutions->countValues() : 0;
 +}
 +
 +void PPDParser::getResolution( int nNr, int& rXRes, int& rYRes ) const
 +{
 +    if( ( ! m_pResolutions || m_pResolutions->countValues() == 0 ) && m_pDefaultResolution && nNr == 0 )
 +    {
 +        getDefaultResolution( rXRes, rYRes );
 +        return;
 +    }
 +    if( ! m_pResolutions )
 +        return;
 +
 +    getResolutionFromString( m_pResolutions->getValue( nNr )->m_aOption,
 +                             rXRes, rYRes );
 +}
 +
 +String PPDParser::getResolutionCommand( int nXRes, int nYRes ) const
 +{
 +    if( ( ! m_pResolutions || m_pResolutions->countValues() == 0 ) && m_pDefaultResolution )
 +        return m_pDefaultResolution->m_aValue;
 +
 +    if( ! m_pResolutions )
 +        return String();
 +
 +    int nX, nY;
 +    for( int i = 0; i < m_pResolutions->countValues(); i++ )
 +    {
 +        getResolutionFromString( m_pResolutions->getValue( i )->m_aOption,
 +                                 nX, nY );
 +        if( nX == nXRes && nY == nYRes )
 +            return m_pResolutions->getValue( i )->m_aValue;
 +    }
 +    return String();
 +}
 +
 +String PPDParser::getDefaultDuplexType() const
 +{
 +    if( m_pDefaultDuplexType )
 +        return m_pDefaultDuplexType->m_aValue;
 +    return String();
 +}
 +
 +String PPDParser::getDuplex( int nDuplex ) const
 +{
 +    if( ! m_pDuplexTypes )
 +        return String();
 +
 +    if( nDuplex > 0 && nDuplex < m_pDuplexTypes->countValues() )
 +        return m_pDuplexTypes->getValue( nDuplex )->m_aOption;
 +    else if( m_pDuplexTypes->countValues() > 0 )
 +        return m_pDuplexTypes->getValue( (sal_uLong)0 )->m_aOption;
 +
 +    return String();
 +}
 +
 +String PPDParser::getDuplexCommand( int nDuplex ) const
 +{
 +    if( ! m_pDuplexTypes )
 +        return String();
 +
 +    if( nDuplex > 0 && nDuplex < m_pDuplexTypes->countValues() )
 +        return m_pDuplexTypes->getValue( nDuplex )->m_aValue;
 +    else if( m_pDuplexTypes->countValues() > 0 )
 +        return m_pDuplexTypes->getValue( (sal_uLong)0 )->m_aValue;
 +
 +    return String();
 +}
 +
 +String PPDParser::getDuplexCommand( const String& rDuplex ) const
 +{
 +    if( ! m_pDuplexTypes )
 +        return String();
 +
 +    for( int i=0; i < m_pDuplexTypes->countValues(); i++ )
 +    {
 +        const PPDValue* pValue = m_pDuplexTypes->getValue( i );
 +        if( pValue->m_aOption == rDuplex )
 +            return pValue->m_aValue;
 +    }
 +    return String();
 +}
 +
 +void PPDParser::getFontAttributes(
 +                                  int nFont,
 +                                  String& rEncoding,
 +                                  String& rCharset ) const
 +{
 +    if( m_pFontList && nFont >= 0 && nFont < m_pFontList->countValues() )
 +    {
 +        String aAttribs =
 +            WhitespaceToSpace( m_pFontList->getValue( nFont )->m_aValue );
 +        rEncoding   = GetCommandLineToken( 0, aAttribs );
 +        rCharset    = GetCommandLineToken( 2, aAttribs );
 +    }
 +}
 +
 +void PPDParser::getFontAttributes(
 +                                  const String& rFont,
 +                                  String& rEncoding,
 +                                  String& rCharset ) const
 +{
 +    if( m_pFontList )
 +    {
 +        for( int i = 0; i < m_pFontList->countValues(); i++ )
 +            if( m_pFontList->getValue( i )->m_aOption == rFont )
 +                getFontAttributes( i, rEncoding, rCharset );
 +    }
 +}
 +
 +String PPDParser::getFont( int nFont ) const
 +{
 +    if( ! m_pFontList )
 +        return String();
 +
 +    if( nFont >=0 && nFont < m_pFontList->countValues() )
 +        return m_pFontList->getValue( nFont )->m_aOption;
 +    return String();
 +}
 +
 +rtl::OUString PPDParser::translateKey( const rtl::OUString& i_rKey,
 +                                       const com::sun::star::lang::Locale& i_rLocale ) const
 +{
 +    rtl::OUString aResult( m_pTranslator->translateKey( i_rKey, i_rLocale ) );
 +    if( aResult.getLength() == 0 )
 +        aResult = i_rKey;
 +    return aResult;
 +}
 +
 +rtl::OUString PPDParser::translateOption( const rtl::OUString& i_rKey,
 +                                          const rtl::OUString& i_rOption,
 +                                          const com::sun::star::lang::Locale& i_rLocale ) const
 +{
 +    rtl::OUString aResult( m_pTranslator->translateOption( i_rKey, i_rOption, i_rLocale ) );
 +    if( aResult.getLength() == 0 )
 +        aResult = i_rOption;
 +    return aResult;
 +}
 +
 +rtl::OUString PPDParser::translateValue( const rtl::OUString& i_rKey,
 +                                         const rtl::OUString& i_rOption,
 +                                         const rtl::OUString& i_rValue,
 +                                         const com::sun::star::lang::Locale& i_rLocale ) const
 +{
 +    rtl::OUString aResult( m_pTranslator->translateValue( i_rKey, i_rOption, i_rValue, i_rLocale ) );
 +    if( aResult.getLength() == 0 )
 +        aResult = i_rValue;
 +    return aResult;
 +}
 +
 +/*
 + *  PPDKey
 + */
 +
 +PPDKey::PPDKey( const String& rKey ) :
 +        m_aKey( rKey ),
 +        m_pDefaultValue( NULL ),
 +        m_bQueryValue( false ),
 +        m_bUIOption( false ),
 +        m_eUIType( PickOne ),
 +        m_nOrderDependency( 100 ),
 +        m_eSetupType( AnySetup )
 +{
 +}
 +
 +// -------------------------------------------------------------------
 +
 +PPDKey::~PPDKey()
 +{
 +}
 +
 +// -------------------------------------------------------------------
 +
 +const PPDValue* PPDKey::getValue( int n ) const
 +{
 +    return ((unsigned int)n < m_aOrderedValues.size() && n >= 0) ? m_aOrderedValues[n] : NULL;
 +}
 +
 +// -------------------------------------------------------------------
 +
 +const PPDValue* PPDKey::getValue( const String& rOption ) const
 +{
 +    PPDKey::hash_type::const_iterator it = m_aValues.find( rOption );
 +    return it != m_aValues.end() ? &it->second : NULL;
 +}
 +
 +// -------------------------------------------------------------------
 +
 +const PPDValue* PPDKey::getValueCaseInsensitive( const String& rOption ) const
 +{
 +    const PPDValue* pValue = getValue( rOption );
 +    if( ! pValue )
 +    {
 +        for( size_t n = 0; n < m_aOrderedValues.size() && ! pValue; n++ )
 +            if( m_aOrderedValues[n]->m_aOption.EqualsIgnoreCaseAscii( rOption ) )
 +                pValue = m_aOrderedValues[n];
 +    }
 +
 +    return pValue;
 +}
 +
 +// -------------------------------------------------------------------
 +
 +void PPDKey::eraseValue( const String& rOption )
 +{
 +    PPDKey::hash_type::iterator it = m_aValues.find( rOption );
 +    if( it == m_aValues.end() )
 +        return;
 +
 +    for( PPDKey::value_type::iterator vit = m_aOrderedValues.begin(); vit != m_aOrderedValues.end(); ++vit )
 +    {
 +        if( *vit == &(it->second ) )
 +        {
 +            m_aOrderedValues.erase( vit );
 +            break;
 +        }
 +    }
 +    m_aValues.erase( it );
 +}
 +
 +// -------------------------------------------------------------------
 +

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list