[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